PyCon JP 2018 参加・発表した

f:id:puhitaku:20180923190009p:plain

今年も PyCon JP に参加した。おかげさまで2年連続でトークセッションに受かったので、弊社で開発中のロボットで動かしている C 拡張モジュールを Python 3 に移植した事例をもとに、発表用にシンプル化して発表した。

speakerdeck.com

喋った感想

ニッチめの話題だったためか聴いてくれた人数はまあこれぐらいかという感じ。私が入室しようとした時点で廊下から見える位置に「満室」の札が貼られっぱなしだったことや、難易度を Advanced にしたのもあるかもしれない。まあ、聴きたい人が狙って聴きに来れたものと好意的に解釈したい。

喋りは軽快にできて良かったと思う。1スライドあたりの情報量はもっと多くしてもよかったかもしれない。プロジェクターが1024x768と低解像度なので、年代物かと少々身構えすぎた。16:9でのスライド作りに慣れてしまった今、相対的に縦に情報量が増やせるはずの4:3は低情報量であると錯覚してしまう。まあ実際解像度としては低かったのだが。

本当はライブコーディングがしたかったので少しばかり未練が残る。不運というか自分の手際の悪さというか、PyCon JP 以前の1〜2週間が異様に忙しくなってしまいそれは叶わなかった。スケジューリングしかり、トーク内容の追い込みしかりは来年への課題となった。

他のトーク

集計によると、今年はWeb(Django)の話題が多かったそうだ。過去2年ほどはデータや機械学習的なものが多い印象だったので意外だ。個人的にはPythonそのものや知的好奇心をくすぐる話が聴きたいので、スポンサーブースの手伝いで聴けなかったもの以外はできる限りそれっぽいのを選択した。幸いにもライブ放送がそのままYouTubeに上がるので、聴けなかったものは帰宅してから1日ずっと聴いた。面白かったものは以下。(敬称略・表記は公式HPによる)

  • Keynote: Kaufmann Manuel - Argentina in Python: community, dreams, travels and learning
    • 今まで PyCon JP で聴いた Keynote の中で一番良かった
    • Python に魅了された彼は、何度かの事故や食中毒、ボリビアでの暴動(!)に巻き込まれながらも、アルゼンチン国内のみならず周辺諸国にわたって Python を教えて回った。そのストーリーを語りながら発する言葉には並々ならない説得力があり、これから2日間のカンファレンスを始めるよいスタートとなった。
  • Luka Sterbic - Why you should care about types: Python Typing in the Facebook Backend
    • 毎年1〜2セッションはある Static type check 系のセッション
    • 「Type hints は Pythonic だ」と語る根拠として、大きなコードの中のある関数にどういうオブジェクトが渡ってくるかを調べる場合などが挙げられしっくりきた; 実際、でかいコードやデプロイが必要なコードは手元で実行したりデバッガを挟むことも難しいし
    • Instagram 製の MonkeyType は実行時の型情報をスタブに書き出し、コードに反映させられるため既存のコードへのアノテーション追加を加速できる
    • 大きなコードにアノテーションを付加するには、まず共通で使われる小さいモジュールから付加していくといい
  • Atsushi Odagiri - あなたと私いますぐパッケージン
    • aodagさんのセッション
    • 曰く「グ」を入れ忘れていたらしい
    • パッケージングに関するPEPを渡り歩く感じ
  • 北神雄太 - Pythonを使ったハードウェア開発について
    • だんだんと高いレイヤーに応用が進んでいく様子が面白い
  • 澁谷 典明 - JVM上で動くPython3処理系cafebabepyの実装詳解
    • 去年 LT? で cafebabepy のお話を聴いてから興味があった
    • 濃くてよかったー
    • 間違いなくもっと評価されるべきトークだと思う
  • 長谷場 潤也 - AltJSとしてのPython - フロントエンドをPythonで書こう
    • 思ったよりマジで Python なコードがそのままブラウザ内で動いていた
    • 曰く Python の組み込みオブジェクト・関数系はほぼ全部提供されているらしい
    • 型チェックまでできるとか、商業的に使われないにしても本気度が伝わってきて楽しい
  • Hideo Hattori - Rust と Python
    • Rust は数年前に変化しまくっていた言語仕様に翻弄されてから触れてないが、それでも大体伝わってくるぐらいよく整備されているようだ

初スポンサー参加

f:id:puhitaku:20180923185400j:plain (写真は弊社 Twitter アカウントより。本当は自分で撮ったのを貼りたかったがカメラを会社に置いてきてしまった、無念)

GROOVE X は昨年も PyCon JP スポンサーとなっていた(私はそれがきっかけで GX を知ることになった)が、今年はついにブース出展ができた。といっても取りまとめは人事の方にお任せしてしまっていたので、終始頭が下がりっぱなし。我々エンジニアが本当にやるべき仕事は「人と話し、ブランドを広め、弊社を知ってもらう」ことだと改めて思い直し、片付けの時間でもひたすら人と話していた。

ブースの位置もとてもよく、人の流れの中にあった。会場移動に限らずあらゆる時間で多くの人に足を止めていただけたと思う。来年は堂々とロボットを飾れるようになるだろうから、どんなスポンサーになれるか今から楽しみだ。

終わったあとも楽しみました

初めてお会いしたメルカリの Komatsu さんc-bata パイセン と話しつつクロージング。その後とりあえず飲みたくてそわそわしてるパイセンに笑いつつ少しばかり商店街で飲んだ。そのあと PyCon JP を支えたスタッフの皆さんと合流し、労をねぎらいつつビールを飲んだ。独歩の樽生マスカットピルスが本当に美味しかった。また飲みたい。

来年

来年はどんなトークを話せるだろうか。ニッチに振りつつそれなりのクオリティのトークが出来たので今年はひとまず満足。来年はより広いオーディエンスに届き、コード書きたい欲を刺激しそうなセッションにしたいなーと思っている。

Pythonの環境管理ツール良し悪し

EDIT: 2018/06/19 pipenvについて追記

本記事は社内向けに書いた文章を修正したものである。

世の中にある代表的な「Python環境管理ツール」に virtualenv, pyenv, venv, pipenv の4つがある。これらをGoogleで検索すると使い方が書かれたページばかりが出てきて、それらの違いや使い分けを解説する記事は少ない。

本当は必要ではないのに「pyenvは便利」のような謳い文句で何となく使わせる記事や、古い情報を元に書いた「一見新しそうに見える記事」も多く見られる。

この記事では、中立・実用重視な視点から各ツールを解説し、筆者が考えうるベター(ベストは人それぞれ)な組み合わせについて書く。

なおAnacondaは初学者が使うにはおすすめできない。Anacondaについての筆者の解釈は末尾にあるためそちらも参照されたい。

本記事公開後いくつか近い話題の記事を教えていただいた。突っ込んだ話も多く参考になるので、末尾の参考欄から是非あわせて読んでいただきたい。

TL; DR

この文章で話すことをかんたんに言うと、

  • pyenvでPythonの複数バージョンを管理する
  • venvでパッケージ環境を切り分ける (Python 2ならvirtualenv)

以上の組み合わせが比較的シンプルながら柔軟でサポートが安定している。

非プログラマーの場合は、OSのパッケージマネージャーで最新のPythonをインストールした方が簡単でトラブルシュートしやすい。

続きを読む

転職しました

f:id:puhitaku:20180202002321p:plain

表題のとおり

2018年2月1日をもって、フラー株式会社からGROOVE X株式会社へ転職しました。

ホントはこの1行報告で終わってよかったんですが、久しぶりにエモりたいのでちょっと書きます。社会人ヅラしてエモるけどゆるして。

理由

なんで転職したかの理由はシンプルで、自分が何やりたいかが見えてきたからです。

学生の時に具体像が見えなかった「コンピューターでものづくりをする」という未来が、フラーで仕事をしているうちに具体的に描けるようになってきたので、次なるステップのために動いた感じです。

津山高専の専攻科を半年で辞めフラーに入社した2年前は、「今はコードを書いて実戦で学ぶべきだ」ぐらいしか思ってなくて、「ものづくりをしてる将来の自分」は間違いないにせよ、具体的にじゃあどんなものづくりに携わるのかというイメージがまったく湧きませんでした。入社してからはどんな技術にせよ、知らないことを吸収していくうちに本質的に好きなことやものづくりへの信念が見えてきて、結果上記の「仕事でものづくりをしたい」から「消費者の生活に直接つながるハードを作りたい」と具体的に考えるようになっていました。

実務と中途採用

ハッキリ言って自分がロボット作りに携わるとはまったく思ってませんでした。なんかこう、大学院卒のすごい人たちがでかい会社のR&D部門で開発するってイメージだったので。

そんなイメージを持ちつつ実際にGXに入ってみると、多様な出自でものづくりを経験した猛者たちが、技術に物を言わせてまだ見ぬプロダクトを目指していました。つまり、学歴がどうとかではなく、ただ純粋に技術とやっていきが求められてそこにいたわけです。この視点で言うと、新卒ではなくフラーで2年働いた後にGROOVE Xと出会ったのは非常にラッキーでした。もしフラーの実務や趣味(ルーターなど)で積んだ知識・費やした時間がなければ、私は自分のポテンシャルを十分にアピールできなかったでしょう。PythonやGoの知識が付いて〜みたいなのももちろんありますが、チームでルールに則って開発するとか、信頼性を考えたコードを書くみたいなことは、明らかに実務でしか積めない経験だったなと感じます。

まとめると、教育機関から社会に出たときにキャリアは確定するのではなく、実務によって得られる知識や能力によってよりよいキャリアが後から描けるってことです。ここが主に伝えたかったところです。

決め手は直感と会社のビジョン

昨年のPyCon JP 2017でトークセッションの選考に受かった時点で相当ラッキーでしたが、その後のパーティーでたまたまGROOVE Xを知って、しかも聞いたコンセプトが自分がボヤッと持っていたロボット像にクリーンヒットするという偶然ぶりでしたから、運命的なものを感じざるを得なかったです。

それからは、「もし転職するとしてこれは妥当かどうか」をじっくり考えたり、親しい人と相談したり、同業他社と比較したりを経てGROOVE Xに決めました。

がんばります

とりあえずそんなところです。経緯や更なるエモなど、詳しく聞きたい人はぜひビールを流し込みつつお話しましょう。