shunshock!

しゅんそくになりたい開発者です。

若手・学生サーバーサイドエンジニアLT会で登壇した話

深夜のバターサンドは背徳の味。どうも@shunsockです。今日は若手・学生サーバーサイドエンジニアLT会に乗り込んで来ましたのでその報告をします。

え?PHPカンファレンス北海道2024の記事を書けって?あれはちゃんと技術記事として出すんでちょっと待ってください。はい。

参加したイベント

ゆめみさんとラクーンさんのサーバーサイドのイベントでした。若手を中心に学生も何人かいて色々な層と関われる会だったと思います。来週はフロントエンド編もあるらしい。

yumemi.connpass.com

登壇内容

Pythonって難しくないですか?という話をしてきました。

Python歴3年目なわけなんですが, この言語でプログラム書くのむずすぎるのでその話が中心ですね。Python知らない人向けに書いておくと、

  • Classの変数・関数が全てpublic
  • constなる概念はない (静的解析で使えるFinalが書けないパターンが存在するので本当に辛い)
  • Interfaceがない

はい、そうなんです。プログラムを書くための道具が使えないんですね。これは辛い。 さらに型チェックが実行時にありません。静的解析でなんとかなるやろって話もあるのですが、残念ながら3rd party製Libraryに型がついているわけではなく完全に解析することは事実上不可能です (そもそもPython使う動機がLibraryが豊富だったりするので)。ちなみにこれはC言語インタープリタで動く言語だからではありません。事実PHPは動的型付け言語ですが、実行時の型チェックをすることができます。PHP Love❤️

まあ、でもPythonが便利なのは事実で使いたい場面というのは存在します。例えば、DataWorkflowだとPythonには優秀なライブラリがありますし、機械学習のWeb APIを作るなら必然的にPythonを使うことになります。今日聞いた話だとLambdaで使っているという話も出てきました。

まあ、そんなときにどうやって堅牢なシステムを素早く開発するのかって話をするのですが、自動化が鍵だと思っています。

例えば、Pythonは開発環境開発がそこそこ面倒なのですがDocker Imageをあらかじめ作っておけばその負担は減らせますし、formatterと静的解析とテストについてはMakefileやShell Scriptを使ってタスクランナーを組むと良いです。Package ManagerはとりあえずPoetryを使っておけばいいと思います。ライブラリ管理がだいぶ楽になります。

python-poetry.org

RyeというPythonのバージョンまで一括管理してくれるRust製のソフトウェアもあるのですが、まだmajorバージョンが1になってないのでもう少し様子見ですかね。

また、型の安全性についてはPydanticとTypeGuardを使います。PydanticというのはClassの型を実行時に自動で検知してくれる優れものです。使わない手はありません。

docs.pydantic.dev

pypi.org

Pydanticはこの他に正規表現などによるValidationやより厳密な型を提供してくれています。Documentも見やすいですし、本当に助かってます。Typeguardは関数に入力された値を確認するライブラリです。if文を書かなくて済むので見やすくなります。ちなみに他のライブラリは割と開発が止まっていたりします。辛い。また、Pydanticがあっても結局3rd Party製ライブラリがdict引数だとPydanticからTypedDictへmapする関数が必要になるので過信はやめましょう。

ここら辺の型の堅牢性って防御的プログラムをどれぐらい書くかに影響していそうなんですよね。Pythonは何もしないと大量に書く必要があるんだよな。Pydanticでだいぶ緩和されたが。

まあ、Pythonが悪いってよりはPythonでやるのは軽量なソフトウェアやバッチなのではないかなというのは個人的な考えです。鯖立てるなら型のサポートをふんだんに受けて構成したいですね。まあつまり、Pythonで鯖を立てるな、JavaScript機械学習するぞって話ですよ。はい。

余談ですが、この発表なぜか最初だったんですよね。ゆめみさんでもラクーンさんでも無いっていうw あとで主催者(YAPC繋がりの知り合い)に聞いたところ、最後をスポンサー側の人間にしたかったという裏話を聞けました。なるほど。

二次会行ったぞ

実のところ今ブログ書いてるのは八割方こっちが理由です。若手コミュニティで二次会を発生させることに成功しました!!嬉しい😊 私が「二次会の波動を感じる」と話したところ、うーたんさんが「buri会議のために宿とっている」と話だし、さらにラクーンの皆さんが乗ってくれました!みんなありがとう!

発表でもFirst PenguinだけでなくSecond Penguinも大事だぞって話がありましたが、本当にそうで、一人だけで盛り上がっていてもしょうがないんですよね。二次会も含めて懇親会は多数の方とお話しすることができました。YAPCの話をしたり、Webの話をしたり、はたまたゲーム界隈の話をしたりと話題にも多様性があったように思います。

総じて良い会だったです。主催のラクーンさん、ゆめみさん、運営者の皆さん、ありがとうございました!