2016年12月30日金曜日

2016/12/29(木) シラバス案の作成

●新学科Webサイトの準備
★コンテンツの更新
続きlogical_jp_baser のFAQに従って、トップページの topSummary 部分の post を3個以上にできるように home.css を修正した。

★管理・運用方針の検討
続きWiki に書いておいたカテゴリ構成および運用方針の案について、これまでのコンテンツ更新によるカテゴリの統廃合を反映させた新しい案を追記した。

●会誌の編集
校正の続き。As先生からメールで、校正結果のPDFファイルを OneDrive の共有フォルダに置いた旨の連絡があったので、そのPDFファイルにざっと目を通した。

●研究倫理eラーニング
続き。完了。

●電子錠登録・登録抹消
12/26(月)に教務部のNさんから学生証再発行の連絡が来ていたのをようやく処理した。

●2017年度シラバス案の作成
★lt
これまでに作った授業計画を、12/14(水)の学部の会議で連絡のあったシラバス作成上の注意事項にもとづいて改訂した。Dropbox にコピーを置いた。
この授業計画に従って K'sLife にシラバス案を入力し、そのPDF版を関係の先生方にMLを通じて送付して、点検を求めた。未完了。

★sw
今年度のシラバスを、12/14(水)の学部の会議で連絡のあったシラバス作成上の注意事項にもとづいて改訂し、そのPDF版をG先生にMLを通じて送付して、点検を求めた。未完了。

★da1, da3
今年度のシラバスをそのまま流用する。念のため関係の先生方にMLを通じて送付して、点検を求めた。未完了。

2016年12月29日木曜日

2016/12/28(水) 新学科Webサイトの準備

●新学科Webサイトの準備
続き。他にも仕事はあるが、今はこれが気になって仕方がないのでいっそ落ち着くところまでまとめてやってしまうことにした。

★メール送信機能のテスト
「お問い合わせ」ページについて、メニューから撤去はしたがページ自体の状態は公開のままであった。このページからちゃんと問い合わせができるかどうか試した。
まず、管理者のメールアドレスが自分自身のものであること、問い合わせ内容の送信先が管理者のメールアドレスになっていることを確認した。
次に、「お問い合わせ」ページのフォームに記入して送信ボタンを押した。Webブラウザにエラーメッセージなどは特に表示されなかったが、管理者のメールアドレスには何のメッセージも届かなかった。
baserCMS の管理システム内にはメッセージが残っていたが、これでは管理者が自発的に見ようとしない限りいつまでも問い合わせ内容は見つからない。「お問い合わせ」ページは非公開にすることにした。

★コンテンツの更新
「このサイトについて」のページに、問い合わせ先としてホームページ委員会MLのアドレスを表示した。
baserCMS 管理システム内でページ名の変更やカテゴリの統廃合を行った。あるカテゴリの index にはページ一覧を自動生成するPHPコードを記述した。サイトマップを整備した。
トップページ上部のバナーや、トップページ中央のトピックスを、それぞれPHPの配列で管理することにして、これらの配列をもとにHTMLコードを出力するためのPHPコードを記述した。
トピックスのページや会誌のページを改訂して公開状態にした。昨年度の会誌はもともとWebに公開されていなかったので、昨年度の編集委員の先生方にメールでインデックスとPDFファイルの準備について依頼した。
Uploader に残っている邪魔データを DELETE 文で一括削除した。その他、サイト全体にわたり細々とした改修作業を行った。

まだ過去のトピックスの復旧作業が終わっていないが、とりあえず年越しができる状態にはなったのではないか。結構がんばった。

●会誌の編集
今年度の会誌の目次に基づいてWebページを作った。このページは単なるインデックスであり、リンク先に会誌の各記事のPDFファイルが必要である。その旨をAs先生にメールで連絡した。

●研究倫理eラーニング
続き。75%まで。未完了。

●導入2 面談処理
12/26(月)に受講者1名と行った面談の内容を整理し、概要をK'sLifeに所見として記録した。
また、この受講者の希望進路に役立つ資格について調べた。

●その他
OBのKaくんが訪ねてきたので、一緒にお土産のお菓子を食べながらお茶を飲んだ。

2016年12月28日水曜日

2016/12/27(火) 研究室内Wikiの更新

この1週間ほどはやるべきことが多いためにずっと自室に缶詰めになっているが、今日はあまりはかどらなかった。そろそろ限界かもしれない。


●研究室内Wikiの更新
先日卒研実験用サーバ dusk (CentOS 7)で baserCMS 4.0.1 と WordPress 4.6.1 のインストールを試した。これについて研究室内Wikiに記録を残しておけば、研究テーマに CMS との関連がある卒研生の役に立つかもしれないと考えた。
今年はOhくん、Okくん、Muくんの3名がPukiWiki を使うテーマで卒業論文を執筆中であるので、関連技術として CMS にも触れるよう指導しているが、これまでのところあまり具体的なことは書けていないようである。
PukiWiki, baserCMS, WordPress に concrete5 (後述)を加え、これら四つのWebアプリケーションを dusk ないし dawn に導入するときの手順を研究室内 Wiki に追記した。卒研生が卒論執筆の際にちゃんと研究室内Wikiを見るようにしていれば、この追記にも気付くであろう。

●卒業研究の指導
CMS (前述)をもう一つくらい増やしておこうと考えた。探したところ concrete5 が良いようであるので、concrete5 7.5.13 を dusk にインストールして動かした。特に問題は無かった。若干動作が鈍重に感じるのは dusk が非力であるせいもあろう(VMware の仮想マシンを ProLiant MicroServer N54L で動かしている)が、GUI で簡単にページを編集できるのは非常に便利であると感じた。

●図書購入
年明けに学内の書店に注文するため、メモを作った。

●新学科Webサイトの準備
★コンテンツの更新
続き。新しいページやカテゴリを作ることはしなかったが、すでにあるページの間でリンクを張ったり、教職員紹介ページには各教員の研究分野を追記したり(なぜ今まで無かったのであろう)、このページのカテゴリを変更したりした。

2016/12/26(月) 導入2, PB演習 授業実施

午前中に一時的に帰宅し、シャワーを浴びた。


●導入2 授業準備
昨年度のこの時期と同様に出席への意識に関するアンケート調査を行うため、アンケート用紙を準備した。昨年度版を改訂し、調査結果の使途などについての注意書きを用紙の先頭にくっつけた。この用紙のハードコピーを受講者の人数分だけ作った。

●物品購入
12/20(火)注文分が届いた。Amazon の領収書と納品書を学部事務室に提出したが、あとでメールで納品書は別の商品のものであることについて指摘を受けた。これに代わるものとして発送通知を用意したが、これの提出は年明けになる。

●学部再編に伴う演習室等の移転
4F演習室にある戸棚のうち鍵のかかるものについては鍵がかかっていないことを確認した。

●導入2 授業実施
3限目に第14回を実施した。出席12名、欠席1名
最初の20分間程度はコース分けの説明会のため受講者がいなかったので、その間に前述のアンケート用紙に各受講者の出席率等の数値を書き込んでおいた。
受講者が演習室に来てからは、まず著作権について注意を促すために引用のルールに関する簡単な説明を行った。次にコース分け調査についてあらためて説明し、調査用紙を配った。次に前述のアンケート用紙を配った。

そのうえで動画作品制作演習の続きに取り組ませた。演習と並行して受講者1名と面談を行った。これで受講者全員との個別面談を終えた。面談の内容は未整理

●PB演習 授業実施
4限目・5限目の第14回に顧客役として参加した。
ある班の再検収と再々検収を担当した。多少の問題もあったが、全体としてはちゃんと動くシステムを完成させたのは良かった。
終了ミーティングは実施されなかった。

●新学科Webサイトの準備
★管理・運用方針の検討
続き。PB演習の合間にIn先生と話す機会があったので、検討中の管理・運用方針について話してみた。その場で詳細な検討をしたわけではないが、肯定的な反応を貰った。

カテゴリ構成について aurora で実際に変更を加えながら検討した。最初に思っていたよりカテゴリを減らしてスッキリさせることができそうである。
 ★コンテンツの更新
「お問い合わせ」のページをメニューから除去した。そもそもこのページがちゃんと動くのかどうかテストしていない。問い合わせ先は近日中に別のページに掲載する。

画像ファイルは旧サイトからまだ移行し終えていない。旧サイトのサーバ内部に直接アクセスすることはできないので、必要な画像があればまずWebブラウザで旧サイトに表示されるものをドラッグ・アンド・ドロップで取り、次に新サイトのプラグイン Uploader に放り込んで、そのURLを新サイトのページに貼りつけ直すという手順を踏んでいる。
旧サイトのページデータを新サイトに移行した際に、Uploader についても画像ファイルのメタデータのみが新サイトに移行されたので、これらのデータはむしろ邪魔になっている。これらを一括削除する方法について検討した。aurora で試したところ、phpMyAdmin で DELETE 文を実行するという方法でうまくいきそうであることが判った。もうしばらく aurora の動作を確認したうえで本番サイトでも実行する。

●卒業研究の指導(卒論執筆指導)
Koくんから研究成果の説明の仕方について説明を受けた。難がなくはないが、それ以上に妙案があるわけでもなかったので了承した。

Ohくんの卒業論文の第2稿を添削した。
これまで指摘・指導したことについて直っている部分もあったが直っていない部分も少なくなかった。それらをあらためて直すようこと、背景・問題の説明の仕方を修正すること、関連技術をきちんと説明すること、システムの実行結果を示す前に自身が実際にやったことを記述するべきことなどを指導した。
その一方で、もはや取り組み態度の問題点がこれより改善されるとは思えなかったので、次の原稿修正を提出用にすればいいこと、発表練習もリハーサルの1回だけで良いことなどを伝えた。

昨年まではなんだかんだあっても極力学生を見捨てず卒業まできちんと指導する努力をしてきた。今年度は私の気力が続かなくなったのか、それとも研究室の人気がさらに下がったせいで配属される学生の水準が一段と低下したのか、どうしようもなく指導に行き詰まりを感じて私のほうから音をあげてあきらめることが続いている。今回のOhくんの場合は不合格にしたわけではないが、この調子では退職するより前にパワハラで訴えられてクビになる日も近いのではないか。

2016/12/25(日) 新学科Webサイトの準備

●システム運用室 業務
As先生からメールで、貸与ノートPCのプリンタ利用に関するWebページの改訂案について確認依頼の連絡があったので点検し、As先生へ返信した。
まず、プリンタ室への入室可能時間帯を電子錠管理PCで確認したうえで、この時間帯について追記することを提案した。これと併せて、Webページ案のリンク切れ箇所について指摘した。このうちPC使用の手引きについては春にS社から貰ったWordファイルをもとにPDFファイルを生成してWebサーバに置いておいた。その他についてもURL案を添えた。

●研究倫理eラーニング
続き。46%まで。未完了。

●学生への修学指導
自分がクラス担任になっている学生に宛てて、明日12/26(月)まで大学の授業実施日であることをK'sLifeを通じて連絡した。

●新学科Webサイトの準備
★コンテンツの更新
続き。N先生から画像の利用について許可する旨の回答があった。In先生の撮影した別の画像についてはすでに許可を得ているので、PB演習のページを本番サイトにも投入した。
また、今後のカテゴリ構成や 管理・運用方針を検討し、Wikiに書き出してみた。しばらく寝かせる。これについてはIn先生のご意見も聞いておきたい。
運用方針と併せてインデックスを自動生成する方法について検討した。どうやら baserCMS では固定ページにおいても関数を使えばページの一覧を作ることができるようである。

(1) 運用方針として、固定ページのカテゴリの一つにおいては各ページの名前に yymmdd 形式の日付を入れることにする。例えば 161225_myname_keyword という名前にする(この名前はURLの一部になるがページ内には表示されない。ページに実際に表示されるのはタイトルである)。
(2) このカテゴリに index というページを作る。編集するときにはソースモードを選択する。
(3) このカテゴリ内の各ページを日付の逆順に整列するPHPコードを、index のソースの中に記述する。
<ul><?php
$cat = $this->BcPage->getCategory();
$ret = $this->BcPage->getPageList($cat['id']);
arsort($ret['pages']);
foreach($ret['pages'] as $pdata){
  $p = $pdata['Page'];
  //print_r($p);
  if(preg_match('/^(\\d\\d)(\\d\\d)(\\d\\d)_.*$/', $p['name'], $matches)){
    $y = $matches[1] + 2000;
    $m = $matches[2];
    $d = $matches[3];
    echo '<li>';
    echo "{$y}/{$m}/{$d}: ";
    echo '<a href="' . $p['url'] . '">' . $p['title'] . '</a>';
    echo '</li>';
  }
}
?>
</ul>

●演習2 授業処理
Miくんへの指導の顛末に関する記録を整理した。また、その概要をK'sLifeに所見として記録した。そのうち私自身のパワハラの証拠の一つとして使われる日が来るかもしれない。

●土日でわかるPHPプログラミング教室
図書館から借りた書籍のうち1冊はFuelPHPによるサイト構築を2日間程度でやってしまうという趣旨のものであった。学生への指導に役立つかもしれないと考え、先日別の書籍に続きこの書籍も通読することにした。

この書籍の記載に従うなら Windows PC に VirtualBox や Git をインストールして使うことになる。さしあたりH28年度貸与ノートPC保守機を使った。まず書籍のサポートサイトから所定のファイルをダウンロードし、VirtualBox をインストールしたところ、これが起動しなかった。最初のインストールでつまずいた。
仕方がないので検討したところ、単に卒研実験用サーバ dusk (CentOS 7)に FuelPHP 1.7 と Bootstrap の small-business を置けば済むことが判った。

途中まで(あまりに簡単なところは適当に飛ばしながら)この書籍に沿ってやってみた。しかし、データベースと接続するくだりの少し手前あたりから先へ進むのをやめてしまった。正直言って、これを自分のところの学生に読ませても、学生が2日間程度で作業を終えられるとはとても思えなかった。

自分個人の FuelPHP 体験のためにはやっておいたほうが良いかもしれないが、それなら最近 baserCMS を使っている関係上 CakePHP を勉強するほうが良いであろう。もともと個人的にはこの種のフレームワークはあまり使わないし、使うことを求められることもない。

●その他
予定忘れの対策として、OneNote で管理しているTo-Doリストの最初に毎日「当日の予定を確認」という項目を入れるようにした。

2016年12月25日日曜日

2016/12/24(土) 新学科Webサイトの準備、卒業研究の指導

●新学科Webサイトの準備
★サーバの準備
CNC から DNS への登録が完了した旨の連絡を受け取った。このWebサーバは学外からも FQDN でアクセスできるようになった。これを以ってWebサイトの公開ということで、MLを通じて学部の先生方にURLを添えて連絡した。

★コンテンツの更新
続き。トップページの改良、カテゴリ構成の見直し、会誌のページやトピックスの整備、PB演習のページの改訂、画像の差し替えなどを行った。Ta先生から著作権表示の不具合について指摘を受けたので修正した。他にもあちこちが気になって仕方ないが、細部をいじり始めるとキリがなくなって他の仕事が止まってしまう。

バックアップをとり、ついでに準備作業用に baserCMS を入れて使っていた aurora を新学科Webサイトとなるだけ同じ状態にして、新しいコンテンツの試験投入ができるようにした。PB演習のページの改訂版を、トップページからリンクした状態にしてみた。トップページがいくらかにぎやかになり、学科としてもセールスポイントを強調した状態になるので良いように思う。これに伴いIn先生の画像のほかにN先生の授業風景の画像も入れたので、両先生の許可をとるまでは本番投入はできない。

★その他
旧サイトのトップページから新サイトへのリンクを張った。その旨をメールで関係の先生方に連絡した。

●卒業研究の指導
★卒論執筆指導
Okくんの卒論第2稿を受け取った。その場で原稿を点検しながら修正方針を指導し、原稿はそのまま返却した。彼も執筆要領はきちんと読んでいなかったようであるが、第2稿であることもあってかOhくんの第1稿ほどには見苦しくなかった。年明けの第3稿ではもっとまともな原稿を出してくれることを望む。

●基礎演習2 授業処理
Ab先生からメールで評価結果の入ったExcelファイルを受け取った。これで、同じクラスを担当している教員4名のうちIc先生、Ab先生、自分の3名の評価結果が揃った。あとはAp先生の宿題の結果を待ち、もし何らかの救済措置が必要であればそれについて検討することになるが、ここまでの結果に基づいて見積もったところではそういう措置を要する可能性は低いようであった。一応その旨をメールで返信しておいた。

●演習2 授業準備
★サンプルコード集の改訂
続き。最近受講者に取り組ませている演習課題3ではデータベースへのクエリの書き方が最大の要点である。そのヒントとして作例をサンプルコード集に載せてある。12/21(水)にSaiくんに助言したときに、この作例のどの部分を見ればヒントがあるのかが分かりづらいということに気付いたので、これを解決するための作業を行った。
まず、作例のPHPスクリプトにおいて関数として括りだしたクエリとそうでないクエリがあったので、ヒントとして見てほしいものは関数にして一つのスクリプトにまとめた。また、このスクリプトに簡単なコメントを追加し、そのコメントがサンプルコード集の一覧表示機能によってスクリプトの見出しとして表示されるようにした。

2016/12/23(金) 新学科Webサイトの準備

14時半くらいからオフィスに。


●学生への修学指導
導入2の先週今週を欠席した受講者1名の自宅に電話し、保護者に家庭内での指導を依頼した。詳細略。

●新学科Webサイトの準備
続き。休業日であるから DNS 登録完了は明日まで無い。

★コンテンツの更新
トップページに新学部広報サイトへのリンクを入れるなど、あちこちを改訂した。旧サイトからデータを移しただけで非公開にしていたページの一部を調整して公開状態にしたり、自分で新しいページを作ったりした。会誌のページとトピックスのページは早めに公開したい。また、PB演習に関してちゃんと説明したページが無いのは良くないので、これは作った。In先生の画像をこちらに入れたので、メールで許諾を求める旨を送信した。いろいろやっているうちに朝になった。

2016年12月23日金曜日

2016/12/22(木) 冬季卒研中間発表会(遅れ)、da2 授業実施

●物品購入
昨夜用意した領収書と発送通知のハードコピーを学部事務室に提出した。

●計算機環境の整備
★ゼミナール室の共用ノートPCの保守
議事録用PC frost (TOSHIBA dynabook CX1/212CE, Lubuntu 12.04) でアップデートマネージャを実行した。
録画用PC rain (Lenovo ThinkPad X60, Windows 10 Pro) および発表用PC mist (EPSON Endeavor NY2300S, Windows 10 Home x64) で Windows Update を実行した。

★平成28年度貸与ノートPC保守機の保守
da2の授業中(後述)に時間があったのでH28貸与PC保守機で Windows Update を実行した。

●da2 授業準備
今日の第14回では模擬テストを実施する。その問題を自分でも解いてみた。また、解説用スライド資料に目を通して予習した。
スライド資料のPDF版を作った。このPDFファイルと履修者名簿それぞれのハードコピーを作った。

●冬季卒研中間発表会(遅れ)
3限目に臨時の卒研ゼミを実施した。出席5名、欠席なし。
冬季中間発表をしていないままであった2名(Ohくん、Okくん)それぞれの遅れ発表を聴いてコメントした。これで5名全員の発表が終わった。ただし、この2名はまだ卒論第2稿の添削にまで追いついていないので、これで脱落状態から戻ったわけではない。

発表のあと、Ohくんから卒論下書きの提出があった。ざっと見ただけでも執筆要領を無視したのが明らかであったのでその場で返却し、夕方までに修正するように指示した(後述)。

●da2 授業実施
4限目・5限目に第14回を実施した。
最初はいつも通りに小テストを実施し、簡単に解説した。
次に50分間を使って模擬テストを実施した。途中で1問だけヒント程度に解説した。また、後半の20分間は資料やPCを見ても良いことにした。
模擬テスト後には解説を行った。これを4限目に30分間ほど、5限目に10分間ほどで片付けてしまったので、その後は次回の期末テストについて連絡しただけで授業を終了した。

なお、小テストの答案は4限目のうちに助教のK先生に採点してもらい、5限目の開始までに返却してしまった。また、今回は演習問題はない代わりに、模擬テスト答案を回収して学習状況を点検してその結果を演習点に算入することになっていたが、回収・点検する代わりにK先生に学習状況を直接採点してもらった。

●卒業研究の指導
Ohくんが卒論下書き(前述)を再提出してきたので、その場で添削しながら口頭でも注意を与え、その上で12/26(月)までに改訂して提出するよう指示した。

Okくんにも同じ〆切を設定していると思って12/26(月)と言ったが、あとで冷静に思い出してみるとOkくんの〆切は12/24(土)であった。

●学生対応
S研のM2およびB4から個別にそれぞれの研究について相談を受けた。結局いずれにもユーザビリティ評価をするということくらいしか有効な助言はできなかった。書籍2冊を貸した。

●新学科Webサイトの準備
続き。CNCからメールで、ファイアウォール設定が完了した旨の連絡を受け取った。しかし、学外からアクセスしてみると、IPアドレスではアクセスできたものの、FQDNでアクセスしようとするとDNSから引けないようであった。
S先生に相談したところ、学部のDNSに登録してもそこからは外部に出ないこと、学外でDNSから引けるようにするにはCNCのインターネットサーバ登録申請でよいこと、今回はコノインターネットサーバ登録申請に基づくDNS登録をCNCが誤ってちゃんとやっていないことが判った。
CNCにメールでDNSの設定確認を依頼した。

●進路指導Webサイトの更新
CSCからメールで流れてきた学生支援行事の資料と、Ab先生からメールで流れてきたFUKUOKAゲームインターンシップの資料を、いずれもWebサイトに掲載した。

●da2 授業処理
小テストの受験状況に基づいてK'sLifeの出席登録データを修正した。
小テストと演習(模擬試験の解説をちゃんと聴いて学んだか)の得点を評価用Excelファイルに記録した。また、成績確認システムにも掲載した。
小テスト正解を授業用Webページに掲載した。

●その他
昼休みの理工系合同の会議を失念して、これに出席しなかった。最近昼休みの会議が多いが、予定表には入れて前の晩までは覚えていたのに当日に出席するのを忘れてすっぽかすことが3回もあった。同じミスを繰り返すのは大問題である。なんらかの対策を考える。

2016/12/21(水) 卒業研究の指導、演習2 授業実施

●新学科Webサイトの準備
昨夜用意した二つの書類を学部事務室に提出した。

●卒業研究の指導
★卒論執筆指導
昨日の指導と同様にTaくんに卒業論文の執筆要領や構成について指導した。録画はファイルサーバに置いた。

★脱落者対応(Ohくん、Okくん)
続き。Ohくんにキャッチアップ計画の立案について指導した。何度駄目出ししても満足な計画を出してこないので、ある程度のところでこちらがあきらめて、それでいいことにした。そもそもどんな計画であれ彼にはそれを実行するつもりが無いのではないか。

Okくんからも交渉を受けた。どうやらOhくんの様子を見ていなければ何の断りも無く戻ってくるつもりでいたようであった。秋季中間発表の際にも指導したことであるが、どんな事情があるにせよ重要な期日を二つも素通りしておいて何の連絡もしないなどということはありえないこと、事情があって遅れるなら早めに自分から申告するべきことについて指導した。キャッチアップ計画は一度ダメ出ししただけでそれなりのものを提出してきた。

★冬季中間発表(遅れ)に関する連絡
MLを通じて発表会の実施をあらためて連絡した。

●学部再編に伴う演習室等の移転
あらためて引っ越し先の演習室を覗いてみた。6/10(金)に覗いたときと違って室内の荷物が無くなっていたので、机の数を数えることができた。大きい机と小さい机の1台ずつを組にして3人チーム用の席を作るためには、少なくとも小さい机をあと1台は追加したい。12/20(火)に聞いた話によると今の演習室から持ってくることもできるそうであるから、そうさせてもらうつもりである。教員用の机まで用意することを考えるとさらに追加が必要であるが、問題は移転先の演習室にそれだけの机が入りきるかどうかである。これは室内に入って検討する必要がある。

●演習2 授業実施
3限目に第12回を実施した。出席6名、欠席なし。
最初に、今回が第13回と思っていたので、受講者に対しては最終回まで今回を含めてあと3回であること、最終回にはWebレポートを仕上げるために次回までに演習課題3を片付けるべきであることに注意を促した。

次に、各受講者の進捗を確認した。Miくん以外は演習課題2ないし2.5を終えて次の作業に入っていることを確認した。Sbくんは演習課題2.5までをレポートにまとめる作業をしており、そのままでは3に取り組む時間が無くなりそうであったので、レポート執筆は自分の時間にやること、今は3に着手するほうを優先することを指示した。Saiくんには3についていくつかの助言を与えたところ、この時間中に3のシステムを完成させた。

Miくんは2.5の設計を終えたということであったので、彼の作った設計資料を点検したが、実際には設計は未完成であった。
前期の演習1から今学期の演習2にいたるまで、学習の進捗が遅れっぱなしであることについて何度も注意を促し、自分の時間を使って演習課題に取り組むよう指導してきたが、このままでは前期・後期を通じて一つの演習課題をも終えることはできそうになかった。検討の末、現時点までの作業内容をWebレポートとしてまとめさせた。

●FD研修報告会
4限目の報告会に出席し、Sa先生とS先生のご報告を聴いた。

●物品購入
★物品の受領、動作の確認
12/18(日)に Amazon に注文したものがまとめて届いた。早速 Bluetooth オーディオトランスミッタ (TaoTronics TT-BA07)とレシーバ (ELECOM LBT-AVWAR700)を開梱し、トランスミッタにヘッドマイク (サンワサプライ MM-SPHM2)を接続したうえでペアリングさせてみた。
残念ながらマイクからの入力音声はレシーバから出力されなかった。マイクを他の機器に代えてもうまくいかなかった。どちらにも液晶パネルのような表示機能はなく状態に応じて点灯ないし点滅するだけであるから、どうやらペアリングできたらしいことが判るだけで、問題の判別はしがたかった。
レシーバを手元の Android タブレットとペアリングしてみたところ、これはうまくいった。トランスミッタは Android タブレットとペアリングできないようであった。 なお、TT-BA07 はレシーバとしても使えるが、今回はレシーバモードでの動作確認はしなかった。
TT-BA07 と LBT-AVWAR700 の Bluetooth のバージョンは違うようであるから、別の組み合わせでは結果も異なるかもしれない。12/20(火)に注文した別のレシーバ (August MR230B) の到着を待つ。

★清算処理
Amazon の領収書、発送通知のハードコピーを用意した。これは明日提出する。
また、購入の記録を予算管理用Excelファイルに入力した。

●C3PO合同ゼミ
S研との合同ゼミを実施した。先週12/13(火)に行われた実験の結果についての報告を受けた。今年度は3月の火の国情報シンポジウムに参加することになりそうであった。

●図書館
先月図書館に購入依頼を出し、最近配架された書籍を、図書館に行って確認した。その中で研究室でも購入したいものをメモした。また、1冊は早速試してみたく借りた。

●gw 授業準備
中国のソーシャルメディアについて調べなくてはならなかった。図書館から微博(ウェイボー)に関する書籍など3冊を借りた。

2016/12/20(火) 卒業研究の指導、計算機環境の整備

●卒業研究の指導
★卒論の添削
早起きして昼休みまでにKoくん、Muくんの卒業論文第2稿の添削を行った。
夜にTaくんの卒業論文第2稿の添削を行った。

★卒論執筆指導(Muくん、Koくん)
4限目にMuくんに対面で卒論の添削結果を見せながら執筆要領や論文構成を指導した。日付の書き方パターンを一般化して一覧表にするべきこと、正規表現についても表にするべきこと、文献調査をしっかりやるべきことなど指導することが多かった。
5限目にはKoくんに同様に指導した。ScanBmp Monkey II と WinTopo を私のPCで動かして見せながら、関連技術をしっかり調査するべきこと、彼の研究成果は結局何なのかをきちんと説明するべきことなど、こちらも指導することが多かった。
これらの指導の模様は卒研ゼミと同様に録画し、動画ファイルを研究室のファイルサーバに置いて、彼らがあとで指導内容を確認できるようにした。

★脱落者対応(Ohくん)
Ohくんが冬季中間発表および卒論執筆について交渉に来た。もうこちらから積極的に相手にすることはしないが交渉があれば応じるということは前から決めていたので対応した。
しかし、これまで何の音沙汰も無かったことについては尋ねても何の説明もせず、また卒論を自分なりに書いてきたとか発表準備はもう済んでいるとかいった交渉材料は何もなく、彼にとってのみ都合のいいお願いをしてくるだけであるから心象の悪さは否定しがたい。
キャッチアップ計画を立てるよう指導したところ、最初の計画はいい加減なもので、修正を指示したあとの計画第2版は作りっぱなしで彼自身が帰宅してしまった。研究室のファイルサーバに入っているものを見たところ、いい加減な修正しかされていなかった。

★研究室内 Wiki の更新
今後の卒研指導に関する卒業研究発表会までの日程を更新した。

★冬季中間発表(遅れ)に関する連絡
MLを通じて卒研生に対し、卒業研究発表会までの日程を連絡した。また、Ohくんの遅れ発表を12/22(木)3限目に行う可能性のあること、ただし彼がキャッチアップ計画をきちんと示していないのでこの予定は仮であることを連絡した。

●PB演習 学外への連絡
続き。隣の大学のIs先生から返信をいただいたので返信した。

●卒業研究の指導、演習2の授業準備
★サンプルコード集の改訂
続き。演習2の作例のCSSファイルを日報ブログ相互点検システムのCSSファイルに揃えた。主にタブメニュー部分の改修を行った。

●gw 授業実施
2限目に第13回を実施した。出席2名、欠席なし。
発表練習は二人ともまだできないということであったので、スライド資料を作る時間とした。

●PB演習 学生連絡
gw の受講者を通じて、PB演習の一つの班にメール送信機能の設定を変更するよう連絡した。私が提供したサンプルコードの設定を変更しないまま使っているらしく、大量のエラーメールが私のところに届いていたので、これをやめてもらった。あとでPB演習の受講者が一人謝りに来た。

●入試広報委員 業務
13:00からの会議に出席した。すぐに終わった。

●演習室等の引っ越しに関する説明会
前述の会議の次に、学部再編に伴う演習室等の移転に関する引っ越し説明会に出席した。私は4F演習室を同じ階の別の部屋に移転させなくてはならない。先週の学部の会議で聴いたときに心配したほどには手間をかけずに済みそうであるが、それでもなかなかの作業量になりそうである。
一時的な段ボール置き場に使うための部屋が決まったので、この部屋の電子錠に自分自身を含む関係の教員を登録することになった。

●物品購入
12/18(日)に続き次のものを Amazon で注文した。

・Panasonic ICレコーダ RR-US330-K
・August Bluetooth 4.2 オーディオレシーバ MR230B (aptX対応)

●計算機環境の整備
★研究室内ファイルサーバ moonlight (HP ProLiant MicroServer N54L, FreeNAS 9.10)の保守
Webブラウザでファイルサーバ moonlight の GUI にログインした時点で FreeNAS のバージョンは 9.10.1U3 か U4 くらいであった。9.10.2 へのアップデートがあるようであったので更新を実行した。しかし更新処理の途中で止まってしまった。しばらく待っても動かないので仕方なくキャンセルして再起動をかけたところ、仮想サーバ dawn や dusk からNFSでマウントしているホームディレクトリが見えなくなってしまった。 dawn, dusk を再起動しても変わらなかった。そこで、 FreeNAS を再インストールすることにした。

まず GUI で [システム]-[基本設定] の [設定のダウンロード] を使って moonlight の設定を保存した。次に FreeNAS の公式サイトからダウンロードした FreeNAS 9.10.2 の ISO イメージを、 MicroServer の Remote Access Card を使ってドライブとして接続し、 moonlight を再起動した。しかし、9.10.2 のインストーラも起動途中で止まってしまった。
念のためにハードウェア要件を確認したところ、起動ドライブの容量は最小で 8 GB であり、16 GB 以上を推奨するということであった。その時点で moonlight に起動ドライブとして挿していた USB メモリは 8 GB のものであったから、これが実際には足りていないことが原因であることを疑って、16 GB のものに取り換えた。
また、9.10.2 自体に MicroServer との相性か何かの問題があることも疑い、ISO イメージも 9.10.1U4 に取り換えて再起動した。今回はインストーラはつつがなく起動し、2時間くらい待たされたものインストールは成功した。

その後にコンソールから行ったネットワーク設定はどこかでしくじったらしく少し手こずった。Web ブラウザで GUI に辿りついたら [設定のアップロード] で設定を戻して復旧作業を終えた。仕上げに dawn, dusk をもう一度再起動してNFSマウントが正常であることを確認した。

●電子錠登録・登録抹消
前述の演習室等の引っ越しについて、段ボール置き場の電子錠に学部教員を登録し、その旨をMLを通じて連絡した。

●PB演習 授業準備(次年度)
続き。こちらの研究室のサンプルコード集にリンクするのをやめて、Qdmail の使うときのサンプルコードを圧縮して upblow 自体に置いた。

●新学科Webサイトの準備
★コンテンツの更新
トップページのトピックス部分に掲載している写真をIn先生の撮影した最近のものに差し替え、その旨をIn先生に連絡した。

★サーバの準備
CNC からメールでインターネットサーバ登録申請書を受け取った旨の連絡が来た。さらにファイをウォール設定申請書とホームページ申請書を提出するようにということであったので、書類を準備した。明日提出する。

●その他
ゼミナール室の蛍光灯が一か所切れていたので学部事務室に交換の依頼について連絡した。

2016年12月21日水曜日

2016/12/19(月) 導入2, PB演習 授業実施

●学生コンテスト企画 協力
出張旅費について学部事務室に連絡した。

コンテスト結果がH社からメールで送られてきたので、簡単な説明を付けて学部の先生方に転送した。

●PB演習 学外への連絡
12/17(土)の懇親会の際に、隣の大学のIs先生と、PB演習についてご連絡する約束をしていたので、事務室およびIn先生に確認のうえメールで連絡した。

●導入2 授業実施
3限目に第13回を実施した。12名出席、1名欠席。
最初に、次回はコース分け説明会が実施されることを再度連絡した。また、今回を含めてあと3回でWebレポートまでを仕上げなくてはならないので、可能な限り今回中に動画作品の編集作業に着手するよう指示した。
次に、動画作品制作演習を指導した。また、今回も3名と個別に面談を行った。

面談内容は夜に整理し、その概要をK'sLifeに所見として入力した。

●PB演習 授業実施
4限目・5限目に技術サポート役および顧客役として参加した。今回は4限目の前半に技術サポートを行った。SQL文の書き方や、Qdmail を使ってメールの送信について指導した。成果物の検収を行った。5限目にはS社のMさんによるプレゼンテーションの講義を聴いた。
18:00からは終了ミーティングに出席した。検収結果報告の中で多少発言した。

●新学科Webサイトの準備
封筒をIn先生にお渡しした。

●PB演習 授業準備(次年度)
今日の技術サポートで受けた質問を踏まえ、本番サーバ upblow に次年度用のサーバ情報提供システムを準備し、そこに Qdmail に関する記述を追加した。当研究室の Wiki に掲載しているサンプルコード集にリンクを張った。

●計算機環境の整備
★仮想サーバ(CentOS 7)の保守、サンプルコード集の改訂
最近、研究室内サーバ dawn のサンプルコード集を改訂したり aurora を新学科Webサイトの準備作業用にして一時的に baserCMS を置いたりした際に、/var/www/html に置いているPHPスクリプトがファイルシステムにアクセスするために SELinux のファイルコンテキストを httpd_sys_content_rw_t (もしくは httpd_sys_rw_content_t)に変更する必要があった。なんだか面倒なので、いっそ最初から /var/www/html 以下を semanage で httpd_sys_content_rw_t にしておくことを検討した。

まず、CentOS 7 でもともと /var/www/html がどうなっているのかを調べた。
  $ sudo semanage fcontext -l | fgrep '/var/www'
次のようなことが判った。
  • /var/www の下は原則的に httpd_sys_content_t である(rwなし)。
  • /var/www/html の下(直下でなくてよい)に特定の名前のディレクトリを置くと、その下は httpd_sys_content_rw_t になる。
    • uploads
    • wp-content
    • wp_backups など
そこで、dawn のサンプルコード集のアップローダプログラムが使用するファイル置き場は全て uploads もしくはそのサブディレクトリになるよう変更した。
一方、aurora については結局一時的に baserCMS を置いているだけであるからさしあたり変更しないことにした。

2016/12/18(日) 計算機環境の整備

●卒業研究の指導
Koくんが卒研で開発したシステムと関連する既存のシステムを探してみた。彼の進捗報告等のなかにあった ScanBmp Monkey II のほかに WinTopo というフリーソフトが見つかった(有償版もある)。これらを自分の主力デスクトップPCにインストールした。ScanBmp のほうは単体では画像を表示できないようであるが、WinTopo には表示機能があり、ラスタからベクタへの変換、線の選択、直線化などの処理を行うごとに結果を画面上で確認することができた。Koくんは関連する既存システムとして WinTopo にも触れるべきである。

●計算機環境の整備
★研究室内の仮想サーバの保守
仮想サーバ numbus, thunderhead, rainbow で yum update などのアップデートを実行した。

★自室のデスクトップPCの保守
会議机のデスクトップPC halfmoon で Windows Update を実行した。

●物品購入
予算消化のためもあって Amazon で下記の物品を2個口で購入した。

(1個口目)
・TaoTronics Bluetoothオーディオトランスミッタ+レシーバ (送信のみaptX対応) TT-BA07
・ELECOM Bluetoothオーディオレシーバー (aptX対応) LBT-AVWAR700
・オウルテック 2.5インチHDD/SSD用3.5インチ変換ブラケット OWL-BRKT04(B)
・クツワ HiLiNE 鉛筆ホルダー RH015BK ブラック
・クツワ HiLiNE 鉛筆ホルダー RH015BL ブルー
・iBUFFALO LANケーブル 2m ブラック BSLS6ANU20BK

(2個口目)
・Docooler Bluetoothオーディオトランスミッター (aptX対応) TS-BT35F18
・Transcend SSD 120GB 2.5インチ TS120GSSD220S
・サンワサプライ ヘッドマイク(有線タイプ) MM-SPHM2
・COMON(カモン) 3.5mmモノラル(メス)→3.5mmステレオ(オス)変換ケーブル/0.1m 35M35S-01L

●新学科Webサイトの準備
トップページに目立たせたい話題を掲載する方法を検討した。最初はテーマ logical_jp_baser のPHPスクリプトをいじることを考えていたが、最終的には固定ページの「ホーム (index)」をソースモードで編集して次のようにHTMLタグ付けすればよいことが判った。必要に応じて数を増やしても問題なさそうである。なお、目立たせるための画像として704×240ピクセルのものを用意する必要がある。横幅が704という中途半端な数値であるが、これを変更するためにはCSSファイルにまで手を出さなくてはならないので、今回は避けた。
<section class="section" id="pickup">
<!-- 1番目のトピック -->
<article class="post">
<div class="figure"><?php
  $this->BcBaser->img('/files/uploads/アップロードした画像ファイル名',
                      array('alt'=>'代替テキスト','width'=>'704','height'=>'240'))
?>
<h1><a href="詳細ページのURL">なんとかかんとかについて</a></h1>
<!-- /.figure --></div>
<div class="postContents">
<p class="summary">ここにアオリ文句を書く。ここにアオリ文句を書く。
ここにアオリ文句を書く。ここにアオリ文句を書く。ここにアオリ文句を書く。
ここにアオリ文句を書く。ここにアオリ文句を書く。</p>
<p class="moreLink"><a href="詳細ページのURL"><b>もっと詳しく</b></a></p>
<!-- /.postContents --></div>
<!-- /.post --></article> 

<p>&nbsp;<br />
&nbsp;</p>

<!-- 2番目のトピック -->
<article class="post">
<div class="figure"><?php
  $this->BcBaser->img('/files/uploads/アップロードした画像ファイル名',
                      array('alt'=>'代替テキスト','width'=>'704','height'=>'240'))
?>
<h1><a href="詳細ページのURL">なんとかかんとかについて</a></h1>
<!-- /.figure --></div>
<div class="postContents">
<p class="summary">ここにアオリ文句を書く。ここにアオリ文句を書く。
ここにアオリ文句を書く。ここにアオリ文句を書く。ここにアオリ文句を書く。
ここにアオリ文句を書く。ここにアオリ文句を書く。</p>
<p class="moreLink"><a href="詳細ページのURL"><b>もっと詳しく</b></a></p>
<!-- /.postContents --></div>
<!-- /.post --></article>
<!-- /#pickup .section --></section>

(12/23追記: 一番外のsectionタグも含めてトピックごとに繰り返すほうが、トピック間に適当な空間ができて良いようである。同じIDの要素を繰り返すことになるので気持ち悪いが、間を空けないと各トピックの下にある「もっと詳しく」が上と下のどちらに付属しているのか判りづらい)
(12/24追記: 間を空けるだけならp要素とか&nbsp;とかを使って適当な空白を入れればいいことに気付いた。同じIDのsection要素を複数作る必要は無かった)

2016年12月18日日曜日

2016/12/17(土) 学生コンテスト企画 最終コンテスト

●学生コンテスト企画 最終コンテスト
12時から、中洲で開催された最終コンテストに審査員の一人として参加した。楽しかった。懇親会の途中までいて、そのあとは先に失礼した。詳細略。

●卒業研究の指導、演習2の授業準備
★サンプルコード集の改訂
続き。研究室の卒研用サーバ dawn にあるサンプルコード集について、サンブルプログラムのソースコードを表示するためのPHPスクリプトを改良し、表示の中で伏せる文字列の指定を正規表現で記述できるようにした。これによって複数のデータベース名を伏せられるようになった。

次に、演習2のために作ったサンプルプログラムのデータベースは他のサンプルプログラムとは別にした。他の既存のサンプルと同名のテーブルがあったので、テーブル名にプレフィックスを付けたりせずそのままデータベースに置くことができるようになって良かった。

また、サンプルプログラムのうちアップロード処理に関するPHPスクリプトが少し複雑であるように思えたので、もっと簡単なスクリプトを二つ増やした。

日報ブログ相互点検システムをサンプルコード集に追加し、それを動作させるためのデータベースをも新たに作った(後述)。

●日報ブログ相互点検システムの改修
続き。管理画面を作るのはやめた。一方、画面にメニューを表示する処理のコードがあまりきれいではないので、それに関する改修を行った。
そのうえでサーバ dawn に置いている前述のサンプルコード集に追加し、それを動作させるためのデータベースをも新たに作った。
改修とサンプルコード集への追加は、以前には気長にやろうと考えていたが、管理画面をあきらめることにより今日限りで片付けた。

実際にサーバ dawn で運用しているシステムにも同じ改修を反映させた。
この実運用中のシステムとサンプルコード集に置いたものはいずれも dawn にあるので、同じものが同じサーバで二つ稼働することになる。両者の違いは次の通りである。

(1) 使っているデータベースが異なる。
(2) したがってデータが異なる。
(3) サンプルコード集ではスタイルの指定に JavaScript コードによる動的な設定を取り入れず、単に CSS ファイルを link タグで読み込むだけにした。

●計算機環境の整備
★仮想サーバの保守
研究室内の卒研本番用サーバ dawn および卒研実験用サーバ dusk で yum update と reboot -n を実行した。結構時間がかかった。

2016/12/16(金) システム運用室会議、新学科Webサイトの準備

●新学科Webサイトの準備
★新学科Webサイト設置および旧サイトからの移行に関するワーキンググループ(WG)の発足
続き。新WG参加についてIn先生から返信で快諾を貰った。折り返し、新学科サイトに関する PukiWiki のURLを送った。
これをもって新WGの正式発足と考える。

★サーバの整備
学部の DNS に whitetiger を登録した。独断で別名を welcome にした。

新学科ホームページを学外に公開するために、CNCのWebサイトからインターネットサーバ登録申請書の書式(PDF)をダウンロードし、記入、ハードコピー、捺印のうえ学部事務室に提出した。明日CNCに届くということであるので、恐らく週明けには新学科ホームページが学外に公開されるであろう。

★コンテンツの更新
baserCMS の管理システムから、ページヘッダの画像の差し替えと、トップページへの関連リンク集の設置を行った。

サーバの整備とコンテンツの更新について、作業内容を新学科サイトに関する Wiki に記録した。

●システム運用室会議
10:40からの会議に出席した。S社からカレンダーを貰って嬉しかった。

●会誌の編集 校正
As先生から校正依頼が来た。業者のチェックが入った原稿を学部事務室で確認し、修正箇所を赤ペンで記入したうえで表紙に署名した。

●進路指導Webサイトの更新
昨日Webサイトに掲載したつもりであったファイルは掲載作業の途中で放置されていた。あらためて掲載した。
また、本日もCNCからメールで流れてきた資料があったのでこれをWebサイトに掲載した。
さらに、向こう数ヶ月における学内・学外の行事日程を調べてWebサイトに掲載した。

●計算機環境の整備
★PCの保守
ノートPC hail および storm で Windows Update を実行した。

自室の主力デスクトップPCでまた Dropbox の Windows クライアント(15.4.22)が起動しなくなった。調べてみると新バージョン(16.4.29)が12/12(月)にリリースされていたので、これをインストールした。しばらく様子を見る。

●卒業研究の指導(卒業論文の添削)
Koくん、Taくん、Muくんの第2稿を見て添削にとりかかってみたが、いずれもまだ質が低くく、普通に添削することはできないように思えた。そこで個別・対面で執筆を指導することにした。日程を計画し、その旨をMLを通じて連絡した。ただし、指導当日までに添削なり指導方針の策定なりの対策をしておく必要がある。

●学生コンテスト企画
明日はコンテスト当日である。これに備えて床屋に行って散髪してもらった。また、当日の予定を確認した。

2016/12/15(木) 卒研ゼミ、da2 授業実施

昼少し前くらいからオフィスに。


●新学科Webサイトの準備
新WGへの参加についてIn先生の同意を取り付けなくてはならない。管理に関する情報を紙に書いて封筒に入れた。In先生にWG参加についてお願いする際にこれを預かってもらう。今日は結局直接説明する機会が無かったので、先にメールで事情説明を送った。未完了

●卒研ゼミ
3限目に卒研ゼミを実施した。出席3名、欠席2名(Ohくん、Okくん)。欠席者の2名とも無断欠席。
本日は卒業論文下書き第2稿の〆切に設定していたが、原稿を受け取る前に説明と演習を行った。
まず、12/12(月)に準備しておいたスライド資料に沿って卒業研究の意義や進め方を振り返った。また、いまさらであるが研究の評価について説明した。実際には恐らく今年度の卒研生でシステムの評価実験を行う余裕のある者はいないであろうが、学校の先生からの講義としてはこのような話にも意義はあるかと思う。
次に、作文の際に適切な述語や形容を使うことを意識してもらうために、こちらからいくつかの名詞を提示してそれと組み合わせられる述語や形容を考えるという演習を行った。卒研生にとってはいくつか発見もあったようである。
最後の15分間くらいで原稿の相互点検をさせた。またもや時間が足りなくなって私自身が点検する余裕がなくなったので、各自に原稿をスキャンしたうえで箱に提出するよう指示して終わりにした。

欠席者2名はいずれも先週の冬季中間発表をすっぽかしたままである。
過去にも、Ohくんは8月の夏季中間の再発表をすっぽかしたので面談のうえ10月に遅れ発表をさせた。また、Okくんは10月の秋季中間をすっぽかしたので面談のうえ11月に遅れ発表をさせた。そのときに、事情がなんであれ所定の期日に中間発表をしなかったときには自分から申し出るべきことをそれぞれ指導した。
しかし、今回の冬季中間に関して未だになんの申し出もない。そのうえ卒業論文の第2稿も提出していない。さらに、可能な限り毎日ゼミナール室に来て卒研に取り組むべきこと、日報を書くべきことなどはたびたび指導しているにもかかわらず、ここ10日間ほどは全く取り組んだ卒研に形跡がない。そうなると、二人とも卒業研究を放棄したと考えるしかない。

●da2 授業実施
4限目・5限目に第13回を実施した。まず小テストを実施したのち、解説をごく簡単に済ませた。
次にマージソートとヒープソートについての講義を行った。マージソートの説明は結構うまくいったと思うが、少し時間をかけすぎた。ヒープソートについては補足スライド資料がまだ十分に整理されておらず、まだ改善の余地が大きいと感じた。しかも、マージソートに時間をかけすぎたせいで、ヒープソートを4限目のうちに片付けるためには25分間程度で説明してしまわなくてはならなかった。それでもほとんどの受講者のほうではどうにか解ってくれたらしいので良かった。
助教のK先生から指摘があったので、5限目の最初に小テスト解答について補足解説を行った。そのうえで演習を指導した。2問が解答用紙の上でアルゴリズムを実行する問題で、2問がプログラミング問題であった。ほとんどの受講者は17時過ぎには退室した。最後の受講者も5限目終了のチャイムが鳴る前に解答を終えたので、こちらもチャイム前に撤収した。

●da2 授業処理
小テスト受験状況に基づいてK'sLifeの出席登録データを修正した。
小テスト答案に目を通し、採点結果に若干の修正を加えた。
小テスト得点および演習得点を集計し、評価用Excelファイルに入力した。
第11回、第12回の得点もK先生にExcelファイルに入力してもらっていたので、これを評価用Excelファイルに貼りつけた。
評価用Excelファイルの内容を成績確認システムに掲載した。また、その旨をK'sLifeを通じて受講者に連絡し、数字を確認するよう指示した。

●進路指導Webサイトの更新
Ab先生からメールで流れてきた資料1点をWebサイトに掲載した……つもりであったがあとでWebサイトを確認したところ掲載されておらず、何かしくじったようである。修正を要する。

●電子錠登録・登録抹消
教務から学生証再発行1件について連絡を受け取ったので処理した。

●その他
学部再編に伴い4F演習室の引っ越しをしなくてはならない。引っ越し説明会について日程調整の案内が来たのでちょー助に入力した。

施設委員MLに来たゼミナール室使用の可否の問い合わせについて、その同じ部屋を備品プリンタ置き場に使っている立場から返信した。

S先生からメールでltのクラス分け案が来たので返信した。

昨日の会議資料をScanSnapでPDF化した。

2016/12/14(水) 演習2 授業実施、学部・研究科の会議

●PB演習 バーチャルレビュー
Google ドライブからレビュー対象の資料をダウンロードして見た。まだこれまでのレビューでしてきされた事柄について十分な修正がされていないようであった。これをレビューしても同じ指摘を繰り返すだけのことであり、残り時間が無いことを考えても、バーチャルレビューでどうにかするのは無理であろう。その旨を Slack で連絡したところ、S社のMさんからNGにして納品時に修正済みのものを提出してもらうという案が返ってきた。そこで、レビュー記録には簡単に結果のみを書いて Google ドライブの所定のフォルダに置いた。

●計算機環境の整備
自室の主力PCで Windows Update を実行した。

●進路指導Webサイトの更新
Ab先生からメールで流れてきた資料をWebサイトに掲載した。

●演習2 授業実施
3限目に第11回を実施した。出席6名、欠席なし。
最初に各受講者の進捗を確認したのち、各自の演習を指導した。特に、演習の成果物の一つであるシステムをちゃんと研究室の実験用サーバ dusk に置くよう指導した。MiくんにはPHPの入門書通りに作ったシステムを dusk に置くよう指導した。PDO の場合について研究室内 Wiki に追記しておいたのが役立った。
また、日程上は少し早いが、全員揃っているので授業アンケートを実施した。

●学部の会議
14:40からの会議に出席した。長かった。私はCNC運営委員会について資料に基づいて報告した。
また、最近やっている新学科ホームページの準備作業について、新学科Webサイトの設置および旧サイトからの移行に関するWGを新たに設置すること、私自身をメンバーにすること、その代わり私をホームページ委員会から外すこと、また次年度にローテーションで当たる予定の互助会幹事の仕事を免除することを提案した。この新WGのメンバーとしてもう一人、In先生を入れることを条件に承認された。互助会幹事をやると、懇親会の幹事を兼ねるため自動的に懇親会に出席せざるをえなくなるから、これを回避できるのはありがたい。

●研究科の会議
こちらは早く終わった。

●da2 授業準備
スライド資料PDF版や履修者名簿のハードコピーを作った。

●演習2 授業処理
K'sLifeに出席を登録した。
また、授業用Webページ更新し、各受講者が dusk kホームディレクトリを掲載

●その他
試験監督の担当予定を確認した。Microsoft カレンダーに入力した。

2016/12/13(火) gw 授業実施

●gw 授業実施
2限目に第12回を実施した。出席2名、欠席なし。
最初に、出題を忘れていたプログラミング演習のレポート課題を出した。
次に、プレゼンテーションの要領を講義した。

●基礎演習2 授業準備
続き。Ta先生と直接お話しすることができたので、最終回にAp先生の補習を実施することについて相談し、当日の進行の簡単な計画を決めた。また、その旨を関係の先生方にメールで連絡した。
そのあと、念のためAp先生に当日の進行を直接お伝えしたところ、補習をやめて宿題にすることを聞かされた(もっと早く知らせてほしかった)。今度こそ変更の無いように、宿題のスケジュールをAp先生によく確認したうえで、Ta先生や関係の先生方に補習が無くなった旨をメールで連絡した。
脱力した。

●C3PO 実験見学
5限目にpkの授業でやっている実験の模様を見学した。3クラスのうち2クラスの担当がK先生とS先生であり、その2クラスで実験を行っていたので、実験をやっていないクラスも含めて教室を行き来しながら見学した。

●卒業研究の指導
研究室のサンプルコード集を眺めているうちに気になるところが出てきたので改修した。

●計算機環境の整備
自室の主力PCにおいて BlueGriffon を2.1.2に更新した。

●研究倫理eラーニング
続き。33%まで。未完了

●その他
主力PCにおいて授業用Webページのソースのディレクトリ構成を変更した。2012年度分、2013年度分をサブディレクトリに入れた。

2016年12月13日火曜日

iCalendar形式 技術情報メモ

■ 1. はじめに
iCalendar[1]は予定情報を表現・交換するための仕様である。
iCalendarのデータ形式(以下、iCalendar形式)は、Googleカレンダー、Microsoft (Outlook.com)のカレンダーなどのクラウドサービスや、Mozilla Thunderbird、Microsoft Outlookなどのアプリケーションで使用することができる。
iCalendar形式では行事日程のほかにもTo-Do項目や日誌を表現することができるが、ここでは行事日程のみを扱うことにして、今回開発した行事日程カレンダーシステムおよびこれと連動する各種のクラウドサービスやアプリケーション(以下、カレンダーシステム)に関連して使用した事項もしくは使用を検討した事項を記載する。

■ 2. iCalendar形式
◆ 2.1 iCalendar形式の書式
iCalendar形式データの文字エンコーディングはUTF-8である。
また、行末の改行コードはCR LF(16進数で0D 0A)である。例えば、PHPで行を出力するときには次のように行末に \r\n を付さなくてはならない。

 echo "BEGIN:VCALENDAR\r\n";

1行の長さの上限は改行コードを除いて75バイトである。絶対ではないらしい。
それより長くなるときにはルールに従って分割すること。絶対ではないらしい。

◆ 2.2 iCalendarオブジェクト
典型的にはデータ全体のひとまとまりが1個のiCalendarオブジェクトである。
複数が連なっていてもいいが、各種カレンダーシステムの出力を見る限り通常は1個だけからなる。
iCalendarオブジェクトの先頭行と最終行には対応するBEGINとENDがあり、その間には本体がある。
本体はプロパティとコンポーネントからなる。
すなわち、iCalendar形式データの体裁は次の通りである。

 BEGIN:VCALENDAR
 プロパティ
 プロパティ
 ...
 コンポーネント
 コンポーネント
 ...
 END:VCALENDAR

◆ 2.3 iCalendarオブジェクトのプロパティ
次のプロパティは必須である。

・PRODID ... iCalendarオブジェクトを生成した製品のID。
・VERSION ... RFC 5545に従うときには2.0とする。

次のプロパティは1回まで現れることができる。

・CALSCALE ... 通常GREGORIANにする。既定値はGREGORIANなので省略してよい。
・METHOD ... 正直よくわからないがPUBLISHにしておく。

なお、METHODがある場合とない場合とでは、後述のDTSTAMPの解釈が変わる。

この他にRFC 5545で決められていないプロパティとして次のプロパティがある。
これらを認識するかどうかはカレンダーシステムによって異なる。

・X-WR-CALNAME ... カレンダー名。Googleカレンダーでは認識してくれる。
・X-WR-CALDESC ... カレンダーの説明。Googleカレンダーでは認識してくれる。
・X-WR-TIMEZONE ... タイムゾーン。日本ならTokyo/Asiaにしておく。

◆ 2.4 イベントコンポーネント
行事日程を表現するためにはイベントコンポーネントを用いる。
コンポーネント名はVEVENTである。
コンポーネントの先頭行と最終行には対応するBEGINとENDがあり、その間にはプロパティがある。
すなわち、イベントコンポーネントの体裁は次の通りである。

 BEGIN:VEVENT
 プロパティ
 プロパティ
 ...
 END:VEVENT

◆ 2.5 イベントコンポーネントのプロパティ
次のプロパティは必須である。詳細は2.6, 2.7で述べる。

・DTSTAMP ... 前述のMETHODがある場合、iCalendarオブジェクトが生成された日時。
・UID ... イベントに固有のID。絶対の他のイベントとかぶらないようにすること。
・DTSTART ... イベントの開始日時もしくは開始日。

次のプロパティはどちらか片方が1回まで現れることができる。詳細は2.6で述べる。

・DTEND ... イベントの終了日時もしくは終了日。
・DURATION ... イベントの所要時間。

次のプロパティは1回まで現れることができる。
このうちSTATUSとTRANSPについては2.8, 2.9で述べる。

・SUMMARY ... イベントの概要、件名。各種カレンダーシステムで扱われる件名にあたる。
・LOCATION ... イベントの場所。
・STATUS ... イベントの状態。
・TRANSP ... 空き時間検索用の属性。既定値はOPAQUE(予定あり)。
・CREATED ... コンポーネントの作成日時。無くても困らない。
・LAST-MODIFIED ... コンポーネントの更新日時。無くても困らない。
・SEQUENCE ... コンポーネントのリビジョン番号。無くても困らない。

◆ 2.6 日時に関するプロパティ
DTSTAMP, DTSTART, DTENDは日時を示すためのプロパティである。
また、DURATIONは所要時間を示すためのプロパティである。

★値の書式
日時はUTCを次のような書式で記述する。
この例はUTCの2016/09/15 12:30:00(日本時間の2016/09/15 21:30:00)を示す。

 DTSTAMP:20160915T123000

また、時・分・秒の情報が無い日だけの値は次のような書式で記述する。
この例は2016/09/15を示す。セミコロンとコロンの区別に注意すること。

 DTSTART;VALUE=DATE:20160915

なお、ある一日がいつ始まっていつ終わるかはタイムゾーンによって異なるので、この日だけの書式を用いた場合にはタイムゾーンによって開始・終了時刻の解釈が変わることになる。ある一日の開始・終了時刻を特に明示したい場合には時・分・秒の情報を含む書式のほうを使う必要がある。

★DTSTAMP
DTSTAMPの値は日時である。
その解釈はiCalendarオブジェクトのプロパティのMETHODがあるかないかで変わる。

・METHODがある場合、DTSTAMPはiCalendarオブジェクトが生成された日時を指す。
・METHODがない場合、DTSTAMPはLAST-MODIFIEDと同じである。

カレンダーシステムが外部から要求されてiCalendar形式のデータを出力して、iCalendarオブジェクトにMETHOD:PUBLISHというプロパティを付けるのであれば、イベントコンポーネントのDTSTAMPの値はその出力を行った日時になる。

★DSTART, DTEND
DTSTARTの値は日時ないし日であり、イベントの開始日時ないし開始日を示す。
一方、DTENDの値も日時ないし日であり、イベントの終了日時ないし終了日を示す。
DTSTARTの値が日時であればDTENDの値も日時でなくてはならない。
また、DTSTARTの値が日であればDTENDの値も日でなくてはならない。

次の場合について考えるなら
・開始時刻がUTCの2016/09/15 01:30:00(日本時間の2016/09/15 10:30:00)
・終了時刻がUTCの2016/09/15 03:30:00(日本時間の2016/09/15 12:30:00)
DTSTARTとDTENDは次のように記述する。

 DTSTART:20160915T013000
 DTEND:20160915T033000

また、2016/09/15の終日についてはDTSTARTとDTENDは次のように記述する。

 DTSTART;VALUE=DATE:20160915
 DTEND;VALUE=DATE:20160916

DTSTARTのみあってDTEND(および後述のDURATION)が省略された場合、DTSTARTの値の型によって次のように解釈される。

・DTSTARTの値が日時であればDTENDもその日時である(イベントは一瞬)。
・DTSTARTの値が日であれば終日である。

★DURATION
DURATIONは所要時間を示す。値の書式については省略する。
一つのイベントコンポーネントにDTENDとDURATIONの両方ともがあってはならない。

◆ 2.7 UID
UIDはイベントに固有のIDを示す。
全てのカレンダーデータを通じて固有でなくてはならない。
お勧めの方法は、日時・件名から作ったIDに組織のドメイン名を付すことである。

 UID:20160915T013000-hogehogehoge@our.univ.ac.jp

PHPで生成するときには件名から関数md5でハッシュ値(32バイト)を生成し、これを上の例のhogehogehogeの部分に入れればよい。

◆ 2.8 STATUS
STATUSはイベントの状態を示す。
STATUSの値はTENTATIVE, CONFIRMED, CANCELLEDのいずれかである。

・TENTATIVE ... 暫定的。
・CONFIRMED ... 承認済み。決定。
・CANCELLED ... 取消済み。

STATUSが省略された場合の既定値に関する記述はRFC 5545に見当たらない。
試した限りでは、どのカレンダーシステムでSTATUSの省略には特に問題は無かった。

◆ 2.9 TRANSP
TRANSPは空き時間検索のときに参照される属性である。
TRANSPの値はOPAQUE, TRANSPARENTのいずれかである。

・OPAQUE ... 予定ありと見なされる。
・TRANSPARENT ... 検索処理においては無視される。

TRANSPが省略された場合の既定値はOPAQUEである。

◆ 2.10 iCalendarオブジェクトの例
次の例では一つのiCalendarオブジェクトにイベントコンポーネントが二つ含まれる。
なお、行事日程の場所情報が欠落しているときにはLOCATIONは含まない。

 BEGIN:VCALENDAR
 PRODID:-//組織名//製品名とバージョン番号//EN
 VERSION:2.0
 CALSCALE:GREGORIAN
 METHOD:PUBLISH
 X-WR-CALNAME:カレンダー名
 X-WR-CALDESC:カレンダーの説明
 X-WR-TIMEZONE:Asia/Tokyo
 BEGIN:VEVENT
 DTSTAMP:20160915T135022Z
 UID:20161119120000-9f8e0c641376258f8eb14b0d33437b2a@our.univ.ac.jp
 DTSTART:20161119T030000Z
 DTEND:20161119T080000Z
 SUMMARY:リクナビ インターンシップLIVE
 LOCATION:福岡市博多区(福岡国際会議場)
 STATUS:CONFIRMED
 TRANSP:TRANSPARENT
 END:VEVENT
 BEGIN:VEVENT
 DTSTAMP:20160915T135022Z
 UID:20161215130000-3f909c83d2ef6febbcab25221a6b9ed2@our.univ.ac.jp
 DTSTART:20161215T040000Z
 DTEND:20161215T051000Z
 SUMMARY:第4回留学生就職ガイダンス
 LOCATION:キャリア支援センター
 STATUS:CONFIRMED
 TRANSP:TRANSPARENT
 END:VEVENT
 END:VCALENDAR

■ 3. iCalendar形式データの交換
◆ 3.1 プロトコル
下記のシステムはiCalendar形式データをサーバからHTTPで転送して読み取ることができる。

・Mozilla Thunderbird (カレンダー機能。元Lightning)
・Microsoft Outlook
・Googleカレンダー
・Microsoftカレンダー/予定表

URLの頭に付くスキームとして http の代わりに webcal が使われることもある。これは正式ではなく暫定的なスキームである[2]。ファイルの中身ではなくURLをプロトコル処理に渡すために使われる[3]。

◆ 3.2 iCalendar形式データの属性
iCalendar形式データのMIMEタイプは text/calendar である。また、文字エンコーディングは UTF-8 である(2.1節を参照)。
したがって、WebアプリケーションからiCalendar形式データをHTTP応答として出力する際には、ヘッダに次のフィールドが無くてはならない。

 Content-Type: text/calendar; charset=UTF-8

例えばPHPスクリプトの場合、データ本体の出力を開始する前に次のようにしてこのヘッダを出力しなくてはならない。

 header('Content-Type: text/calendar; charset=UTF-8');

■ 参考文献
[1] RFC 5545 Internet Calendaring and Scheduling Core Object Specification (iCalendar), (2009).
https://tools.ietf.org/html/rfc5545
[2] Scheme name: webcal, Internet Assignment Numbers Authority (IANA).
http://www.iana.org/assignments/uri-schemes/prov/webcal
[3] Webcal, Wikipedia (en).
https://en.wikipedia.org/wiki/Webcal

2016/12/12(月) 導入2, PB演習 授業実施

11:30くらいからオフィスに。


●進路指導Webサイトの更新
Ab先生からメールで流れてきた資料1点をWebサイトに掲載した。

●卒業ゼミ 準備
12/15(木)3限目は卒論下書き第2稿〆切である。下書き原稿を受け取る際に、卒研の進め方や卒論の書き方についてこれまでに話した事柄を確認することを考えた。そのために、春に使ったスライド資料を少し改訂した。また、基本的な心得の部分についてはハードコピーを作ってゼミナール室の壁に貼った。

●導入2 授業実施
3限目に第12回を実施した。動画作品制作演習を指導した。まだ本格的に編集作業に入っているチームは無さそうであった。

演習と並行して、今回も受講者のうち3名と面談を行った。
面談の内容は夜に整理し、その概要は所見として K'sLife に入力した。

●PB演習 授業実施
4限目・5限目に顧客役として参加し、設計やらテスト仕様やらのレビューを担当した。
18:00からの終了ミーティングにも出席した。大した発言はしなかった。

●ホームページ委員 業務(新学科Webサイトの準備)
PB演習の際に、ホームページ委員のある先生に、軽めの仕事の分担を持ちかけてみたところ、「ホームページ委員はリンクを張るだけが仕事で、サーバの管理などはしない」という理由で拒否された。
それなら委員に仕事を振られたときに最初からそう回答するのが筋であるに違いないが、もし表立ってそう主張すれば仕事内容を再定義される恐れがあるから今まで黙っていたということであろうか。
そんな仕事に教員が5名も貼りつけられて委員の肩書きをもっているということにも、この先生(や他の委員)から見れば私は単なる余計な仕事を自分から抱え込んだ間抜けにしか見えないのであろうことにも、軽い衝撃を覚えた。

In先生に別の軽めの仕事として、Webサーバの公開が完了した後に新学部広報サイトからのリンク更新を関係部所に依頼することをお願いしたところ、快く引き受けてもらえたのは良かった。つまり、公開作業は結局私がやらなくてはならない。

●導入2 授業処理
本日の授業中にコース分け説明会の日程について質問があった。これに対する回答として、説明会は12/26(月)に開催される予定である旨を K'sLife を通じてあらためて連絡した。

●PB演習 授業処理
レビューの模様を録音したMP3ファイルをいつも通りに処理した。

●計算機環境の整備
Dropbox が起動しない現象がまた現れた。いったんアンインストールしたあと、regedit でレジストリから Dropbox 関連のエントリをいくつか適当に消したうえで、最新版をインストールしなおした。PC を再起動したら Dropbox も起動した。しかしこれも今だけかもしれない。しばらく様子を見る。

●進路指導Webサイトの再開発(行事カレンダーシステム)
続き。ずっと放置していた iCalendar 形式データに関する技術情報の残りを書き上げた。
また、研究室内 Wiki にも同じ内容のページを作った。卒研生の中にはサンプルコードと併せて卒論執筆の参考にする者もいるかもしれない。

2016/12/11(日) ほとんどオフ

●lt 授業準備(次年度)
11/18(金)12/08(木)の会議で決まった事柄を授業計画書のExcelファイルに反映させた。 Drobpox の所定のフォルダに置いて、関係の先生方にメールで連絡した。

●計算機環境の整備
自室の主力PC (Windows 7 Professional) において Dropbox が起動しなくなっていることに気付いた。いったんアンインストールし、最新版をインストールし直した。

●電子錠登録・登録抹消
Ma先生からメールで登録依頼があったので処理した。

2016/12/10(土) da2 授業準備

午前は自宅で休養した。午後からオフィスに。


●da2 授業準備
第13回の準備を行った。3クラス共通のスライド資料は昨年度と同じでいいが、自作の補足スライド資料については昨年のうちにファイルに書いておいた改訂案があったので、これに基づいて改訂を行った。
ヒープソートの説明が少しごちゃごちゃしていて気に入らない。その主な原因は、ヒープの説明とヒープソートの説明の間が空きすぎているために、ヒープソートを説明するためにヒープに話を戻さなくてはならないことである。これはシラバス通りにやる限りどうしようもない。
スライド資料のPDF版をWebサイトに掲載した。また、資料全体を OneDrive の所定のフォルダに置いた。

●演習2 学生支援準備
前期の演習1でSbくんに、後期の演習2でMiくんに取り組ませた PHP の入門書を自分でも通読してみた。熟読するのは時間的に無理でも、そもそも熟読するほどの内容ではないので、この書籍の通りに作業したら完成する Web アプリケーションがどういうものかを把握することに主眼を置いて、実際に HTML ファイルや PHP スクリプトを書籍の通りに書きながら読み進めた。ごく短いスクリプトでそれなりのものが動くようになっていることや、テキストエディタでの行番号が完璧に掲載リストの通りになることに感心した。

●研究室内 Wiki の更新
仮想サーバ dawn や dusk の MySQL データベース(というか MariaDB)に PHP スクリプトからアクセスするときの方法を研究室内 Wiki のページに書いている。このページでは MySQLi 関数やクラス MySQLi については書いていたが PDO については書いていなかった。前述の入門書では PDO を使っていたので、研究室内 Wiki にも PDO に関する記述を追加した。

●その他
自室の加湿器を掃除して使えるようにした。

2016/12/09(金) 雑事

●会誌の編集
As先生から連絡があった。ずっとお任せしっぱなしで申しわけないので、何かできることはないかと思って過去の資料を眺めているうちに、発送先の検討をしなくてはならないのではと考えついた。発送に関する手続きは学部事務室が担当するので、事務室に電話で尋ねたところ、特に追加・削除の必要がなければ事務室任せでよいらしい話であった。

●基礎演習2 授業準備
Ap先生が授業最終回を使うという件について、Ta先生に確認のためメールで連絡を入れた。返信待ち

●ホームページ委員 業務(新学科Webサイトの準備)
続き。学部のWebサーバに勝手にPukiWiki を置いて新学科サイト管理要領および12/06(火), 07(水), 08(木)にサーバを調整したときの記録を書いておいた。

●PB演習 バーチャルレビュー二つの班の資料を点検し、結果を所定の Google スプレッドシートに記入したのち、 Slack で関係各位に連絡した。


●進路指導Webサイトの更新
Ab先生とCSCからそれぞれメールで流れてきた支援行事情報をWebサイトに掲載した。

●その他
学部事務室に互助会費を支払った。

To-Do整理を行った。以前は To-Do 管理に紙を使っていたが、 OneNote に移行して以来ここしばらくは上手くいっている。その前にも電子化を試みて Evernote を使ってみたことがあったが上手くいかなかった。しかし OneNote から紙に戻ることはもう無さそうである。

JUCEのアンケートに回答した。

2016年12月11日日曜日

2016/12/08(木) 冬季卒研中間発表会(2日目)、da2 授業実施

12時少し前からオフィスに。


●da2 授業実施
第13回の資料準備について検討した。昨年度に書いておいた要改善点を確認したところ、資料の改訂は簡単に終わりそうには無かった。今日の第12回開始までには片づけられないので、後日に廻すことにした。

●冬季卒研中間発表会(2日目)
3限目に冬季中間発表会を実施した。出席3名、欠席2名(Ohくん、Okくん)。Okくんは無断欠席。二人とも中間発表をまだ実施していない。また、Ohくんは未だに卒論第2稿を提出していない。
Taくん、Muくんの発表を聴いて、それぞれにコメントした。卒論の添削と同じことを指摘する場面も何度かあった。もう少し改善してもらいたい。14:20頃に終了した。

●da2 授業実施
4限目・5限目に第12回を実施した。最初に小テストを実施し、そのあと簡単に解説した。このとき使ったWordファイルとPDFファイルが昨年度のものであったので、今年と正解が違っていることに後で気付いた。
次に講義を行った。今回のテーマはクイックソートであった。3クラス共通のスライド資料と補足スライド資料を交互に使って進行した。途中でアドリブで黒板を使ってクイズを出したりしているうちに4限目の時間を使い切ってしまい、少しだけは5限目に食い込んだ。
5限目の残りの時間は演習にあてた。今回は1問目が紙上での演習で、2問目がプログラミング演習の問題であった。1問目の途中まではクイズとして解説済みであったことでもあり、今回も簡単に終わるかと思いきや、意外に手こずる受講者が多く、6限目が始まっても居残る受講者が4~5名いた。このあとに会議があったので18:15に打ち切ることを宣言した。18:15までに1名を除いて解答を終えた。この1名にはこの機会によく勉強しておくように指示しち、私自身が撤収した。

授業の合間に今回と前回の小テスト答案に目を通した。採点結果に一か所だけ修正があったので、その場でK先生に伝えた。答案は受講者に返却した。

●lt 授業実施(次年度) ppとの調整会議
18:00から他の科目(pp)との調整のための会議が開かれた。私はda2から撤収するのが遅くなったので少し遅れて出席した。19時少し前まで調整を要する事項について話しあった。私はいくつか発言したほか、議事録を書いた。S先生がその場でltとppそれぞれのMLを作ったので、会議後にこれらを通じて議事録を流した。

●ホームページ委員 業務(新学科Webサイトの準備)
続き。新サーバ whitetiger で下記の作業を行った。

★baserCMSの管理システム変更
現行の学部・学科サイトでも新学科サイトでも使用しているテーマ logical_jp.baser には Config/bootstrap.php というファイルがあり、いくつかの設定値はこのファイルに入っている。しかし、baserCMS の管理システムからはこのテーマの他のディレクトリにあるファイルは編集できるのに、ディレクトリ Config 下のファイルを編集することができない。そこで、下記のファイルにある配列に Config を追加して、管理システムから Config 下も編集できるようにした。

・ lib/Baser/Controller/ThemeFilesController.php
・ lib/Baser/View/Elements/admin/submenus/theme_files.php

また、画像ファイルの更新もアップローダプラグインを使えばいいので、サイトの設定や体裁の変更を含む管理作業の大部分は、わざわざサーバにログインしなくても管理システムからできるようになった。

★サイトの設定変更URLの確認
管理システムのうちテーマ logical_jp.baser に変更を加えるためのページのURLを控えた。管理システムのトップから辿らなくても、URLを入力すれば直接そのページに行けることを確認した。

・ http://サーバ/admin/theme_files/edit/logical_jp_baser/Config/bootstrap.php
・ http://サーバ/admin/theme_files/edit/logical_jp_baser/Elements/header.php
・ http://サーバ/admin/theme_files/edit/logical_jp_baser/Elements/home.php
・ http://サーバ/admin/theme_files/edit/logical_jp_baser/Elements/home_mainvisual.php
・ http://サーバ/admin/theme_files/edit/logical_jp_baser/css/home.css

★体裁の変更
現行サイトとパッと見で区別が付くように、次の作業を行った。

・トップページ上部の画像に変更を加えた。アップローダでサーバに置いた。
・home_mainvisual.php に書かれていた画像のURLをアップローダのものに修正した。
・ロゴ画像を作り直した。アップローダでサーバに置いた。
・header.php に書かれていた画像のURLをアップローダのものに修正した。
・またもやアイコンを変更した。これの差し替えはアップローダではできなかった。
・あるページのリンクに誤りがあったので修正した。

このあたりで作業を打ち切ることにして、メールで完了報告っぽい連絡を関係の先生方に投げた。

●da2 授業処理
小テストの受験状況に基づいて、K'sLife の出席登録データを修正した。
今回と前回の小テスト正解PDF版を授業用Webサイトに掲載した。
今回と前回の得点の修正とデータ入力が残っているが、これは次回にK先生にやってもらうことにする。

2016/12/07(水) 演習2 授業実施、C3PO 合同ゼミ

●lt 授業準備(次年度)
続き11/18(金)会議の議事録をようやく仕上げ、 Dropbox に置いた。

●演習2 授業実施
3限目に第10回を実施した。出席4名、欠席2名(Saiくん、Naくん)。結局 WCV の高校生受け入れは無かった。
最初に各受講者の進捗を確認した。Skくんは演習課題2までについてレポートを執筆中とのことであった。
演習課題2.5を与えたSbくん、Smくん、Miくんのうち、Sbくんはまだ開発中であった。Smくんは開発をほぼ終わらせており、資料が少し残っているということであった。スクリーンとプロジェクタで成果発表をさせ、その場で見つかった不備については修正を指示した。
Miくんはまだスタート地点の近くで要領が判らないままうろうろしているといった風であった。資料も作例も与えたうえで明確に指示しており、他の学生にはそれで誤解なく伝わっているので、それでもここまで話が通じない相手となると指導のしようがない。
残りの時間には各受講者に演習の続きに取り組ませ、質問があれば適宜対応した。

●卒業研究の指導
Taくんから、 dusk で Qdmail を動かすとエラーメッセージが表示されるという相談があった。見ると確かに deprecated 云々というメッセージがいくつも表示されていた。 .htaccess を書いて error_reporting の値を変更すれば解決するかと思ったが、ファイルをうまく保存できなかったり dusk で .htaccess がうまく動かず Server Internal Error になったりして解決までに手間取った。問題の原因を整理すると次の通りである。

(a) Windows のフォルダウインドウ(エクスプローラ)で .htaccess が見えない。Windows の設定のせいかと思ったがフォルダウインドウのオプションをいじっても解決しなかった。原因はよくわからない。たまに見かける、どこかでキャッシュが悪戯している現象かもしれない。

(b) テキストエディタで .htaccess という名前での保存ができない。コマンドプロンプトで rename などのコマンドを使った。私にとっては簡単に解決できることであるが、卒研生はあまり Windows のコマンドプロンプトに馴染みがないので自力解決は期待しがたい。

(c) サーバ dusk の Apache HTTP Server の設定で AllowOverride ディレクティブの引数に Options を加えていなかった。これはサーバの設定を変えて解決した(後述)。

(d) .htaccess で php_value を指定するときには E_DEPRECATED のような定数ではなく数値リテラルを使わなくてはならない。面倒になって結局Taくんの .htaccess の設定は 0 にしてしまった。

●計算機環境の整備
★サーバ設定変更
前述(c)のためにWebサーバ (dawn, dusk) の Apache HTTP Server の設定を変更した。直接関係しない他のWebサーバ (aurora, nimbus) でも同じ設定変更を行った。
・/etc/httpd/conf/httpd.conf の /var/www/html の AllowOverride に Options を追加。
・/etc/httpd/conf.d/userdir.conf の /home/*/html_xxxx の AllowOverride に Options を追加。

●C3PO 合同ゼミ
15:00から16:10頃までS研との合同ゼミを実施した。Haくんが来週実施する実験についてその準備状況や計画を点検した。

●ホームページ委員 業務(新学科Webサイトの準備)
続き。新サーバ whitetiger で作業した。
現行の学部・学科サイトのサーバからファイルをコピーする必要があるが、そのことを指摘してもサーバの中にアクセスできる人からは反応が無いので、さしあたり必要かつ可能な部分だけを自力で何とかした。

(1) Webブラウザで閲覧できる現行サイトの画像ファイルをコピーして下記のパスに置いた。
・app/webroot/theme/logical_jp_baser/img/logo.png
・app/webroot/theme/logical_jp_baser/img/home/*.jpg

(2) PHPスクリプトやCSSファイルを編集した。
・app/webroot/theme/logical_jp_baser/Config/bootstrap.php
  ※このファイルは管理システムから編集できない。
     以下の他のファイルは管理システムからでも編集可能。
・app/webroot/theme/logical_jp_baser/css/home.css
・app/webroot/theme/logical_jp_baser/Elements/home.php
・app/webroot/theme/logical_jp_baser/Elements/home_mainvisual.php

(3) 管理システムから(1)以外の画像をアップロードしたり、ページを編集したりした。

やっているうちに baserCMS の管理要領がつかめてきた。
テーマ logical_jp_baser に含まれるファイルのうち編集を要するほとんどのものは管理システムから編集できることが判った。ただし、導入の初期段階で編集する必要のある bootstrap.php は編集できるようになっていない。
また、画像を更新するときには、もともとある画像ファイルをわざわざ探して新しいもので上書きしなくても、プラグイン Uploader で新しい画像ファイルアップロードし、各ページやPHPスクリプトに書かれているパスをアップロードされたものに変更すればよいことが判った。ただし、favicon.ico だけは所定の位置に置くしかない。
favicon なんてめったに変更しないので、あとは bootstrap.php を編集できるように設定できれば大抵の作業は管理システムからできることになる。

●電子錠登録・登録抹消
教務課から学生証再発行1件の連絡があったので処理した。
Is先生から昨日の登録変更依頼についてあらためて書類提出があったので処理した。

●進路指導Webサイトの更新
Ab先生からメールで流れてきた求人資料1点をWebサイトに掲載した。

●その他
冬休みの施設使用について学部事務室に申請書類をメール添付で提出した。

2016/12/06(火) gw 授業実施、新学科Webサイトの準備

夕方から外出し、夜に戻った。


●gw 授業実施
2限目に第11回を実施した。出席2名、欠席なし。
プログラミング演習を終わらせた。また、読解およびプレゼンテーション演習のための文献を候補の中から選ばせた。

あとで気付いたが、プログラミング演習のレポート課題を出すのを忘れていた。次週出題する。

●健スポ運営委員 業務
稟議書に捺印した。

●基礎演習2 授業準備
先週Ap先生から電話があり、評価方法について相談を受けていた。そのときは対応する余裕が無かったので後回しにしていた。この対応を今日行った。Ap先生と話した結果、1/19(木)最終回にAp先生の補習を入れるように調整することになった。最終回の時間の使い方についてTa先生に確認したかったが、Ta先生がご不在のようであったので再び後回しにした。未解決

●ホームページ委員 業務(新学科Webサイトの準備)
続き。S先生の依頼でCNCに作られた新仮想サーバ (whitetiger) の root のパスワードがS先生から転送されてきた。「あとはよろしく」の7文字くらい書いてくれてもよかろうにと思いながらサーバの設定を行った。手順は以下の通りである(試行錯誤を一部省略)。

(1) 事前導入済みソフトウェアおよびSELinux設定の確認
CentOS のバージョンは 7.2 であった。 baserCMS の実行で使用する Apache HTTP Server, PHP, MySQL は導入済みであった。管理に使いたい phpMyAdmin は導入されていなかった。 SELinux は disabled であった。

(2) phpMyAdminの導入
次の手順で導入した。
wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
rpm -ihv epel-release-7-8.noarch.rpm
yum --enablerepo=epel search -y phpMyAdmin
yum --enablerepo=epel install -y phpMyAdmin
また、phpMyAdmin にアクセスできる範囲に大学のサブネットを追加した。
(/usr/share/phpMyAdmin の Require ip と Allow from に大学のサブネットを追加)
vi /etc/httpd/conf.d/phpMyAdmin.conf
最後に httpd を再起動した。
systemctl restart httpd

(3) MySQLの設定
phpMyAdmin に root でログインしようとしたができなかった。シェルから mysql -u root でも試したが上手くいかなかった。CNCに電話で尋ねたところパスワードが既定値ではなかった。教えてもらったパスワードで phpMyAdmin にログインし、すぐに変更した。

(4) データベースの作成
baserCMS 用のデータベースを作成した。
create database `basercms_db`;
grant all on `basercms_db`.* to baseruser@localhost identified by '********';

(5) .htaccess の有効化
Apache HTTP Server の設定を変更して .htaccess を使用できるようにした。
(/var/www/html の AllowOverride を None から変更)
vi /etc/httpd/conf/httpd.conf

(6) CentOS の更新・再起動
yum update
reboot -n

(7) baserCMS の導入
(7-1) 現行の学部・学科サイトと同じバージョンの baserCMS の書庫(zip)ファイルを展開し、中身を /var/www/html の直下に置いた。
(7-2) Webブラウザで http://新サーバ/ にアクセスしてインストーラを実行した。
(7-3) 画面表示を見ながら必要なディレクトリに chmod a+w した。
(7-4) データベースの設定を入力した。
(7-5) 管理アカウントとパスワードを設定した。
(7-6) テーマ logical_jp_baser を導入した。
(7-7) プラグイン Uploader を導入した。
(7-8) aurora からエクスポートしたデータを復元機能でインポートした。
(7-9) (7-5)の管理アカウントのパスワードを再設定した(要注意)。
(7-10) favicon.ico を app/webroot と app/webroot/theme/logical_jp_baser の2か所にコピーした。

(8) 閲覧確認
トップページ http://新サーバ/ および管理システム http://新サーバ/admin にアクセスした。

(9) アイコンの変更
新学部のイメージカラーは緑であるので、アイコンの色を青から緑に変更し、これで(7-10)のアイコンを上書きした。

ここまでの作業結果をメールで関係の先生方に連絡した。

●演習2 学生対応1
受講者1名の来室があり、演習課題2.5のプログラミングについて相談されたので対応した。一部私のほうから大きなヒントを出したので、その代わりにその中で使ったコード(関数 strpos と演算子 !== )について必ず調べてレポートに書くようこの受講者に指導した。

●演習2 授業準備
明日の授業で演習課題3の説明をするための準備を行った。
サンプルプログラムは演習課題2のときの作例がオーバースペックであるからそれで十分である。設計資料も作った。プログラミングの難しいところに関するサンプルコードも先週作った。あとは説明用のスライド資料を作れば完了するはずであった。
ところが、スライド資料を作っているうちに設計資料に適切でない部分があることに気付いた。また、サンプルプログラムを dusk から dawn のサンプルコード集に移そうとするとテーブル名やコメントを変更する必要があることが判った。
資料作成に加えてこれらの改訂を行い、さらに授業用Webページの更新もやったら、結局3時間くらいかかった。

●電子錠登録・登録抹消
Is先生からメールで登録変更を依頼されたが、依頼内容に不明の点があったので確認のため返信で問い合わせた。

2016年12月7日水曜日

2016/12/05(月) 冬季卒研中間発表会(1日目)、導入1, PB演習 授業実施

●冬季卒研中間発表会(1日目)
2限目に冬季中間発表会を開催した。出席4名、欠席2名(Ohくん、Okくん)。
Koくんの発表を聴いた。他に発表者がいなくて結構時間が取れたこともあり、時間をかけて指導した。その内容はKoくんにとっては厳しかったであろう。こういうときに柔らかく指導するというのがどうもうまくできない。

●導入1 授業実施
3限目に授業を実施した。出席13名、欠席なし。
最初に各チームの進捗を確認した上で、計画的に進めるようあらためて指導した。
また、演習と並行して受講者のうち3名との面談を行った。

夜に面談の内容を整理し、その概要をK'sLifeに所見として登録した。

●PB演習 授業実施
4限目・5限目に顧客役として参加した。例によってぶっ続けでレビューを行ったが、今回は2時間半くらいで区切りがついて、17:35頃に予定を消化した。
18:00からの終了ミーティングにも出席した。今回も主要な報告はEtくんに任せて、私は少し補足として発言した。

●PB演習 授業処理
顧客レビューを録音したMP3ファイルに、ノイズ除去や増幅などの処理を施した上で、 Google ドライブの所定のフォルダにアップロードした。

●PB演習 学生対応
あるチームから(レビューとは別に)設計書を点検してほしい旨を依頼された。20分間と時間を区切り、そのチームの学生が持参した Excel ブックにざっと目を通して不備を指摘した。

●gw 授業準備
論文読解演習のための文献を用意した。国内学会の適当な研究会報告を見繕い、まとめて圧縮して授業用Webページに掲載した。

2016年12月5日月曜日

2016/12/04(日) 卒業論文の添削

半ばはオフ。


●卒業研究の指導(卒業論文の添削)
続き。Taくん、Okくん、Muくん、Koくんの卒論第1稿の添削を終えた。まだ先は長いという印象である。

●PB演習 バーチャルレビュー
11/30(水)12/03(土)に行ったバーチャルレビューについてS社の方々から Slack で回答があった。特に昨夜レビューしたシステムテスト設計にはまだ問題があるということであった。これに対し、自分なりに解決案を検討し、それに必要な追加テスト項目のサンプルを作って Google ドライブに置いた上で、その旨を Slack で連絡した。これは一つの例として採用されることになった。

2016年12月3日土曜日

2016/12/03(土) 情報処理学会のアンケート(情報学分野の教育に関する現状調査)

午前休養。午後からオフィスに。


●面談
続き。部分的には、ものの考え方、感じ方を変えていかないといけないのであろう。

●情報処理学会のアンケート(情報学分野の教育に関する現状調査)
回答しなくてはならない。「調査項目に関する詳細説明」という文書が解りづらい。自分で理解するのはあきらめてYa先生のガイドラインに従って作業することにした。
まず、複数教員で担当しているクラスについては誰が回答するかを明確にしておかなくてはならない。基礎演習1, 2については自分が代表であるから、念のため自分が回答する旨を他の先生方にメールで連絡した。sw についてはG先生と自分のどちらが代表ということもないので、G先生にメールで提案して自分が回答することについて了解を得た。PB演習は黙っていてもIn先生が代表ということで良いであろう。
あとは、Ya先生のガイドラインに従いExcel で科目ごとに回答の基礎データを作り、これを集計して回答を作り、回答用の Excel ワークシートに貼り付けた。結果のファイルをメール添付でYa先生に提出した。

回答用の Excel ファイルに最初から科目ごとのデータを集計するような仕組みを入れておいてくれたら良かったのにと思う。このように回答が困難で苦痛を感じさせるアンケートを実施するのは、情報処理学会の担当者が全くの経験不足であるか、よほど切羽詰まった事情でもあったのであろう。とにかく腹立たしい。

●卒業研究の指導
研究室内 Wiki のサーバに関する記述をもう少し解りやすくなるよう改訂した。

●学生コンテスト企画
実行委員長から協力教育機関宛てにメールで当日の予定が送られてきたので、多少の補足を付けて学部の先生方に転送した。

●ホームページ委員 業務(新学科Webサイトの準備)
続き。S先生からCNCへホスティング申請が提出された。また、それと別にS先生から返信があった。その中に移行や統廃合の計画に対するはっきりした回答はなかったが、この流れはどうやら大体決まりと思ってよいようである。サーバの名前については広報用としてカッコいいほうがいいと思う旨を返信した。

●計算機環境の整備
★NFSに関する検討
結局何が問題であったのか気になったので、もう一度調べてみることにした。「CentOS 7 で作るネットワークサーバ構築ガイド」の p. 548 に次のようなNOTEがあることに気付いた。
-t nfs オプションを省略した場合、どのバージョンが使用されるかはクライアントの標準設定により異なります。CentOS 7 では NFSv4 が標準です。
今まで NFSv3 で使っているつもりで FreeNAS 側は v4 を無効にしていたが、これを有効にするのが適切であったということのようである。この機会に過去の NFS に関する作業履歴を確認した。
PHP の session_save_path() がうまく動かなくて苦しんでいたことを思い出した。そこでテストスクリプトを実行してみたところ、問題なく動作した。どうやらこれも解決したようである。

●PB演習 バーチャルレビュー
帰り際になって、バーチャルレビューが残っていることに気付いた。三つの班から提出された5点の資料を検討し、結果を Google スプレッドシートに記録した。また、これについて Slack で報告した。

2016/12/02(金) 業務

ひどく疲れを感じて、うまく働けなかった。


●進路指導Webサイトの更新
Ab先生から流れてきた資料2点をWebサイトに掲載した。

●健スポ運営委員 業務
健スポセンターからメールで、稟議書に捺印してほしいとの連絡があった。やり取りの結果、12/06(火)に書類を持ってきてもらって捺印することになった。

●面談
13:00からN学部長と面談した。詳細略。話が終わらず、翌日に持ち越すことになった。

●卒業研究の指導(卒業論文下書きの添削)
少しやった。執筆要領を無視したような原稿に腹が立つ。未完了

●業務
14:40からのところ、少し早めに行って取り掛かった。詳細略。

●JABEE WG: 演習2 Webレポートの保存の準備
K'sLife で学生を履修登録および成績で検索して、今学期に演習2を履修している学生(履修登録はあり、成績は無い学生)を抽出した。これに基づいて、Webレポートを保存するバッチ処理に与えるデータを作った。

●ホームページ委員 業務(新学科Webサイトの準備)
続き。S先生とC先生からメールで返信があった。これは単にサーバの名前をどうするかといった話にとどまらず、サーバ移行や統廃合の計画を明確にしておかないと話がうまく進まなくなるように思ったので、自分の意見を書いて返信した。結構長くなった。

2016/12/01(木) 卒研ゼミ、da2 授業実施

●da2 授業準備
来週の第12回の資料を準備した。
昨年度の独自スライド資料に、クイックソートによる配列内の要素の移動を詳しく見せるための紙芝居的なスライドを7ページほど追加した。このスライド資料と3クラス共通のスライド資料のPDF版を作り、授業用Webページに掲載した。PDF版と履修者名簿のハードコピーを作った。

●入試広報委員 業務
da2の準備をしているうちに、昼休みに開催された入学案内の説明会に出席しそびれた。またやらかした。

●卒研ゼミ(卒業論文第1稿の〆切)
3限目に卒論第1稿の受け取りを行った。出席2名(Okくん・Taくん)、欠席3名(Ohくん・Koくん・Muくん。いずれも日報ブログ相互点検による出席除外)。
まず、日報ブログ相互点検の状況を確認し、きちんとしていない卒研生は出席を認めない旨を告げた。これは別に今回だけの話ではなく、いつもの措置である。

次に、卒論の執筆要領について簡単に確認した上で、OkくんとTaくんに卒論の相互点検をさせた。その上でそれぞれの原稿を私自身がその場で点検して気付いたことを指導した。
最後に、この原稿に書き込んだ注釈を本人の手元に残すため、brother の複合機でスキャンしておくように指示した。ここで時間切れになったので、原稿を受け取るまでに至らなかった。結局本当に原稿を受け取ったのはda2終了後の夕方であった。

出席を認めなかった3名にも、最後にTaくんの原稿にコメントするところでは出席を認め、横で話を聴かせることで一応の指導を行った。3名のうちKoくんとMuくんの2名からも夕方に原稿を受け取った。

●da2 授業実施
4限目・5限目に第11回を実施した。
いつものようにまず小テストを実施した。次にその正解を解説した。今回はハッシュ法の用語を説明するのに黒板を使った。こういう用語は知らないと話が通じないので、この機会にぜひ覚えてもらいたい。
次に講義を行った。今回のテーマはバブルソート、選択ソート、挿入ソートであった。4限目のうちにスライド資料を片付けてもまだ時間が10分間程度余ったので、受講者にしつこく質問がないかどうかを問いかけた。二つの質問が出てきたので回答した。

(質問1) 挿入ソートで挿入が行われる過程が解らない。
配列の要素をひとつずつズラして一か所空いたところに要素を置く処理についてである。この程度の処理は簡単だと思って詳しく説明していなかった。黒板で説明した。

(質問2) 安定の説明が解りづらい。
独自のスライド資料にあったスライドをもう一度見せて、ゆっくり説明したところ解決したようであった。しかし、スライドに改善の余地があるということかもしれない。

4限目の途中で入試広報のための写真撮影が入った。受講者が協力してくれたのは助かったが、数年前の学部新入生オリエンテーションの際に貰ったスタッフジャンパーを着ていたら、脱いだほうが教員らしいと言われたのは納得しがたかった。

5限目には演習を指導した。ほとんどの受講者は早々に退室した。最後に残った1名はプログラミング問題で手こずっていたが、その理由はJavaソースファイルのコピペの仕方を間違えていたというもので、5限目終了時刻と同じくらいに解答を終えた。
他に課題(上級問題)に取り組んで居残る受講者もいたが、私は今回はそれに付き合わずに撤収した。次回に採点する。

●ホームページ委員 業務(新学科Webサイトの準備)
続き。昨日の作業結果についてMLに流しておいたところ、S先生から返信があった。新サイトを置くサーバをCNCにホスティングしてはどうかということであった。ホスティング申請に必要なサーバの容量などについて返信した。

●da2 授業処理
小テスト受験状況に基づき K'sLife の出席登録データを修正した。他は未処理

●計算機環境の整備
★NFS に関する検討(動作確認)
続き一昨日に baserCMS を触ったことと、今日の卒研ゼミで Ok くんに baserCMS や WordPress といったCMSについて話したことから、研究室内サーバで学生が出来合いの Web アプリケーションを動かせるかどうかが気になってきた。そこで、最新版のインストールと簡単な動作確認だけでもやっておくことにした。
まず、 baserCMS の最新版 4.0.1 はすでに入手済みであったので、 WordPress の最新版 4.6.1 をダウンロードした。次に、NFS にあるホームディレクトリに baserCMS と WordPress のそれぞれを展開した。baserCMS の .htaccess には一昨日に学んだ修正を加えた上で、研究室内の実験用サーバ dusk にWebブラウザからアクセスして、インストールを行った。 WordPress ではデータベース名にドットを含んではならないというような制限が無くて良かった。インストール後に、コンテンツはデフォルトのまま、それぞれ閲覧できることのみを確認した。
このあとコンテンツを真面目に構築していくと何か不具合が見つかるかもしれないが、これも気長に調べることにする。卒研生か3年次生にやらせてもいいかもしれない。少なくともインストールまでの指導はできるようになった。

●その他
新学科の採用人事に関連して応募書類に目を通した。

2016年12月2日金曜日

2016/11/30(水) 演習2 授業実施、新学科Webサイトの準備

●演習2 授業準備
受講者に現在指導しているのは演習課題2ないし2.5の実施とそこまでのレポートの作成である。演習課題3は次回に与える予定であるが、今回のうちに先出しする流れになった場合に備えてサンプルコードを作成した。

●演習2 授業実施
3限目に第9回を実施した。出席6名、欠席なし。
最初に、就職活動に関するガイダンスや、次週はWCVのため高校生を受け入れる可能性があることを連絡した。次に、各受講者の進捗状況を確認した。まだSaiくんを除くとどのチームも演習課題2を終わらせていないということであったので、それについて作業するよう指示した。Saiくんにはレポート作成を続けるよう指示した。
残り30分間になったところで、開発したシステムをサーバ dusk に置く手順を説明した。
演習課題3に触れる時間的余裕は無かったので、今日作ったサンプルコード(前述)は結局使わなかった。

さて、Miくんは「『テーブル設計』が何なのか分からない」ということであった。しかし、Webアプリケーション開発の入門書を1冊終えたのであるから、ここで言うテーブルが何であるかはもう知っていなくてはならない。また、この授業の中でもテーブル設計のサンプルを提供しているし、他の受講者の成果発表にもテーブル設計は何度も出てきたので、「何なのか分からない」というのはおかしな話である。そろそろ指導の限界を感じる。

●da2 授業準備
明日の第11回に備えて履修者名簿のハードコピーを作った。

●CNC運営委員 業務
11/25(金)の委員会について学部の会議で報告するため、会議資料の表紙のみを学部事務室にメールで提出した。

●ホームページ委員 業務(新学科Webサイトの準備)
続き。In先生から現行のWebサイトの baserCMS の管理アカウント情報を教えてもらった。サーバ自体のユーザアカウントは無いのでファイルシステムに直接触ることはできないが、baserCMS の管理システムからデータを見たりエクスポートしたりはできるはずである。次の手順で作業し、現サイトのコピーと新学科Webサイトとしての改修を行った(一部の試行錯誤は省略)。

★現サイトからエクスポート
1) 現行のWebサイトの baserCMS に管理アカウントでログイン。
2) [システム管理]-[データメンテナンス]-[データのバックアップ] でエクスポート。

★作業用サーバの準備
3) baserCMS を公式サイトからダウンロード。バージョンは最新ではなく現サイトのものに合わせた。
4) ダウンロードした中身を研究室のサーバに展開。
5) .htaccess を編集した。これについては CakePHP のルールに従うようである。
6) app のセキュリティコンテクストのタイプを httpd_sys_rw_content_t に変更。
  chcon -R -t httpd_sys_content_rw_t app
(httpd_sys_content_rw_t に設定すると httpd_sys_rw_content_t と表示される。詳細不明)
7) 研究室のサーバにWebブラウザでアクセスし、 baserCMS のインストールを開始。
8) インストールの途中で、研究室のサーバの MariaDB に必要なデータベースを作った。
  create database `basercms_db`;
  grant all on `basercms_db`.* to xxxxxx@localhost identified by '******';
9) インストールを完了。インストールの過程で管理アカウントを設定。
10) 現サイトと同じテーマを導入。
11) 現サイトと同じプラグインを導入。

★新学科サイトとしての改修
12) [システム管理]-[データメンテナンス]-[データの復元] でインポート。
13) 9)で設定した管理アカウントのパスワードを設定しなおした。アカウント設定 もしくは [システム管理]-[ユーザ管理]
14) サイト設定を調整した。[システム管理]-[サイト基本設定] 画面の下に [オプション]
15) コンテンツを編集しまくった。ほとんどは公開停止。

★使ってみて判った baserCMS の注意すべきこと
・baserCMS をWebサーバのドキュメントルート以外に置くときには .htaccsss を編集しなくてはならない(上記5)。
Webサイト全体を baserCMS で管理するつもりなら問題にならないが、サブディレクトリに置くときにはこの作業が必要のようである。baserCMS を展開したときのトップディレクトリにある .htaccess に次のような行を追加しなくてはならない。
  RewriteBase /xxx/xxx/basercms/
バージョンによっては app/webroot/.htaccess にも追加が必要のようである。
  RewriteBase /xxx/xxx/basercms/app/webroot/
これについての記載は baserCMS のインストール手順に関するページには見当たらなかった。

・baserCMS の app 以下は書き込み可能に設定しておかなくてはならない(上記6)。
SELinux のセキュリティコンテクストで httpd_sys_rw_content_t などのタイプにしておく。
また、パーミッションも 777 にしておく。

・baserCMS で使用するデータベース名にドット(ピリオド)が含まれてはならない(上記8)。
研究室の運用ルールでは研究室内のサーバに作るデータベースの名前にはドットで区切ってユーザ名などを入れることにしている。このルールに従うと baserCMS のインストールはうまくいかない。今回は baserCMS のためにルール外のDBを作って問題を回避した。
baseCMS の最新バージョンでは、データベース名に関する制約についてインストール中にメッセージを表示するが、バージョンによっては単にエラーになるだけであった。

・baserCMS でデータの復元を行ったらすぐに管理パスワードを設定しなおさなくてはならない(上記12, 13)。
今回作った作業用サイトの管理用パスワードは現行のWebサイトに合わせた。それにもかかわらず、「データの復元」機能で現行サイトからインポートを行うとパスワードが化けてしまうらしく、いったんログアウトするとログインできなくなった。PHPやMySQL (MariaDB) のバージョンまでは合わせなかったからそのせいかもしれない。

・baserCMS のサイト管理機能にはオプションがある。
[システム管理]-[サイト基本設定] 画面の下に [オプション]ボタンがある。見逃さないようにすること。

●計算機環境の整備 
★仮想サーバの保守
認証について保守を行った。

●PB演習 バーチャルレビュー
進捗が著しく遅れている班の構想設計書を簡単にレビューした。その旨を関係各位に Slack で伝えた。

●その他
またもや溜まり始めた書類を整理した。

As先生からメールで大学院の授業アンケート改訂案について確認依頼が来たので、確認して意見を返信した。

2016/11/29(火) gw 授業実施、計算機環境の整備

●システム運用室 備品プリンタの申請
続き。学部事務室からメールで申請内容について問い合わせがあったので回答した。

●gw 授業実施
2限目に第10回を実施した。2名とも出席。
前回は欠席者がいたので、授業は先に進めず少し寄り道するようなとこをした。今回は受講者が揃ったのでちゃんと先に進めた。予定より遅れているが、もう少しでプログラミング演習は終わりそうである。次回までに文献を準備しておかなくてはならない。

●進路指導Webサイトの更新
Ab先生からメールで流れてきた学内合同企業説明会の資料2点をWebサイトに掲載した。

●学生コンテスト企画 協力
12/17(土)のコンテストに出席するため、近接地出張願を作って学部事務室に提出した。

●日報ブログ相互点検システムの改修(管理機能)
続き。PHPスクリプトおよび MariaDB 内のデータベースをサーバ dawn から dusk にコピーした。また、今までなかった [戻る] リンクをつけるといった程度の軽い改訂を行った。これをきっかけにリンクメニューについて悩み始めた。とにかく作るのなら簡単であるが、学生にサンプルとしてコードを提供することを考えるとコードの構成をきれいに作る必要がある。

●公開授業参観
火曜4限目に実施されているN先生の研究科の授業を参観した。興味深いところがあった。
参観後に参観アンケート回答を作り、学部事務室に提出した。

●計算機環境の整備
★仮想サーバの保守
研究室の仮想サーバ aurora, dawn, dusk (いずれも CentOS 7)の3台で sudo yum update を実行した。

★NFSに関する検討
続き。探しておいたWebページを読んだが、これはという決定的な情報らしいものは見当たらなかったが、とにかくファイルのロックに関する機能は NFSv3 にも v4 にもあること、v4 ではRPC関係のプログラム構成が v3 から変更されたことは判った。今回自分が悩んでいる問題も、このNFSのバージョンと関係があるかもしれない。
NFSクライアント側の fstab を見たところでは v4 ではなく v3 が使われているようであり、FreeNAS 側では v4 を使わない設定になっている。クライアントとサーバとでNFSのバージョンは合っているはずであるが、v3 の機能の一部が何らかの理由で動いていないのかもしれない。これを解決するのがキレイであるが、単純にv4 にするのが簡単かもしれない。
悩むのが面倒になったので実際に試してみることにした。

1) ファイルサーバ moonlight (FreeNAS 9.10) のNFS設定において "Enable NFSv4" にチェックを入れた。
2) NFSクライアント側である dawn と dusk (いずれも CentOS 7)を sudo reboot -n で再起動した(/etc/fstab 変更なし) 。
3) moonlight に PukiWiki を置いた。dawn, dusk の httpd はこれにNFSを通じてアクセスできる。
4) Webブラウザで dawn や dusk にアクセスした。

結果はまぁまぁ良好であった。NFSv4 を有効にする前は、Webブラウザで dawn や dusk にアクセスしても NFS 上の PukiWiki はマトモに動作せず、しばらく待たせたうえで flock が失敗したというようなメッセージを出力するだけであった。今回 NFSv4 を有効にしてからは PukiWiki のページが表示されるようになった。
ページの編集を行うと、(待たせずに) pkwk_chown(): flock() failed というメッセージを表示するが、ページの更新自体は正常にできるようにもなった。恐らく更新履歴の処理のどこかでコケているのであろうが、chown はどうしようもないであろう。

NFSクライアント側で /etc/fstab の nfs を nfsv4 に変更していないので、読んだ限りのドキュメントが正しければ NFSv4 を使う設定にはなっていないはずであるが、さしあたりこれでいいことにする。
(2016/12/03追記: 書籍 p.548 によると「CentOS 7ではNFSv4が標準」とのこと。)

●電子錠登録・登録抹消
昨日教務部から学生証再発行2件について連絡を受け取っていたので処理した。

●その他
S研の院生1名の修士論文について副査を引き受けた。

2016/11/28(月) 導入2, PB演習 授業実施

●PB演習 授業準備
バーチャルレビュー結果にS社のMさん、Kさんが追記していたので目を通した。

●システム運用室 備品プリンタの申請
続き。S社のNさんからメールで、次年度の実際の導入台数について見通しを尋ねられたので、個人的な予想を回答した。
折り返し見積書を受け取ったので、申請書類を整えて学部事務室に提出した。

●業務 会議
学部の会議。詳細略。

●導入2 授業実施
3限目に第10回を実施した。最初に前回までの進捗と今回の作業予定を確認し、残り回数が少なくなりつつあることに注意を促した。

授業と並行して3名と面談を行った。次回以降もこれを続け、何回かに分けて全員と面談するつもりである。面談の記録は授業後に整理、その概略はK'sLifeに所見として記録した。

●PB演習 授業実施
4限目・5限目に顧客役で参加し、S社のKさんおよびS研のEtくんと一緒に設計レビューを担当した。
6限目には終了ミーティングに出席したが、今回も顧客役からの報告はEtくんにお任せした。私自身は多少補足を喋ったのみである。

夜にレビューの録音を処理して Google ドライブの所定のフォルダに置いた。

●ホームページ委員 業務
続き。11/19(土)にS先生から返信を受け取ったまま止まっていた。今後の作業の進め方についてTo-Do項目案を書き出して返信した。