はじめに
こんにちは。TIG/DXチームの栗田です。最近チーム内でGoが流行っていますが、私は前までPythonの人でして、実は昨年開催されたPyConJP 2019にLT登壇していました。今回は新型コロナの影響でチームの業務が100%リモートワーク化され、これまでの通勤時間が作業に充てられるようになりましたので、せっかくということで当時の様子を記載しておこうと思います。
きっかけ
私はフューチャーに中途入社したのですが、もともと大学で人工衛星開発と宇宙物理を専攻し、その後国内鉄鋼メーカーに新卒入社しました。私は新卒で前職システム部門に配属されましたが、そこはコードの実装やレビューなどはせず、ベンダーコントロールを行うための部署でした。自分のコーディング力を向上させたかった私は、そこから社外の勉強会を探して参加するようになりました。学生時代から国内外の学会には参加していたのですが、社外勉強会に参加するうちに「プログラミングにもカンファレンスがあるんだ」と気付き、そのままの勢いでPyConJP 2017に初参加しました。
初参加だったPyConJP 2017は非常に楽しく、私の中で世界が大きく広がりました。「いつか自分もなにか発表してみたいな」という思いを抱えて過ごしていましたが、翌年参加したPyConJP 2018でその思いが燃え上がり、PyConJP 2019を目指すことにしました。
アイデアの種
それまでPythonでグラフを描いたり数値解析したりはしていましたが、そこは大人気のデータ分析分野です。そもそも当時の業務においてはPythonを書いている時間よりもExcelドキュメントを書いている時間のほうが圧倒的に長い自分にとって、プライベートだけで何かしらのネタを生み出すのは難しいと考えました。なので、流行りものに乗るよりは好きなものを作ることにしました。
そこで興味があったのが「ブラウザ」です。当時の職場はWindows 7 32bit/メモリ2GBのデスクトップPCが基本セットながらも、一応申請すれば大抵のソフトウェアは許可されるような環境でした。その中で、絶対にインストールが許されないのが「ブラウザ」でした。Windows 7はデフォルトでIE11のみが使用できるようにキッキングされており、「ブラウザはすでに搭載されているので」というのが理由で、Chromeのインストールはできませんでした(他にもセキュリティ的な諸々などもあるはずですが、それは割愛します)。そこで私は考えました。「Chromeがないなら作ればいいじゃないの」と。
当時ビッグデータやAIブームで一躍有名になったPythonは、そのモジュールも含めて申請が通りやすい状況でした。このPythonと組み合わせたのがPyQt5です。これはQt5のPythonバインディングですが、Chromium Web Engineが含まれます。ChromeはNGだけどChromiumがOKという言わば裏技を使うことで、開発準備が整いました。
余談ですが、PyQt5を採用した理由の1つに、依存パッケージが少ないことがあります。プロキシ指定して pip
を使えば、必要なパッケージを揃えるのには手動でインストールする必要がありましたが、おかげでだいぶ楽をできました。
こうして無事武器を手に入れた私は、2017年の大晦日ハッカソンとしてオレオレブラウザPersephonePの開発をはじめました。当時できた初版については、Qiita上にまとめています。
準備
初めてのCfPでしたが、昨今PyConJPに提出されるCfPが増えて採択率がだいぶ低くなっていることは知っていました。私は最初からLT狙いだったのですが、短時間で内容をおもしろくかつインパクトのあるものに仕上げるため、テクニカルな部分もそうですがストーリーを意識したCfPにしました(ちなみにCfPを提出する少し前にフューチャーに転職してきました)。
CfP提出後しばらくして採択されたことをメールで確認した私は、TIG Fridayという社内LTイベントなどで素振りにかけさせていただき、発表の1ヶ月前にはおおよその雛形は出来上がっていました。
発表
PyConJP 2019の査読付きLT通過は6名で、2日間の日程のうち初日に日本語で発表したのは私だけでした。裏被りのない一番広いホールで会場に数百人+ストリーミング視聴されている方もいる状態で、なかなか緊張していました。実際の発表の様子はYouTubeに公開されていますし、スライドも公開していますのでそちらを御覧ください。だいぶ早口になっていますが、少ない時間に色々盛り込んだためですので、ご容赦ください。
LTだったためその場での質疑応答はないのですが、登壇直後にエゴサーチをかけてリアルな反応を楽しみました。
「ブラウザは基本的人権」「Chromeがないなら作ればいいじゃない」「PyQt5を入れるとChromiumが入る」 #PyConJP
— YASUI Tsutomu (@yattom) September 16, 2019
"環境を変えるはずが会社を変えることになった"#pyconjp
— にしお (@nissy0409240) September 16, 2019
フューチャーアーキテクトに転職してすべてを解決したと (naruhodo #pyconjp
— かしゅー (@kashew_nuts) September 16, 2019
おれおれブラウザのLT、これぞLTという素晴らしい内容でした。 #pyconjp
— kioto (@takaneh) September 16, 2019
また、同日の懇親会でもいろんな方に声をかけていただきました。ちなみにその中のひとりで「PyQt5で自分のためのIDEを作っちゃおう!」という発表をされた方がいたのですが、IDEの一部機能を実装するのに、上記の私のQiita記事やコードを参考にしてくださったそうです。
こちらこそ、ペルセポネにスーパーお世話になってるのでLTで開発者が来てると知り「絶対話しかけるぞ!」と思ってたので発見できてよかったです!
— fukatani (@fukafukatani) September 16, 2019
純粋に、すごく嬉しかったです。
参加してみての感想
初めてのカンファレンス登壇でしたが、非常に楽しめました。インプットばかりではなくアウトプットが大事なことは常日頃から認識していましたが、実際に自分も登壇者になると気持ちの良い達成感を得ることができました。あと、いろんな人と繋がれたりしました。またどこかで登壇狙いたいと思います。
余談
- 大晦日から開発を始めた理由ですが、昔「MikuMikuDanceは大晦日から開発が始まった」というのを聞いていて、それにあやかってみました
- オレオレブラウザPersephoneP、Win7 32bitメモリ2GBでも動いたのですが、結局マシンスペックがネックでIEからの生産性の向上はあまりありませんでした
- 他のフューチャーの社員も参加しており、最初の画像はスタッフをされていた方から頂戴しました
- 速攻で前職の人から「見ました」と連絡がいただきましたが、退職しても気にかけていただけているのは嬉しい限りです
- ブラウザを作ってみるという「車輪の再実装」は楽しかったです