はじめに
JupyterNotebookは機械学習などの分野で有名ですが、データ集計などよくある業務でも生産性の向上に役立つと思い社内向けの環境を構築しました。
各個別のPCではなく、共通のサーバーに構築しWebブラウザで利用するのが一般的ですがアプリ化してよりフレンドリーに利用してもらえるよう工夫したというのが今回の記事になります。
説明用動画
①Excelファイルがあるフォルダに右クリックメニューからノートを新規作成
②JupyterでExcel内容を読み取り、プレビュー
③ノートを保存して終了
※Excelは政府CIOポータルにある「オープンデータ取組済自治体一覧」のものになります
https://cio.go.jp/policy-opendata/index.html#catalogsite
アプリ化のポイント
- Chromeの引数付き実行
- SMB共有フォルダのJupyter側でのマウント
- 引数付きChromeを起動するVBSスクリプト
- ダブルクリックでスクリプトを呼び出す設定、新規作成メニュー等
- Active Directoryで配信
1 Chromeの引数付き実行
ChromeにApp=の引数付きでURLを渡すとアプリ化する機能が用意されています。
例えば下記のようにGoogleのURLを指定すると画像のようになります。
"C:\Program Files\Google\Chrome\Application\chrome.exe" --App="https://www.google.com/"
このURLにJupyterのURLを渡してアプリ化します。
https://jupyterのurl/notebooks/work/note1.ipynb
2 SMB共有フォルダのJupyter側でのマウント
サーバーで稼働するJupyterは個別のPCのファイルにはアクセスできません。そのためSMB共有フォルダを作成し、各PCにドライブ割当を行いノートファイルはそこに保存するようにします。サーバーもSMBフォルダをマウントして保存されたノートを実行できるようにします。
3 引数付きChromeを起動するVBSスクリプト
VBSスクリプトでSMBフォルダ上にあるipynbの相対パスをURLに置換して起動します。
ファイルパス A:\work\note1.ipynb
アプリURL https://jupyterのURL/notebooks/work/note1.ipynb
その他、VBSには下記のような処理が含めています
- URLエンコード(日本語、記号等がファイル名に含まれているため)
- Chrome.exeのパス捜索(レジストリの値を優先、なければよくあるChromeフォルダを順に探索)
- 起動後、同じディレクトリに作成される「.ipynb_checkpoints」フォルダに隠しファイル属性の割り当て
- 認証処理(Jupyterへのアクセスは許可されたユーザーのみに制限しているため)
4 ダブルクリックでスクリプトを呼び出す設定、新規作成メニュー等
ipynb拡張子をダブルクリックした際に実行するプログラムを先ほどのVBSに設定します。
レジストリ1(拡張子と関連付ける設定名)
値のconf-ipynbは任意の名前を設定します
| パス | 値 |
|---|---|
| HKEY_CURRENT_USER\SOFTWARE\Classes.ipynb | conf-ipynb |
レジストリ2(拡張子に対応する表示名)
値のJupyter ノートブックは任意の名前を設定します
| パス | 値 |
|---|---|
| HKEY_CURRENT_USER\SOFTWARE\Classes\conf-ipynb | Jupyter ノートブック |
レジストリ3(ipynbのアイコン)
予めノートっぽい画像のicoファイルを用意して該当のディレクトリに保存しておきます
| パス | 値 |
|---|---|
| HKEY_CURRENT_USER\SOFTWARE\Classes\conf-ipynb\DefaultIcon | %USERPROFILE%\JUPYTER_FILES\ipynb.ico |
レジストリ4(ipynbの新規作成メニュー)
新規作成で作成されるipynbファイルはここで設定したファイルをコピーしたものになります。使用頻度の高いライブラリのインポート文などを書いておきます
| パス | 値 |
|---|---|
| HKEY_CURRENT_USER\SOFTWARE\Classes.ipynb\ShellNew\FileName | %USERPROFILE%\JUPYTER_FILES\ShellNew.ipynb |
レジストリ5(ファイルを開いた際に起動するコマンド)
実行すると%1にはipynbのファイルパスが渡されます
| パス | 値 |
|---|---|
| HKEY_CURRENT_USER\SOFTWARE\Classes\conf-ipynb\shell\open\command | "C:\Windows\System32\wscript.exe" "%USERPROFILE%\JUPYTER_FILES\Jupyter.vbs" "%1" |
5 Active Directoryで配信
動作確認ができれば上記をまとめてユーザー単位の設定としてポリシー化し、利用者に配信を行います
- ネットワークドライブの割り当て
- 隠しフォルダ
JUPYTER_FILESの作成 - アイコン
ipynb.ico、テンプレipynbShellNew.ipynbの保存 - レジストリ設定
おわりに
CSVやExcelファイルを取り込むためにブラウザにアップロード、ダウンロードする作業が不要になり利便性が上がるとともにノートとデータファイルが管理された共有ドライブに集約されるメリットがありました。
Jupyterの社内利用拡大を考えている方の参考になれば幸いです。
