こんにちは、おいしい健康アルバイトの成澤です。
おいしい健康には2019年2月に入社して、主に食べリズム*1という調査研究アプリのデータ分析周りを担当しています。いま大学院で数学を勉強していて、研究内容がデータ分析や統計には関係していないのですが、アルバイトのでの実務を通してスキルを磨いています。社員の花井さん(BIgQueryで協調フィルタリングを書いた人)と一緒にデータ分析をやっています。
最近は Google Colaboratory 上で Python を書いていることが多いです。 Google Colaboratoryは分析結果の共有にも便利なので可読性の高いコードを書きたいですよね。
そこで今回はGoogle Colaboratory 上のコードが Python のスタイルガイド PEP8 *2 に準拠しているか、Flake8*3を利用して、フォーマットチェックする方法を書きます。 PEP8に準拠したコードで可読性を高め、分析結果の共有をスムーズにしましょう。
Jupyter Notebook には拡張機能で autopep8 などをすぐに追加し利用することができますが、Google Colaboratory で同じようなことをするのに苦労したのでまとめておきます。
Flake8を適用する
まず、セル上で以下を実行して、pycodestyle, flake8, pycodestyle_magicをインストールします。
!pip install pycodestyle flake8 pycodestyle_magic
次にpycodestyle_magicでmagic functionを使うために、セル上で次を実行します。
%load_ext pycodestyle_magic
これで準備は終わりです。セルに%%flake8
を入れて実行するとフォーマットチェックがかかります。
試しにやってみる
下記のようなコードを実行するとフォーマットエラーが表示されます。
また、flake8でなくpycodestyleを使うこともできます。
表示されたフォーマットエラーを修正すればいいわけですが、ここで気をつけたいポイントがあります。
インデントに関するエラーを詳しく見てみることにします。
インデントのスペースと行番号の設定
さて、上のフォーマットチェックで、
3:3: E111 indentation is not a multiple of four
と3行目のインデントがスペース4つではない と怒られました。PEP8ではインデントにスペース4つに使用することになっているので、それに違反しているようです。
実は、Google Colabratoryではインデントが初期設定ではスペース2つ になっています。これを変更します。また行番号が表示された方がエラーが読みやすいのでそれも追加しておきます。
ツールバーのツール
の設定
からエディタ
を開きます。そこでインデント幅(スペース)
を4
に変更します。また行番号を表示するにもチェックを入れます。
これで自動的でスペース4つで下げられるようになりました。他の部分も言われた通りに直せばフォーマットチェックが通ります。
参考
Google Colaboratory のフォーマットチェックに関する情報は少ないのですが、以下が参考になりました。