Raspberry Pi 5のVS CodeでPython開発環境を整える
はじめに
2024年2月に日本でも販売が開始されたRaspberry Pi5を購入し、久しぶりに電子工作をやりはじめてみました。ソースコードはPythonで書いています。
ラズパイで7Seg LEDをチカチカ
Raspberry Pi OSにはPython用IDEのThonnyが搭載されていますが、普段から使い慣れているVS Codeで書く方が何かと便利です。
メインPCのVS Codeの設定をそのまま反映しても良いですが、最近ではRuffなどの新しいツールも登場しているため、この機会に拡張機能や設定を見直すことにしました。
この記事では、Raspberry Pi OS上で電子工作用の簡単なPythonスクリプトを書くことを想定したVS Code設定を紹介します。
環境
今回の設定は以下の環境で構築しています。
バージョン | |
---|---|
デバイス | Raspberry Pi 5 |
OS | Raspberry Pi OS 12 (bookworn) |
VS Code | 1.86.2 |
Python | 3.11.2 |
Pythonはシステムのデフォルトのバージョンを利用しています。Python自体のバージョン管理システムなどは導入していません。
設定の方針
今回は、以下のような要件を想定して設定を行いました。
- リンター、フォーマッター、型チェッカーを導入する
- セーブしたタイミングで自動的にフォーマットする
- 個別ツールをインストールせず、拡張機能のインストールだけで済ませる
- 個人開発を前提とする
「リンタ、フォーマッターってなに?」という人は、筆者の過去記事を参照してください。
こちらの記事では、リンター・フォーマッターとして4つのツールを導入していました。
現在では、「Flake8」「Black」「isort」の代替としてRuffというツールの人気が高まっているようです。(Ruffの詳細は参考文献を参照)
ただし2024年2月現在、Ruffは型チェックの機能を搭載していません。そこで今回は、RuffとPlyanceの2つのツールを導入して、必要な機能を網羅するようにしました。
ツール | 機能 | 備考 |
---|---|---|
Ruff | リンター | Flake8の代替 |
フォーマッター | Blackの代替 | |
import順の入れ替え | isortの代替 | |
Pylance | 型チェック | mypyの代替 |
その他、コード補完など | Python IDEとしての機能 |
VC Codeに拡張機能を導入し、設定ファイルを編集して、上記の機能を導入します。
拡張機能の導入
以下の拡張機能を導入します。
Python
VS CodeでPython開発する上で必須の拡張機能。Pylance拡張も一緒にインストールされます。
Ruff
VS Code上でRuffを実行可能にします。(2024年2月現在、ruff==0.2.2
が提供されます)
settings.jsonの編集
settings.json
を開いて以下のように設定します。(Python固有の設定内容だけ抽出しています)
{
// Python Settings
"[python]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
},
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.rulers": [88],
},
"python.analysis.typeCheckingMode": "basic",
"python.analysis.autoImportCompletions": true,
"python.analysis.inlayHints.functionReturnTypes": true,
"python.analysis.inlayHints.variableTypes": true,
}
設定内容の詳細を紹介します。
{
// Python Settings
"[python]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
},
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.rulers": [88],
(略)
}
}
ここではファイルのセーブ時にRuffでフォーマットし、修正可能なエラーは修正し、import順も入れ替える設定を記載しています。
Ruffではデフォルトで88桁目で折り返すため、目印として88桁目にルーラーを表示しています。
{
(略)
"python.analysis.typeCheckingMode": "basic",
"python.analysis.autoImportCompletions": true,
"python.analysis.inlayHints.functionReturnTypes": true,
"python.analysis.inlayHints.variableTypes": true,
}
ここではPylanceの設定を記載しています。
typeCheckingMode": "basic"
は、型ヒントを書いた部分だけ型チェックを行なう設定です。電子工作でPythonを書くくらいならこの程度で十分だと思います。
inlayHints
は変数型と戻り値型に対してヒントを提示してくれる機能です。Pylanceの設定を調べている時に見つけたので有効にしてみました。
個人的にはRustっぽくて好みですが、邪魔であれば消してください。
グレー背景の箇所が Inlay hints (VS Code公式ブログより)
おわりに
これで設定は完了です。
Pythonコードをガシガシ書いて文法エラー等を修正しつつ、セーブしたタイミングでフォーマットしてくれる環境が整いました。つまらないミスでエラーを吐いてしまうケースを減らせるので、快適にスクリプトの実行ができます。
ラズパイ上でのコーディングはいつもと違うまっさらな環境で実施できるので、コーディング環境を見直してみる良い機会かもしれません。
なお、今回はRuff自体の設定はデフォルトのままにしました。Ruffでは700以上のリンタールールを追加できるので、色々と試してみようと思います。
参考文献
Discussion