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する時の名前が一致しない事があるのが気持ち悪い
  • 言語仕様にやられる
    • クラスをよく使ったり、型が弱いのも相俟って怖い

Web開発において

DjangoはフレームワークしすぎていてFastAPIは薄すぎるので中間のDjango NInjaが良いと思います。 ORMはDjango ORMで妥協かなぁという感じ。

言語が簡単でOpenAPI生成もあるので素早く作って終わりならまぁありかもね。