2021.10.1 情報処理技術セミナー

オリエンテーション

本日の内容►座学＋演習を交互に行っていくスタイルで進めていきます►

演習はこちらがご用意したCoursewareHubに対して、あらかじめお送りしたアカウント情報でログインしていただく形で実施します►

操作上のトラブル・質問はSlackチャンネル #2021_cloud にお願いします►

スタッフがサポートさせていただきます►

必要に応じて、スクリーンショットなどをお願いする場合があります演習環境への接続確認►

演習環境は以下のURLにご用意しています►►

https://Webブラウザで https:// を開くと、Eメールアドレスとパスワードを入力するフィールドが表示されますので、►Eメールアドレス►

パスワードは対応するもの

でSign Inしてください。
それぞれ teacher と student の2種類のアカウントがあり、基礎編では student を利用しますので間違えないようにしてください)受講者(student)アカウントの動作確認►

ensyuXX.ipynb というファイルがあれば受講者(student)アカウントでログインできています

基礎編

基礎編の内容►

Jupyter Notebookとは – どんなもの？ / できることは？

►(演習)Jupyter Notebook操作の基本操作を体験►

Jupyter Notebookと関連ツール – matplotlib, pandas►(演習)Jupyter Notebookで図や表の処理を体験►

Jupyter Notebookとドキュメンテーション – Markdown事始めJupyter Notebookとは►ジュピター あるいは ジュパイター(Julia + Python + R) ノートブック►

Webベースのインタラクティブなユーザインタフェース + スクリプト実行環境►

多種のスクリプトを利用可能►

Python

►

R►

Julia

►

Perl

►

PHP

►

他にも: https://github.com/jupyter/jupyter/wiki/Jupyter-kernels

オープンソースソフトウェア►

多くの開発者により活発に開発が進められている►

Jupyter Notebookを利用したサービスも増えてきている►

Google Colab(Google Colaboratory)►

Microsoft Azure Machine LearningJupyter Notebookのユーザインタフェース►

ブラウザウィンドウを表示し、ログインしたCoursewareHub画面を見てみましょう►

ファイル一覧画面 – 利用者がファイルを開いたり、ファイルを作成したりするために利用します

フォルダファイル

Jupyter Notebookファイルを開く►

拡張子 .ipynb を持つファイル = Jupyter NotebookあるいはNotebookファイル
拡張子►

ensyu02a.ipynb のファイル名部分(リンク)をクリックしてみましょう►

Notebook画面が表示されれば成功

Notebook画面►►►

Notebook画面

メニュー
ショートカットセル►

Notebookはセル(Cell)の集まり►

セルには種類があるセル►

コード(Code)セルセル►

マークダウン(Markdown)セル►… 他にもコードセル►

実行可能なスクリプトを記述可能►

今回のセミナーでは Python を使用

マークダウンセル►

説明文を記述可能

セルセルセルスクリプトの実行モデル►

Jupyter Notebookに置いてスクリプトがどのように実行されるか？

►Jupyter Notebookにおける逐次実行►

インタープリタのことを Jupyter Notebookでは カーネル(Kernel) と呼ぶ

スクリプトの一括実行

Jupyter Notebookの逐次実行

利用者

利用者

ソース
コード

Notebook参照

実行結果

コマンド

インタープリタ
Python

インタープリタ
iPython

CPU

CPU

保存
ファイル

スクリプトの実行►

ブラウザで開いた ensyu02a.ipynb の最初のコードセルを実行してみましょう

2. Run ボタンを押す

1. 実行したいコードセルをクリックし、セルを選択状態にする

3. 計算結果が出力される

スクリプトの実行 - 何が起きたのか？
►利用者のコンピュータ と Jupyter Notebookサーバ それぞれの関係►

Jupyter Notebookのメリット►

利用者はWebブラウザだけあればOK = 演習における環境設定にまつわる問題を回避
利用者

利用者のコンピュータ(特にWebブラウザ)

Notebook

実行結果

コマンド

インタープリタ
iPython

CPU

保存
ファイル

Jupyter Notebookサーバ

Notebook画面での操作►

セルの編集
1. 編集したいセルをクリックし、セルを選択状態にする
2. キーボードを使ってセルの内容を編集する►

編集・実行経過の保存►

最新の編集・実行経過はWebブラウザで保持され、適当なタイミングでJupyter Notebookサーバに対して変更が送信される►

予期せぬWebブラウザのクラッシュ等で最新の編集内容が失われることがあるので注意

フロッピーアイコンまたはFileメニューのSave and Checkpointをクリックする(直前に保存したバージョンへは、FileメニューのRevert to Checkpointで戻ることができる)

(演習)Jupyter Notebook操作の基本操作を体験►

生徒アカウント でCoursewareHubにログインした状態で、ensyu02a, ensyu03a
Notebookをできるだけ多く実行してみましょう (20分)►

午前中ご講演いただいた室蘭工大 桑田先生の講義で利用されているコンテンツです！

►説明を読みながら進めてみてください►余裕があれば、ensyu04以降を試してみてくださいリッチなコンテンツ: matplotlibとpandas►

Jupyter Notebookではテキストだけでなく、図や表も扱える►►

Matplotlib►►

CoursewareHub自体も図や表を活用… 簡単に紹介

グラフ描画Pandas►

表操作・表の画面表示

Matplotlibとは►Pythonで利用可能な可視化のためのライブラリ►

データ分析のデファクトスタンダード►►

数値計算ライブラリ numpy と組み合わせさまざまなデータ可視化が可能

静的な出力とインタラクティブな出力►ex.) 静的 … 2次元のグラフ画像を出力する, 動的 … 3次元のグラフ画像をマウスで視点操作し様々な角度から眺める►

今回は静的な出力について紹介

Matplotlibの使い方►►

基本的な手順►ライブラリのインポート►

Figureの生成►

Figure内にPlotを作っていく►

詳しくは演習Notebookで…

より深く知りたい方は… Usage Guide
https://matplotlib.org/stable/tutorials/introductory/usage.html►→Usage Guide自体がJupyter Notebook形式で書かれている！

Pandasとは►Pythonで利用可能なデータ分析・操作ライブラリ►►

特に、数表・時系列データ操作のためのデータ構造と演算機能

表形式で出力・確認を行う場面のために簡単に紹介

Pandasの使い方►►

基本的な手順►ライブラリのインポート

►

表の作成

►

表の操作

►

表の出力 … 画面表示・ファイル出力

より深く知りたい方は… User Guide
https://pandas.pydata.org/docs/user_guide/10min.html►

こちらはiPython形式！

(演習)Jupyter Notebookで図や表の処理を体験►

生徒アカウント でCoursewareHubにログインした状態で、ensyu09a,ensyu09ex_sample_COVID-19.ipynb をできるだけ多く実行してみましょう (20分)►

説明を読みながら進めてみてくださいドキュメントとしてのJupyter Notebook►

Jupyter Notebookは 説明 と コード 両方が記述できる►

説明 の記述 … Markdownを利用►

Markdown►

プレーンテキスト(Wordのような色・形状・図のような書式情報を含まない)形式により、書式付きの文書を記述できる►ex.) **太字** → 太字►►

アスタリスク(*)2つのセットで文字列を囲む→その文字列を太字にすると解釈される

Jupyter NotebookにおけるMarkdown►

Markdownには多くの方言►

Jupyter Notebookが準拠しているのは: https://daringfireball.net/projects/markdown/Markdownの例►ensyu02a.ipynb 4 変数 の例
画面出力

ダブルクリックでMarkdownテキスト編集モードにMarkdown### 変数とその命名規則
計算に利用する数字や文字列などを格納する記憶場所を「変数」と呼びます。
変数は自由に名前をつけることができますが、以下の規則があります。

1. アルファベット、数字、下線（アンダースコア）を利用する
1. 最初の一文字はかならずアルファベット
1. アルファベットの大文字と小文字は区別される
1. and, not, if, forなどのpythonの予約後は使えない
正しい例：- `abc`- `no_2`- `x2____xyz`
誤りの例：- `2a`- `no.2`- `for`注意：
Pythonでは日本語の変数名も使えるが、本授業では混乱をさけるため使わないこと。

RunでレンダリングMarkdownの主な記法
機能

記述例

表示例

ヘッダ1(大見出し)# はじめにはじめにヘッダ2(中見出し)## 式の評価

式の評価

ヘッダ3(小見出し)### 関数の値

関数の値

ボールド

**注意点**

注意点

イタリック

*Italic*

Italic

取り消し~~取り消し~~

取り消し

リンク

[HP](www.nii.ac.jp)

HPリスト

- 項目1
- 項目2

••

番号付きリスト

1. 項目1
1. 項目2

1. 項目1
2. 項目2引用> 引用文
> 引用文

引用文
引用文

項目1
項目2

画像の貼りこみ
►

2つの方法
►

Notebookファイル外の画像ファイルを参照する►

Notebookファイル内に画像ファイルを埋め込むNotebook外の画像ファイルを参照する►

画像ファイルをアップロードする

1. 適切なフォルダに画像ファイルをアップロード(*)する►►(*)ファイルのアップロードは、一覧部分にファイルをドラッグ＆ドロップするか、Uploadボタンで実行可能

マークダウンセルから画像ファイルを参照する►

画像ファイルを参照するには、 ![画像タイトル](画像ファイルへの相対パス)
最初はリストfirstにジョーカー"J"が含まれているか、次の線形探索アルゴリズムを使用して調べます。
![フローチャート](fig_09_032.png)

Jupyter Notebook内の画像の登録・参照►

マークダウンセルに画像ファイルをドラッグ＆ドロップする

画像ファイルを エクスプローラー(Windows)/Finder(Mac) 等からドラッグ＆ドロップ►

画像ファイルはマークダウンセルに添付される►画像データは .ipynb ファイル内に保持される►

Cell Toolbar > Attachments メニューで内容確認可能

やってみよう►Jupyter Notebookを新規作成►

Markdownセルを作成►

見出し、本文の記述 … 適当な画像ファイルを含められると良いJupyter Notebookを新規作成►

新規にNotebookを作成し、Markdownセルを作成してみましょう►

ファイル一覧の Newボタン > Python 3 を選択することで、新規Notebookを作成できます1. Newボタンをクリックする

2. Python 3をクリックするJupyter Notebookを新規作成►

Webブラウザの別タブで Untitled という名前のNotebookが開きますので、Notebook名を変更しましょう►

Notebook名は「Markdown演習」としてください
1. Notebook名(Untitled) をクリックする

2. Rename Notebookダイアログが開くので、Notebook名を入力する
3. Renameボタンをクリックするマークダウンセルを作成►

初期状態ではコードセルが1つだけあるので、これをマークダウンセルに変更
してみましょう

1. セル タイプ(Code) ドロップダウン をクリックする

2. Markdownを選択する見出し・本文の記述►

自由にMarkdownを記述し、書式がどのように表示されるかを見てみましょう►

Runで書式付きテキストとして表示した後は、ダブルクリックで再編集できます

1. Markdownを記述する

2. RunボタンでMarkdownを書式付きテキストとして表示させる

基礎編のまとめ►CoursewareHub固有の操作に入る前に、Jupyter Notebookの操作を体験いただきました►

応用編では、CoursewareHub固有の機能について説明し、実際に操作を体験していただきます応用編

応用編の内容►

CoursewareHubの概要►(演習)先生としてログインしてみよう►

CoursewareHubにおける環境管理 - Jupyter NotebookとLinux操作►(演習)Jupyter Notebookとコマンド操作を体験►

CoursewareHubワークフローの説明►(演習)CoursewareHubワークフローの体験 – コンテンツ配布

CoursewareHubの概要►

CoursewareHub = JupyterHub + 講義のためのモジュール群►

JupyterHub … 複数のユーザーを収容可能なJupyter Notebook環境►基礎編 では 皆さんの環境は互いに別々のものとして見えていたCoursewareHubの機能
1.

Jupyter Notebook を用いた講義演習を行うための環境です2.

受講生はWebブラウザ経由で受講することができます3.

講師はNotebook教材を、Webブラウザ経由で作成することができます4.

講師はNotebook教材で利用するアプリをCoursewareHub上に登録することができます5.

受講生を登録、教材を配布(講義途中で更新)、演習の回答を回収するなどの演習実施のための ワークフローをサポートしています6.

受講生の作業履歴、演習実施履歴を収集することができます7.

受講生が演習環境に高負荷をかけるような行為を防止し、安定稼働させることができます8.

受講生の認証に「学認」(Shibboleth) および LTI を利用することができます

Jupyter Notebook/
JupyterHubにより基本機能を実現

CoursewareHubにより拡張強力なデータ集約・配信機能
1.

Jupyter Notebook を用いた講義演習を行うための環境です2.

受講生はWebブラウザ経由で受講することができます3.

講師はNotebook教材を、Webブラウザ経由で作成することができます4.

講師はNotebook教材で利用するアプリをCoursewareHub上に登録することができます5.

受講生を登録、教材を配布(講義途中で更新)、演習の回答を回収するなどの演習実施のための ワークフローをサポートしています6.

受講生の作業履歴、演習実施履歴を収集することができます7.

受講生が演習環境に高負荷をかけるような行為を防止し、安定稼働させることができます8.

受講生の認証に「学認」(Shibboleth) および LTI を利用することができます講師と受講者のロール(役割)►

本家JupyterHub … 管理者権限のあり/なし►

CoursewareHub … 受講者 / 講師 (ロール) + 任意のグループ►講師には講義運営に必要なツールをNotebookとして提供►

講師が自身独自のツールをNotebookとして定義し、利用することも可能強力なデータ集約・配信機能
1.

Jupyter Notebook を用いた講義演習を行うための環境です2.

受講生はWebブラウザ経由で受講することができます3.

講師はNotebook教材を、Webブラウザ経由で作成することができます4.

講師はNotebook教材で利用するアプリをCoursewareHub上に登録することができます5.

受講生を登録、教材を配布(講義途中で更新)、演習の回答を回収するなどの演習実施のための ワークフローをサポートしています6.

受講生の作業履歴、演習実施履歴を収集することができます7.

受講生が演習環境に高負荷をかけるような行為を防止し、安定稼働させることができます8.

受講生の認証に「学認」(Shibboleth) および LTI を利用することができますライブラリ・アプリケーションのカスタマイズ►

利用者へのインタフェースとなる Jupyter Notebook サーバー は Dockerイメージ により定義可能

►例えば…
►

データサイエンスの講義 … numpy, scipy に加えて Keras や特定の分析に特化したライブラリをプリインストール►

プログラミングの講義 … Pythonに加えてProcessing等他のプログラミング言語の実行環境をプリインストール

強力なデータ集約・配信機能►教材の配布

►実行結果の収集►

後ほど、CoursewareHubワークフローとして体験していただきます作業履歴・演習実施履歴の収集►►

例: 進捗の可視化
実は…基礎編ではスタッフが講師として皆さんの進捗を集約・確認していました安定稼働のためのリソース制御
1.

Jupyter Notebook を用いた講義演習を行うための環境です2.

受講生はWebブラウザ経由で受講することができます3.

講師はNotebook教材を、Webブラウザ経由で作成することができます4.

講師はNotebook教材で利用するアプリをCoursewareHub上に登録することができます5.

受講生を登録、教材を配布(講義途中で更新)、演習の回答を回収するなどの演習実施のための ワークフローをサポートしています6.

受講生の作業履歴、演習実施履歴を収集することができます7.

受講生が演習環境に高負荷をかけるような行為を防止し、安定稼働させることができます8.

受講生の認証に「学認」(Shibboleth) および LTI を利用することができます安定稼働のためのリソース制御►ex.) Fork爆弾►

学生一人あたりの環境で利用可能なメモリサイズ・CPUサイズを制限►►

一人の学生のミス・悪ふざけで環境全体が機能不全に陥らないように学生の環境の生存期間の制御►

しばらく使用されていないJupyter Notebookサーバの停止►

大規模・複数クラス(200名~)の講義におけるリソース有効利用が可能既存システムとの連携性
1.

Jupyter Notebook を用いた講義演習を行うための環境です2.

受講生はWebブラウザ経由で受講することができます3.

講師はNotebook教材を、Webブラウザ経由で作成することができます4.

講師はNotebook教材で利用するアプリをCoursewareHub上に登録することができます5.

受講生を登録、教材を配布(講義途中で更新)、演習の回答を回収するなどの演習実施のための ワークフローをサポートしています6.

受講生の作業履歴、演習実施履歴を収集することができます7.

受講生が演習環境に高負荷をかけるような行為を防止し、安定稼働させることができます8.

受講生の認証に「学認」(Shibboleth) および LTI を利用することができます既存システムとの連携性►

学認(Single Sign-On)を使った認証►►

学認クラウドゲートウェイサービスを利用した認可

LMS(Moodle, Sakai, …)との連携►

LMSの特定コースの受講者のみが利用可能なJupyterHub環境が実現可能

提供形態
►

ソースコード・構築資材はOSSとして提供►

計算機環境は利用者が準備する►学認クラウドオンデマンド構築サービスを使って構築►

オンプレミス環境に構築するJupyter Notebookサービスとの比較►

Google ColabはSaaSとして提供… 利用しやすいので比較►

Google Colabは無償利用可能、環境のセットアップが不要なものの…
機能Google ColabCoursewareHub講義に特化したライブラ △(Notebookにてインストールコマンドを記述)
リの導入

○

教材の配布

○△
(Google Drive経由)

受講生の作業履歴、演習 △(Google Drive経由)
実施履歴の収集
安定稼働

○

○
○

(ただし同時に1Notebookのみが実行可能: 無償プランの場合)

認証連携

×(Googleアカウントでの認証のみ)○

(演習)先生アカウントでログイン・環境確認►►講師アカウントを体感してみましょう (20min)
提供した講師アカウント (メールアドレスが c{受講者番号:01〜10}teacher@nb12.ecloud.nii.ac.jp) でログインしてみましょう►►

講師アカウントでログインする前に、(すでに受講者(student)アカウントでログインしているはずなので)Logoutをすることホームディレクトリ配下にadmin_tools フォルダがあるのが講師アカウント画面です(演習)講師の機能確認►►

講師アカウントで Admin画面を開き、生徒アカウントになってみましょう
Control Panel ボタンをクリックし、Admin画面を開く1. Control Panelをクリックする
2. Adminをクリックする

(演習)受講者アカウントへの変更►►

講師アカウンから受講者アカウントの状況を確認してみましょう
ユーザ名に student が含まれているのが受講者アカウント
1. access serverをクリックする(access serverが表示されていない場合はstart serverをクリックする)

2. Authorizeボタンをクリックする

CoursewareHubにおける環境管理 Jupyter NotebookとLinux操作►

CoursewareHubにおける環境管理はNotebookで実現►

対象は Linux(CentOS 7) ベースの環境 – この操作を体験Jupyter NotebookからLinuxコマンドを実行►►

Jupyter Notebookでは、コードセルの先頭に ! を記載するとコマンド文字列を実行することができる{変数名} で変数展開される – iPythonのルール

Jupyter Notebookが提供するTerminal►

Jupyter NotebookからTerminalを開き、コマンド操作をすることができる
1. New ドロップダウンの Terminal をクリックする

2. Terminalが開く

(演習)Jupyter Notebookとコマンド操作を体験►►

講師アカウントから受講者アカウントの情報を確認してみましょう(15min)
Terminalに入る→ ユーザディレクトリ中の .log ディレクトリを確認する# 全ユーザ情報を格納したディレクトリに移動する$ cd /home/jupyter/workspace/# ユーザの一覧を確認する$ ls# ログが格納されているディレクトリに移動する$ cd satoshiyazawastudentx6c62e6/.log# ログディレクトリの一覧を確認する$ ls►

時間がある人は、►►受講者アカウントで同じことができるか確認する
同じことをNotebookでやってみるCoursewareHubワークフローの説明
►►
►

教材の配布
演習状況の把握課題回答の集約

(演習)CoursewareHubワークフローの体
験 – コンテンツ配布►

それぞれ独自の教材Notebookを作成して、他の皆さんに配布してみましょう(残り時間)►►►►教材Notebookの作成・配布手順
►►
►
►
►

►

Notebookファイル名は t{受講者番号:01〜10}_{演習タイトル} とします
1人で複数のNotebookを作っても構いません
内容が思いつかなければ、本日の感想のようなMarkdownテキストや、演習で実施したコードをアレンジしたものでも構いません
講師アカウントで、ホームディレクトリ配下 textbook フォルダをクリック
Newメニュー > Python3 を選択し、新規Notebookを作る
Notebookのファイル名を適当なものに変更する
セルを追加、適当なものを記述する
ホームディレクトリ配下 admin_tools/10_ReleaseMaterials.ipynb を開き、実行する配布された教材Notebookの確認手順►►

受講者アカウントで、ホームディレクトリ配下 tools フォルダをクリック
10_AcquireMaterials.ipynb を開き、実行する►►講師から配布されたNotebookが受講者アカウントのホームディレクトリに現れる

時間がある人は…
►►

講師アカウントで admin_tools/90_ログ可視化.ipynb を実行してみましょう
何が見えるでしょうか？

応用編のまとめ►CoursewareHubの提供する機能について説明し、実際に体験いただきました►

CoursewareHubがどのような思想で講義支援機能を実現しているかの一端を感じていただけたかなと思います