オープンソースの「Jupyter Notebook」は、データ分析ツールとしてよく知られています。Jupyter Notebookでは、ノートブック形式で作成したプログラムを実行して、結果の記録が可能です。自分で記述したプログラムを振り返ることはもちろん、チームで開発する場合の情報共有に最適です。さらに、企業内研修などプログラム学習の場で活用できます。
このJupyter NotebookをAzure上で利用可能にしたものが「Azure Notebooks」です。PCにインストールする必要がないため、さまざまな環境で使えます。またリリースから現在まで改良が加えられ、最新版では使い勝手が向上しました。
ここでは、ノートブック機能についての基本知識、Azure Notebooksの概要、新入社員のプログラム学習にAzure Notebooksを利用する例について解説します。
ノートブック機能とは
データサイエンティストやプログラマーであれば既に理解しているかもしれませんが、最初に「ノートブック」の機能を整理しましょう。
通常、プログラマーはエディタなどを使ってプログラムを記述します。しかし、プログラムの記述や実行時のメモを別のテキストや紙のノートに書きとめておくと、本体のプログラムとはバラバラになって、後から何のメモか分からなくなってしまうことがあります。さらに、大切なメモをゴミ箱に捨ててしまう可能性もないとはいえません。あるいは退職などで仕事を引き継いだ場合、「このプログラマーは、いったい何をしようとしていたのか?」と理解に苦労する問題も発生します。
ところが、ノートブックを使うと、プログラムに加えて「実行結果」と「コードに対するメモ」をひとつのファイルにまとめることができます。メモは多くのプログラマーには馴染みのあるMarkdown形式で記述します。コードの実行結果にはメモも出力され、コードとメモは色分けされるので視覚的に分かりやすくなります。どのような目的でコードを記述したか、実行した結果がどうなったか確認して、サンプルコードの動作確認やテスト、デバッグなどに適したツールです。
ノートブックには、コードのほかにグラフや画像、動画などを埋め込むこともできます。プログラムの集合である「セル」で構成され、セル単位の対話型によるプログラムの実行、編集、削除が可能です。ひとつのファイル形式なので、保存したノートブック形式のファイルはフォルダで整理したりファイル管理システムを使ったり、さまざまな環境で開いたり、プログラムの共有に優れています。ファイルはMarkdown、HTML、PDF、LaTeXなどさまざまなファイル形式に変換できるので、利用範囲が拡がります。
また、ノートブックとプログラム言語は1対1で対応し、ノートブックを開くと独立したプログラムの実行環境(カーネル)が起動します。Python をはじめとしてC++やRubyなどのさまざまな言語のカーネルが公開されています。
チームで開発するのであれば、ノートブックは非常に汎用性が高く便利な機能で、利用する価値があります。
Azure Notebooksとは
Azure Notebooksでは、Azure上でJupyter Notebookの機能を利用できます。最大のメリットはクラウドのサービスのため、それぞれのPCにインストールする必要がないことです。また、Azureのライセンスを持っていれば無料で利用できます。ただし、前提条件や制限があるので、以下に制限と利用環境についてまとめます。
Azure Notebooksの制限
無料で提供されているとはいえ、乱用防止のために以下の制限があります。
- 各プロジェクトのメモリ:4GB
- データ:1 GB
この制限を超えた場合は、CAPTCHA(Completely Automated Public Turing Test To Tell Computers and Humans Apart:歪んだ文字列を表示させてユーザーをスパムと区別する認証)を行う必要があります。
Azure サブスクリプションに登録している場合は、Azure Active Directoryによる会社のアカウントなどで Azure Notebooks にサインインした後、サブスクリプション内のAzure Data Science Virtual Machine インスタンスに接続すると、完全な制限なしに利用できます。
利用可能なプログラムの実行環境
Azure Notebooksでは、以下のような実行環境(カーネル)を提供しています。
- Python 2.7+Anaconda2-5.3.0
- Python 3.6+ Anaconda3-5.3.0
- R 3.4.1+Microsoft R Open 3.4.1
- F# 4.1.9
「Anaconda」はPython本体とライブラリをセットにしたPythonのディストリビューションで、データサイエンスやAI(人工知能)による機械学習の環境を簡単に構築できます。Python 3.5 + Anaconda3-4.2.0 は、非推奨になる予定です。
Azure Notebooks には、Python カーネルの場合はnumpy、pandas、scikit-learn、matplotlib、および bokeh ライブラリのような追加パッケージも含まれています。
Azure Notebooksを新入社員の研修に使う
Azure Notebooksは、以下に詳細な使い方が記載されています。「5分間クイックスタート」もしくは「ステップバイステップのチュートリアル」によって操作方法の概要を学ぶことができます。
Jupyter Notebookは学術研究やデータサイエンティストの機械学習などで活用されていますが、新入社員のプログラマーの教育ツールとしても最適です。チームで開発を行うアジャイル型の開発方式を採用している場合や、DevOpsなどの実践にも有効なツールになります。
新入社員が多数の場合は、会議室などを使ってセミナー形式の研修もできますが、先輩の研修担当者が新入社員のコードにメモでアドバイスを返して、付き添って指導しなくても、プログラムの課題を与えて独習できます。先輩社員は空き時間で新入社員にメモでアドバイスします。また、新入社員は自分のアカウントにノートブック形式で作成したファイルをコピーできるため、アドバイスをもとに復習したり、コードを修正して実験したり、自分で考える時間を作ることができます。
即戦力が求められるスタートアップであっても、開発部隊の自発的なプログラム学習によって戦力を強化するツールになります。
そこで、新人研修のプログラム学習を想定して、以下に「5分間クイックスタート」を参考にしながら、指導手順のシミュレーションを記載します。必ずしもこの通りに行う必要はありません。一例として参考に紹介します。
サインインとユーザーIDを設定する
新入社員のアカウントを作成します。サインインなしでもAzure Notebooksを表示することは可能ですが、先輩社員と新入社員がノートブックのファイルを共有するためにはサインインが必要です。この作業は先輩社員が事前に設定しておいても構いません。
「notebooks.azure.com」の右上にある「Sign in」をクリックして、画面にしたがってアカウントとユーザーIDを作成します。必ずサインアウトの方法も教えるようにします。
ノートブックを共有する、作成する
開発経験がある新入社員であれば「5分間クイックスタート」のページを参照して、ノートブックの作成とサンプルファイルの実行を独習してもらいます。ただし、企業内の開発環境に合わせて、言語とPythonのバージョンを指示しておくことが必要です。
Azure Notebooksが終わったら、ノートブック形式ファイルを右クリックして「Copy Link」もしくは「Share」で、メールや社内のチャットツールなどで先輩社員に送信します。そのノートブック形式ファイルに、先輩社員はメモで評価や修正指示などを書き込みます。
プログラム経験が浅い後輩社員であれば、いくつかのサンプルプログラムを課題として書かせて研修を行います。プログラム経験があれば、現在開発中のプログラムの一部を渡して、後輩社員にオン・ザ・ジョブ・トレーニングとしてプログラムしてもらいます。作成したプログラムは共有して先輩社員がチェックします。
サンプルノートブックで学ぶ
「学ぶ」は「まねぶ(真似る)」と同じ語源だったという説があります。ライブラリの利用も同様ですが、インターネットには優れたJupyterノートブックのコレクションが多数存在しています。優れたサンプルから独習することもプログラム力の強化に役立ちます。
まとめ
開発者や技術者の人材不足が深刻化しています。大規模のアプリケーション開発では、チームによる開発が重視されていますが、このとき、いかに新人の即戦力を育成するかということが企業間の競争力に差をつける決め手になります。Azure Notebooksのようなツールを使いこなすことで、人材育成とともに情報を共有する社内文化を醸成することが可能です。