0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JupyterNotebookをアプリ化して社内展開した話

Posted at

はじめに

JupyterNotebookは機械学習などの分野で有名ですが、データ集計などよくある業務でも生産性の向上に役立つと思い社内向けの環境を構築しました。

各個別のPCではなく、共通のサーバーに構築しWebブラウザで利用するのが一般的ですがアプリ化してよりフレンドリーに利用してもらえるよう工夫したというのが今回の記事になります。

説明用動画

①Excelファイルがあるフォルダに右クリックメニューからノートを新規作成
②JupyterでExcel内容を読み取り、プレビュー
③ノートを保存して終了

※Excelは政府CIOポータルにある「オープンデータ取組済自治体一覧」のものになります
https://cio.go.jp/policy-opendata/index.html#catalogsite

アプリ化のポイント

  1. Chromeの引数付き実行
  2. SMB共有フォルダのJupyter側でのマウント
  3. 引数付きChromeを起動するVBSスクリプト
  4. ダブルクリックでスクリプトを呼び出す設定、新規作成メニュー等
  5. Active Directoryで配信

1 Chromeの引数付き実行

ChromeにApp=の引数付きでURLを渡すとアプリ化する機能が用意されています。
例えば下記のようにGoogleのURLを指定すると画像のようになります。

"C:\Program Files\Google\Chrome\Application\chrome.exe" --App="https://www.google.com/"

GoogleApp.png

この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、テンプレipynb ShellNew.ipynbの保存
  • レジストリ設定

おわりに

CSVやExcelファイルを取り込むためにブラウザにアップロード、ダウンロードする作業が不要になり利便性が上がるとともにノートとデータファイルが管理された共有ドライブに集約されるメリットがありました。
Jupyterの社内利用拡大を考えている方の参考になれば幸いです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?