Pythonを半年触って
目次
半年間、業務でPythonを触って、個人的にも少しだけやったので思った事とか。
ざっくりまとめ
言語は簡単だが、治安維持に余計な労力を割く必要があり面倒。 Web開発ではFastAPI等がOpenAPIサポートもあり良さげだが、ORMが微妙なものばかり。
遊びやAI、機械学習関連では良い選択肢。
Pythonで何をしたか
業務
- PoC
- FastAPI
- Langchain
- DBはMongoDBと、RAG用にElasticSearch
個人
- どんな感じでWebアプリを作れるかのお試し程度
- FastAPI
- Django Ninja
Good
- 言語が簡単なので動かすだけならすぐ出来る
- 情報が多い
- ある程度調べれば大抵の事は分かる
- AIや機械学習系と関連のあるライブラリが強い
- まぁ、このせいでこれ系やるならPythonにせざるを得ないキツさはある
- FastAPI、Django NinjaのOpenAPI生成が最高
- 開発ツール
- uv
- Ruff
- Pyright(Pylance)
- Mypyよりこっちのが良いです
- やりたい事が大体できる
- __hoge__で触りにいったり割と力技が効くので、これどうやるんだよ!みたいな事が少ない
Bad
- 型が弱い
- ライブラリ関連が特にキツい
- 動かしてみないと何が返ってくるか分からない
- ORMが困る
- PythonのORMはまともに型がついているものが無い
- 自分で書くコードには最低限の型はつけられるが、記述量が多くなる
- 型を頑張れば頑張る程アホらしくなってくる
- 型付けが難しいので、割れ窓理論で結局治安が悪くなる
- ライブラリ関連が特にキツい
- テストまわりが微妙
- あまり触ってないのでよく分からないけれど、そんな気がした
- import関連
- パッケージの依存関係が信用できない
- 一部の機能を使用するためにインストールしておく必要のあるパターンがそれなりにあり、importされていないじゃ〜んといってアンインストールするとまずい
- パッケージをインストールしたディレクトリも検索しましょう・・・
- そもそも使わなくなったパッケージは忘れず消しておくとか、テストをすれば問題では無い
- 一部の機能を使用するためにインストールしておく必要のあるパターンがそれなりにあり、importされていないじゃ〜んといってアンインストールするとまずい
- パッケージ名とimportする時の名前が一致しない事があるのが気持ち悪い
- パッケージの依存関係が信用できない
- 言語仕様にやられる
- クラスをよく使ったり、型が弱いのも相俟って怖い
Web開発において
DjangoはフレームワークしすぎていてFastAPIは薄すぎるので中間のDjango NInjaが良いと思います。 ORMはDjango ORMで妥協かなぁという感じ。
言語が簡単でOpenAPI生成もあるので素早く作って終わりならまぁありかもね。