1
0

Jupyter でもコードフォーマットしたい! on Docker

Last updated at Posted at 2024-09-02

昨今のプログラミングでは自動でコード整形されるのは当たり前で、人間が手でコードを綺麗にしたりレビューで指摘したりといった作業は過去のものである。Python においても black + isort や Ruff といったツールが盛んに使用されており、IDE と連携することで簡単に自動フォーマットを実現できる。

...そんなプログラミング環境に慣れていると、たまに Jupyter Lab を触ったときに「フォーマットされねぇのかよ〜」となってしまう。自分が Jupyter を使うときはたいてい書き捨てのコードなのでそこまできれいに書く必要ないのだけど、それでも自動フォーマットしてくれたほうが読みやすいし気分もいい。

JupyterLab Code Formatter

なんと JupyterLab Code Formatter1 という便利パッケージがあり、これを入れてちょっと設定するだけで簡単に実現できる。

pip install jupyterlab-code-formatter black isort

image.png

on Docker

Jupyter Lab を Docker で立ち上げる場合は Settings から変更してもコンテナ再作成時に元に戻ってしまうので、コンテナイメージをビルドするときに設定を埋め込みたい。

jupyterlab_code_formatter.json
{
  "preferences": {
    "default_formatter": {
      "python": ["isort", "black"]
    }
  },
  "black": {
    "line_length": 120
  },
  "isort": {
    "line_length": 120
  },
  "formatOnSave": true,
  "suppressFormatterErrorsIFFAutoFormatOnSave": true
}

例えばこんな設定ファイルを用意しておいて、適切な場所に配置するように Dockerfile を書けばよい。

Dockerfile
RUN pip install jupyterlab-code-formatter black isort
COPY jupyterlab_code_formatter.json /root/.jupyter/lab/user-settings/jupyterlab_code_formatter/settings.jupyterlab-settings

この「どこに配置したらいいか」を調べるのがちょっと面倒だった。(どうやって調べたのか忘れた)

また、 root ではないユーザで Jupyter Lab を実行する場合は配置するパスが違いそうだけど、おそらく /root/ の部分を実行するユーザのホームディレクトリに変えてやればいけると思われる。

  1. JupyterLab Code Formatter

1
0
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
1
0