読者です 読者をやめる 読者になる 読者になる

kentarou.log

プログラミングに関することをマイペースに記録

Pythonのスクリプトを高速かつリーダブルにする

スクリプトの書き方に疑問を持ち始める

最近とある二つのブログに夢中になっていた。

このお二人はPythonスクリプトの書き方について、

  • Pythonを書くのは100行まで」
  • 「main関数以外のクラスや関数が欲しくなったらGo言語使った方がいい」

とブログで言っていたからだ。「え!?、100行!?。少なくね??」みたいな。「main関数以外のクラスや関数が欲しくなったらGo言語って、いくら何でも言っていることが大げさすぎないか?」みたいな。かなり盛り上がっていた。お二人はGoogleのエンジニアだし、言っていることは間違ってないだろうと。自分の考えに疑問を持ち始めていた。


ブログを購読しているmomijiameさんも同様の書き方をしていて、

どういう風に書いたらいいのかわからなくなっていた。Pythonの標準ライブラリを見たら普通に1000行以上のスクリプトがあったりするし、Djangoも100行以上のスクリプトなんてたくさんある。でも、このmomijiameさんのGithubがとても参考になった。


高速かつリーダブルなスクリプトを意識し始める

Googleのイトウハヤトさんや鵜飼さんはPython以外の言語も日常的に使う人だから、僕みたいな使える言語がPythonしかない人と違って、考えが偏っておらず一般的な意見として参考にできる。ただPythonの勉強中なだけに「100行以上になりそうだったら〇〇言語」というわけにはいかない。できる限り高速かつリーダブルなスクリプトを作成するための工夫をしなければならない。


momijiameさんのスクリプトを読んでいて思ったのは、比較的100行以下のスクリプトが多いということ。コンパクトにまとまっていればその分スクリプトの可読性が上がる。長くなりそうならスクリプトを分割すればいいのではと思った。

  • スクリプトが長くなりそうならできる限り分割する(目安 : 100行前後)。
  • コメントをしっかり書く。
  • yield文を使う。
  • リスト内包表記を使う。
  • もっとテストを書く。


これまでは何も考えずにプログラムを書いていたが、高速かつリーダブルという点も意識するようになってきた。右も左も分からない状況ではなくなったものの、その分勉強ネタに困る日々が続いている。もうすぐ(7月)2つ目の言語としてPythonを始めて1年になる。これからも引き続きPythonを学んでいきたい。


参考