何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

Curriculum Vitae of XaroCydeykn

Curriculum Vitaeと呼ぶには何かが欠けている気がするが気にしない。

技術書査読

2016年

2017年

2018年

2019年

2020年

外部発表

2016年

  • PyConJP で感じる私の成長」PyCon JP 2016 Day1 Lightning Talk

受付後にLTの募集枠が空いていたので深く考えずに登録した。 卒論・修論発表で培った(?)勢い重視の発表で中身の薄さを乗り越えた。 最初のPyCon JPは怖い、という話はある程度共感を得たようである。

2017年

当初は話を聞くだけのつもりであったが、Python 3.6の新機能を調べるうちにメタクラスの部分の置き換えができることに気づいたので発表した。

中身のない概要から如何に内容を絞り出すか、と苦戦した発表。 技術書に書かれていることだけでは難しく、実践を伴わないと意味のある発表にするのが難しい。

  • Respect the Built-in Names」PyCon JP 2017 Day1 Lightning Talk

Reject Conから評判の良かった内容を抽出して膨らませたLT。 意外と琴線に触れる内容だったらしく、アンサーLTまで登場した。

  • 技術書査読・校正の現場から」BPStudy #123 Lightning Talk

間違い探しLT。 筆者も意外といい加減なことを書いているのでそれを検証しつつなんとかするのが査読や校正の役割である。

2018年

  • レガシーDjangoアプリケーションの現代化」DjangoCongress JP 2018

2017年8月から参画したプロジェクトの経験を元に架空のプロジェクトという見立てを用いて話を作った。

  • SymPyによる数式処理」PyCon JP 2018

SymPyで学んだことを整理するために発表した。

2019年

正しくはQuerySetではなくDjango ORMの失敗談。

ピタゴラス数と無限降下法について勉強して話した。

2020年

cmathモジュールの可能性を模索した。

2020年に読んだ本

雑な読書記録

買っても読まず、読んでも特に記録を残さずに思い出に残らないので、年単位で読んだ本と簡単な感想を残しておくことにしよう。 いつも、書評を書こうと思い立つもすぐに断念してしまうので「簡単な感想」にとどめてそのハードルを下げるのが目的である。

横田増生ユニクロ潜入一年』(文藝春秋

books.bunshun.jp

話題になったのは2017年で2020年に読むのはと思うかもしれないが色々なタイミングで今読むことになった。 筆者の潜入ルポものだと3冊目にあたる。 柳井正社長の「うちの会社で働いてもらって、どういう企業なのかをぜひ体験してもらいたい」という言葉に応じて約1年間ユニクロの複数の店舗でアルバイトした記録と下請けである中国やカンボジアの工場で働く人々への取材からなる。 ワンマン体質と徹底した守秘義務は読んでいて非常に不気味である。 柳井社長の部長会議における発言が一貫していないように思われ、君子は豹変するなのか、朝令暮改なのかがわからなくなった。

横田増生潜入ルポ amazon帝国』(小学館

www.hanmoto.com

筆者の潜入ルポもの4冊目。 アマゾンの小田原の倉庫で働いた記録とヨーロッパの取材、マーケットプレイス周辺に潜む怪しい人たちへの取材からなる。 筆者が「ユニクロが「ろくでなし」ならばアマゾンは「ひとでなし」」と表現した通り、秒刻みで終われるピッキング作業、雇用の多重構造による責任の曖昧化などが描かれている。 難癖をつけるならば、筆者はIT周りにそれほど強くないらしく、AWSに関する記述は微妙であった。 AWSのアマゾンっぽいふるまいとしてはオープンソースの扱い方にあると思うのであるが、その辺はITに強いノンフィクションライターの出現を待つほかないのだろうか。

横田増生ユニクロ帝国の光と影』(文藝春秋

books.bunshun.jp

ユニクロ潜入一年』よりも時系列としては前であり、2010年頃の話題なので古い箇所もあるが今もなお読むべき価値がある。 批判的に書かれた企業や経営者に関する本でユニクロがSPAで合理化を進めて大企業へと成長する光の部分と疲弊する現場と言行が一致しない経営者という影が描かれている。 『ユニクロ潜入一年』は変化球であるが『ユニクロ帝国の光と影』は正攻法の取材からなる。 GAPを目標にしてSAPを進め、GAPの凋落とともに綻びが、というのはどの業界にもありうる話である。

世阿弥風姿花伝』(ちくま学芸文庫

www.chikumashobo.co.jp

佐藤正英翻訳。 以前、新編日本古典文学全集の『連歌論集 能楽論集 俳論集』を読んだことがあり、そこで読んだ風姿花伝は非常に面白かった思い出があったのだが、 このちくま学芸文庫風姿花伝はその面白さはなく、すぐに眠くなってしまった。なぜ? 最初の「年来稽古条々」で読むのを断念した。なぜ? 翻訳者の違いによるものならば、「日本の古典をよむ」シリーズの風姿花伝にすればよいのか。

日本の古典をよむ(17) 風姿花伝 謡曲名作選』(小学館

www.shogakukan.co.jp

とりあえず表章氏が編集した『風姿花伝』を読んだ。 現代語訳は「タイミング」など大胆に外来語を使うなど現代人が読むのに適した訳文となっていて、ちくま学芸文庫版よりも読みやすいと感じる。 新編日本古典文学全集は持ち歩くのが大変(持ち歩いたこともある)で現代語訳は小さいので原文を気にせず読むにはなかなか大変であるが、「日本の古典をよむ」シリーズのサイズならば持ち運びも簡単である。

別役実別役実のコント教室』(白水社

www.hakusuisha.co.jp

新宿紀伊國屋の4Fをウロウロしていると、紀伊國屋ホールから演劇の声が聞こえてきたので演劇関係の本が置いてあるコーナーに向かったら、最近、別役実氏がなくなった、読んだことないけど、と思い出した。 本棚を眺めると、『ハムレット』以外の戯曲を読んだことがなくても読めそうな気がしてきたので手に取った。 笑える(不条理な)コント(寸劇)の書き方を通して戯曲の書き方を学ぶ、といった本で講義と講義内で提出された作品の批評からなる。 もちろん、劇作家や放送作家になりたいわけではないが、非常に面白く読めた。 引用されていた本も1冊買ってしまった。

ウージェーヌ・イヨネスコ『ベスト・オブ・イヨネスコ 授業/犀』(白水社

www.hakusuisha.co.jp

別役実のコント教室』で取り上げられていたので、表題作の『授業』だけ読んだ。 詳細はネタバレになるし、不条理演劇としては有名かつ古典なので検索すればあらすじや実際の動画が出てくると思うので割愛するが、フランスかルーマニアの学制を前提としているのか、 日本人にはちょっとわかりにくい舞台設定なので、これを翻案して…という時間があればいいのだが。

Python Charity Talks in Japanに参加しました

去る2020年7月4日に行われたPython Charity Talks in Japanに参加した。

pyconjp.blogspot.com

pyconjp.connpass.com

www.youtube.com

チャリティの主旨は、Python Software Foundationへの寄付である。 Python Software Foundation(PSF)とはPythonの公式ドキュメントにある通り、 Python 2.1以降著作権を保持する独立の非営利組織であり、プログラミング言語Pythonの開発や利用を支援する団体である。 昨今のCOVID-19の影響でアメリカで開催予定であったPyCon US 2020がオンライン開催となり、活動の収益源を得ることができなくなってしまった。 苦境に立たされているPSFへの寄付がこのチャリティイベントの目的である。

今回、僕は2つの立場でチャリティイベントに参加した。 1つは個人パトロンとして、純粋にPSFへの寄付金を拠出するために参加する個人としての立場、もう1つは僕が所属する企業の役員や上司に働きかけてスポンサーになってもらうスポンサー企業の従業員としての立場である。

個人としての立場は単純明白である。 幸いなことに、僕はPythonでプログラミングをすることで生活ができている。 それを還元するだけである。

スポンサー企業の従業員としての立場は、まずこのようなイベントがあること、求人イベントも兼ねていることを伝え、PyCon JP 2020のスポンサーとの兼ね合いも含め社内で議論を行った。 今年はPyCon JPの社内主担当者ではないが、スポンサー枠が限られていることと、時間がそれほどなかったことからスポンサー決定まではできるだけ積極的に活動した。 幸い、すぐにスポンサーとなることが決定した。

イベントそのものは、所属企業のLTをハラハラしながら見ていた。 LTは5分で短いから簡単、とは過去言ってきたが、実際5分で言いたいことを伝えるのはそれなりに訓練が必要で実は難しいことを改めて感じた。

PSFへの寄付は140万円程となり、PyCon US 2020の1スポンサー枠程度の金額を集めることができたのではなかろうか。 Pythonの今後の発展や、スポンサーをした弊社の発展を願うばかりである。

Final Fantasy XII サブイベント「キャビンチーフ七姉妹」を効率的に攻略する

突然のゲーム攻略エントリ

だいぶ前にFinal Fantasy XII The Zodiac AgeのNintendo Switch版を購入し、先日ラスボスを撃破し、現在2周目をやっている。 FF12のサブイベントに「キャビンチーフ七姉妹」というものがあり、飛空艇定期便の「ゆったり飛空艇」の全航路にいるキャビンチーフのに話しかけるというイベントである。 全7航路あり、効率的にめぐる方法がないだろうか。 これは、グラフ理論の問題に落とし込めば解決できる。

オイラーグラフと準オイラーグラフ

あるグラフGがオイラーグラフであるとはGがオイラー閉路を持つことである。 オイラー閉路とはすべての辺を1回だけ通る閉路である。 また、あるグラフGが準オイラーグラフであるとは、Gがオイラー路を持つがオイラー閉路を持たないことをいう。 オイラーグラフは準オイラーグラフであるが逆は当然成立しない。

NetworkXで解く

御託はここまで、実際に都市を頂点、航路を辺とするグラフがオイラーグラフまたは準オイラーグラフであることをNetworkXで調べてみよう。

nodes = (
    "王都ラバナスタ",
    "ナルビナ城塞",
    "帝都アルケイディス",
    "港町バーフォンハイム",
    "空中都市ビュエルバ",
)
edges = (
    ("王都ラバナスタ", "ナルビナ城塞",),
    ("王都ラバナスタ", "帝都アルケイディス",),
    ("王都ラバナスタ", "空中都市ビュエルバ",),
    ("ナルビナ城塞", "帝都アルケイディス",),
    ("ナルビナ城塞", "港町バーフォンハイム",),
    ("帝都アルケイディス", "港町バーフォンハイム",),
    ("港町バーフォンハイム", "空中都市ビュエルバ",),
)

G = nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)

print(nx.is_eulerian(G))
print(nx.is_semieulerian(G))

結果は、

False
False

となる。 これは、空中都市ビュエルバ以外の頂点の次数がすべて奇数であり、オイラーグラフと準オイラーグラフの性質を満たさないから当然である。

俺達にはシュトラールがある

ところで、全航路たどれるタイミングではシュトラールが利用可能になっている。 つまり、辺を追加することで準オイラーグラフにすることができる。 ここで、王都ラバナスタと港町バーフォンハイムをシュトラールで移動することにする。

G.add_edge(*("王都ラバナスタ", "港町バーフォンハイム"))  # シュトラールで移動
print(nx.is_eulerian(G))
print(nx.is_semieulerian(G))

結果は

False
True

となり、準オイラーグラフとなった。

後は、オイラー路を求めれば所望の結果を得る。

for e in nx.eulerian_path(G):
    print(e)

結果は以下の通りである。

('帝都アルケイディス', '港町バーフォンハイム')
('港町バーフォンハイム', '空中都市ビュエルバ')
('空中都市ビュエルバ', '王都ラバナスタ')
('王都ラバナスタ', '港町バーフォンハイム')
('港町バーフォンハイム', 'ナルビナ城塞')
('ナルビナ城塞', '帝都アルケイディス')
('帝都アルケイディス', '王都ラバナスタ')
('王都ラバナスタ', 'ナルビナ城塞')

任意の都市間をシュトラールで移動できるからハミルトン閉路ではダメなのか?という疑問は、あくまでもすべての航路でキャビンチーフに話しかける必要があるのでハミルトン閉路ではなくオイラー閉路である必要があった。