2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【失敗談】Python病との戦い:便利すぎるがゆえの落とし穴

Posted at

1. はじめに

Pythonは非常に便利で何でもできる言語ですが、その万能さゆえに「Python病」とも呼べる現象に陥りました。このPythonを過剰に活用してしまった失敗談や反省点、そして適材適所の重要性について記載します。


2. SQL関連の反省:環境構築と操作の分離

  • 問題点: SQLAlchemyを使ってデータベースの環境構築から操作まで全てPythonで行おうとした結果、コードが複雑化しメンテ不能な状態に。
  • 学び: 環境構築はSQLコマンドで行い、Pythonはテーブル操作のみに専念することで、学習難易度やメンテナンス性が大幅に向上。
  • 結論: 適材適所を意識し、ツールごとの役割を明確にすることが重要。

3. AWS関連の反省:boto3とTerraform/CloudFormation

  • 問題点: boto3を使ってAWSリソースを管理しようと試行錯誤したものの、コードが複雑化してメンテナンス不能に。
  • 学び: TerraformやCloudFormationなどの専用ツールを活用すれば、より簡単かつ効率的に環境構築が可能。
  • 結論: Pythonは便利だが、AWS管理には専用ツールの方が適している場合が多い。

4. Dockerfile生成での試み:テンプレート拡張の失敗

  • 問題点: DockerfileをPythonでテンプレート化しようとしたが、結果的に時間と労力を浪費。
  • 学び: シンプルなDockerfileであれば直接記述する方が効率的でメンテナンス性も高い。
  • 結論: 自動化や効率化を追求しすぎると逆効果になる場合もある。

5. Excel操作:openpyxl vs VBA

  • 問題点: Python(openpyxl)でExcel操作を自動化したものの、数万行程度の表計算であればVBAやExcel関数の方がメンテナンス性が高いと感じた。
  • 学び: 小規模な処理なら既存機能を活用した方が良い場合も多い。
  • 結論: 楽しい試行錯誤も大切だが、目的に応じた最適な手段を選ぶべき。

6. 低レイヤ作業:Cpython vs C/C++

  • 問題点: 一時期低レイヤ作業をCpythonで試みたが、C/C++を使った方が簡単かつ効率的だった。
  • 学び: 適材適所で言語やツールを選ぶことの重要性を再認識。
  • 結論: Pythonだけに頼らず、他言語も柔軟に活用する姿勢が必要。

7. まとめ:Python病から脱却するために

  • Pythonは万能な言語ですが、その便利さゆえに全てをPythonで解決しようとしてしまう「Python病」に何度も陥りました。
  • 適材適所でツールや言語を選ぶことが、効率的かつメンテナブルな開発につながります。
  • 今後も再発しそうな「Python病」ですが、そのたびに冷静になり最適な手段を選ぶことを心掛けたいと思います。

8. おわりに

生成AIなど技術の進化によって言語の壁はほぼなくなりつつあります。これからも楽しみながら試行錯誤しつつ、「適材適所」を意識して開発していきたいと思います。

その他

AtCoderについては、現状ランク上昇ではなく、考え方やアルゴリズムを学んでいるため、仮にTLE頻発しようと使い慣れたpythonを続けて行きます。

解放さえ理解すれば、他言語にも生成AIで対応出来るし、言語変換についてはAtCoderの規約でも禁じられてませんしね。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?