CakePHPを学ぶ(1)

 本研究室ではもっぱらスクラッチからPHPとMySQLを使ってWebアプリを作成してきましたが,ボチボチMVC(Model-View-Control)思想に基づくPHPフレームワークにも取り組む必要が出てきた感じています。スクラッチビルドも悪くないですが,正直同じ教材を毎年使うのも飽きたので更新したいという事情も手伝っています。

 ということで昨年12月からCakePHPで遊んでみましたが,Tutorialは手っ取り早く勉強できてありがたいものの,作りたいWebアプリを自在に組み立てるのは思いのほか難儀で,Bakeが作った雛形から脱していない代物が多いのも頷けます。年寄なので,Visual Basicが流行った頃を思い出しますね。結局,作り込むためには地道なプログラミングをしないといかんと。

 ということで本日反省がてら作ったPowerPoint資料を上げておきます。

 ということで,

  1. ユーザ認証機能のカスタマイズ(任意のテーブル名でユーザ管理できるように)
  2. 全体的なデザインの変更とカスタマイズ
  3. Webサーバへのアップロード方法の模索(ユーザ単位のWebアプリとして外部公開したい)
  4. 第5章で制作する機能を全部盛り込んだサイトを構築

というところまで,今年度内に何とかしたいと考えています。ここに書いたメモを元に教材作成までできれば御の字ですね。

卒研メモ: Googleで関数グラフ描画

Googleの関数グラフ描画機能を初めて知らされたTweet

 年のせいか,新しい物事をキャッチする能力が落ちているようで,Google検索に関数グラフ描画機能が付いたことも知りませんでした。単位変換や電卓機能があるのは知っていたのですが,こういう機能までつけてくるとは,さすがGoogle,コンピュータリソースが有り余ってますね。

 1変数関数だけでなく,2変数関数のグラフも描けるようです。ちなみにz = x^2 + y^2をググってみると,下記のようになります。

x^3 – exp(x) = 0という方程式を解く時には,y = x^3 – exp(x)のグラフを描画し,x軸との交点付近を拡大して

x = 1.58718・・・ぐらいかなぁというアタリを付けることも簡単ですね。今後色々活用してみたいところです。

卒研メモ:CakePHP勉強中

 前々から,サーバサイドのWebプログラミングにフレームワークを使った方がいいというサジェスチョンを受けてたので,今年の情報セミナー2・事由政策の時間にCakePHPのTutorialを読みながら勉強しています。これを取り上げたのは下記のスライドに書いた理由に加えて,最初からBootstrapを組み込んであること。次の教材のアップデートでは最初から解説しておこうと思ってたところなので,親和性の高い内容にできそうだと判断しました。

CakePHPの簡単な紹介スライド

 ということで,本日段階でCRUDシステム部分は完成しました。次はBakeを使って認証システムを構築する所。Bakeなしでもできますが,使った方が圧倒的に楽なようなので,体験しておけという方針と理解しました。

 50の手習いですが,年内にTutorial終わらせて,ファイルアップロード処理を付けて,3月ごろまでには教材のアップデートに取り掛かりたいですね。

地域創成フォーラム2018ポスター

 例年11月最終火曜日に開催される本学主催の地域創成フォーラム用に,本研究室では毎年1枚は新しくポスターを起こすことにしています。今年は本研究室のWebプログラミングテキスト教材をネタにしました。フルバージョンは会場か本学(フォーラム翌日以降展示)でご覧下さい。

2018年度ポスター上半分

 次年度以降は,高性能計算研究ネタでパネルを作らないといけませんね。精進します。

遠江総合高等学校:オープンデータとWebアプリケーション

「オープンデータとWebアプリケーション」
静岡理工科大学 情報学部 コンピュータシステム学科
幸谷 智紀(こうや とものり)

0.【宣伝】静岡理工科大学情報学部について
静岡理工科大学情報学部のWebページ

1.オープンデータとは?
「オープンデータ(Open Data)」とは,誰でも閲覧できる状態で広く公開されているデータのことです。今の時代はデータを扱う主体はコンピューターですので,オープンデータと言っても紙媒体ではなく,電子化されているもの,即ち,コンピューターが直接読み書きできるファイルの形式になっているものを指すことが殆どです。
電子化されたデータは,コンピューター同士が繋がっているインターネット(The Internet)の上でやり取りしやすい形式ですので,公開するにしても,インターネット上で誰しも読める状態になっている方が,読む方としても都合が良いわけです。インターネットでは様々なサービスが展開されていますが,現在ではWeb(World Wide Web)を通じたサービスが普通になっていますので,オープンデータもWeb上で,つまり,データを持っている会社,行政組織,個人,各種団体のWebページ(ホームページ)上に置き,誰でもブラウザを通じて読むことができるようにしています。こうしたオープンデータを活用したWeb上のサービス,いわゆるWebアプリケーションが様々な形で展開されています。

以下,オープンデータとは,Web上で誰でもブラウザから閲覧できるようになっている電子ファイル状態のデータである,と定義します。最近では,行政機関が積極的にデータを公開するようになっています。静岡県も積極的にオープンデータの活用を後押ししていますし,静岡県内の市,静岡市,浜松市では下記のところでオープンデータにアクセスできるようになっています。

オープンデータは,単なる公開情報という存在を超えるものです。コンピューターで利用しやすいファイルの形式になっているということは,そのままソフトウェアで加工できることになります。これをうまく活用することで,より便利なWebアプリケーションを作ることができます。

2.オープンデータをどのように活用するか?
ここでは,簡単なオープンデータの活用方法を具体例で示します。

皆さんは,「国民の祝日」,例えば正月,成人の日,建国記念日,春分の日,がどこでどのように決まっているか,ご存知ですか? 検索すればすぐに分かりますが,これは政府が法律に基づいて決めているもので,内閣府に解説ページがあります。ただ,これは情報を人間に見やすく表示しているだけで,余り使い勝手の良いものではありません。そこで,近年の国民の祝日を表計算ソフトで扱いやすい形式で公開しています。これが国民の祝日のオープンデータです。この形式であれば,表計算ソフトだけでなく,様々なソフトウェアに利用することができるようになります。例えば,下記の図は,FullcalendarというJavaScriptで構築されたスケジュール帳に,国民の祝日を上のURLからファイルを読み取り,自動的に挿入したものです(サンプル)。

但し,これはあまり使い勝手の良いものではありません。元々の国民の祝日ファイルは,単なるテキストファイルなので,データそのものを使いやすい形で形成し,流し込む処理が必要になります。例えば,上記のFullcalendarに取り込むためには,次のようなPHPスクリプト(プログラム)の手助けが必要です。

このように,直接データを取得して自動的に加工できるようになると,人間を介しての作業が不要になります。

こういうWeb技術を利用するプログラミングの詳細については,例えば本研究室の教材などを参照して下さい。

オープンデータの利用のためには,もう少し,利用者の立場に立って,使い勝手の良い形式で必要な分量のデータを受け取れるようにする必要があります。最悪な形式は,いわゆる「ネ申Excel(三重大学・奥村晴彦)」と呼ばれる,書類をそのまま表計算ソフトウェアで成形しただけのシロモノで,人間が手作業でチェックするには便利かもしれませんが,コンピューターにとっては最も加工の難しいものです。オープンデータは人間よりも,コンピューターにとって使い勝手の良いシンプルな形式であることが望まれます。

しかし,もっと使い勝手の良いオープンデータは,情報を加工したい側が欲しいデータだけをいつでも取得できるようになっているものです。そのためには,上記のFullcalendarに祝日データを渡すプログラムのように,オープンデータと利用者の間で仲介し,利用者の要求に応じた返答を返すような仕組みを作らなくてはなりません。これを実現しているのが,Web API (Application Programming Interface)と呼ばれるものです。

3.Web APIの実例
最も良く知られたweb APIは,GoogleやYahoo! Japan,Bingといった検索エンジンです。

どの検索エンジンも,URLの中に検索すべき単語を埋め込んであります。例えばGoogleの場合は

https://www.google.co.jp/#q=遠江総合高等学校

となっています。このように,ブラウザからアクセスする際に,利用者が欲しいデータの範囲(この場合は「遠江総合高等学校」を含むWebページの一覧)を指定することで,必要のないデータまで取り込むことがなくなります。

現在では様々なデータを,Web APIを通じて取り込むことができるようになっています。Google map(地図情報)やぐるなび(グルメ情報)なども,細かくデータを指定して取り込むことができるようになっています。

その他,下記のようなWeb APIもあります。

4.openBDを基盤とする書誌データの活用
オープンデータとWeb API活用の事例として,現在本研究室で取り組んでいるopenBDについて紹介します。
2017年初めに広く公開された本のオープンデータ化を進めるプロジェクトで,2017年6月現在では約90万件の本のデータが取得できます。今のところ,本のISBN番号一覧と,ISBN番号に紐づけされた書誌データ(表紙画像も含む)を取得できるWeb APIが提供されており,基本的にはユーザーがダウンロードして使用する全データを提供することを主目的としています。
本研究室でも,簡単なWebのインターフェースを提供しています。

openBD API

本一冊一冊ごとに異なるISBN番号が振られており,それが分かればその本のデータだけを入手することが可能です。しかし,普通本を買うときにISBN番号で指定することはありません。普通は,本のタイトル,著者名,出版社名,定価等で探すものです。

それを可能にするため,本研究室では全件検索ができるような仕組みを作り,公開しています。使い勝手はまだ改良の余地がありますが,これも改良されたopenBDのWeb API化の一つと言える仕事になっています。

5.おわりに
インターネットが当たり前になった今では,様々なデータを自由に取得でき,もっと便利に使うためのWeb APIの利用が盛んになっています。今後は,これらのオープンデータやWeb APIを通じてより高度なデータ解析を自動的に,例えばAIを使って行うことが普通になっていきます。
人間の側はもっと賢く,これらのオープンデータやWeb API,そしてその分析結果を使って高度な知を使いこなしていくことになります。プログラミングを行うだけでなく,それをより良い方向に生かす技術を,今後の大学生活で身につけて下さい。

[卒研メモ] DPZとconcrete5

 愛読している老舗オモシロ系Webサイト,デイリーポータルZ(略称:DPZ)がリニューアルしました。@niftyが富士通から切り離されても存続し,その後ほどなく,サイト,というより,編集部員ごと切り売りされるというあたり,信用されているブランドの強みを感じさせます。

 とはいえ,「老舗」ならではの弱みというものもあります。システム的に古いものを継続してメンテナンスしていかねばならず,HTML & CSSの改良だけで済むならデザイナーに発注すれば済む話ですが,CMSと一体化したサイトとなると,バックエンドのDB構造から考え直さないとリニューアルもままならないことになります。現状のWordPress, MovableType, NetCommonsといった,バージョンアップが頻繁な(NetCommonsはイマイチですが)CMSなら,ほぼ自動的にアップデートできますが,DPZは@nifty時代に作った独自のCMSで動いていたらしく,長らくリニューアルができずにいたようです。

 今回のDPZのリニューアルで使ったのはconcrete5という,割と新顔のCMSで,私もその存在を知りませんでした。ちょろっと検索して見た限りでは,PHP+MySQL環境で動作する,プログラミングいらずでWYSIWYGカスタマイズできることがウリのようです。とはいえ,少し複雑なことをしようとすると有償のプラグインが必要になるところは,逆にビジネス的にも有用なのかなという安心感も与えてくれますね。

 本研究室の卒研はWebプログラミングですが,この手のCMSで有用なコンセプトを持った独自サイトを構築するというテーマでもO.K.です。できればプラグインを自作するところまで到達してほしいものですが,どこまで標準的な機能だけで構築できて,どこから先は独自プラグインが必要になるのかという見極めぐらいはつけて頂きたく,卒研テーマ設定の際はこの点を考えておいて下さい。

PHP 5.6 security update終了

 WordPress用のセキュリティプラグインを提供しているWordfenceから,PHP 5.6セキュリティアップデート終了のアナウンスがありました。

 記事によれば,PHPの最新バージョンは7.2で,7.0のアップデートもあと一月で終了とのこと。一つのバージョン(Version x.x相当)につき3年のスパンでサポートしており,最初の2年が過ぎるとセキュリティアップデートのみ1年行ってサポート完全終了,という流れだそうです。

 で,慌てて自分の管理サーバも見ましたが,このblogのあるサーバはPHP 5.4という更に古い奴を使っており,もう一つの方も7.0系統でした。どちらもLinux distributionサイトからのアップデートが出ていないので,すぐにセキュリティの危機になるわけじゃありませんが,OSごとアップグレードしてやろうかという気分になってきましたが,そうなると,次のような手順でやりたいものです。

  1. バックアップ用のサーバを一台用意し,そちらを更新時の新しいOS環境にセッティングする
  2. 古いファイルを丸ごとバックアップ用サーバに移し,コンテンツがきちんと動くことを確認(特にWeb, MySQLサーバ)する。その後,現サーバマシンのDNS情報をバックアップ用サーバに書き換えておく
  3. 現サーバマシンに新しいOS環境を構築し,バックアップ用サーバからコンテンツを書き戻す
  4. きちんと動作することを確認したら,DNS情報を現サーバマシンに書き換え。

 現マシンのOS環境を毎書き換えるには時間がかかります(数時間程度)し,スッピンのOS環境を無法The Internet空間にさらし者にするのは避けるべきです。また,新しいOS環境構築の練習としてバックアップ用サーバを構築するのは役立ちます。使い終わったバックアップ用サーバの転用も考えていますので,初期投資として無駄になることはないでしょう。ちなみに,サーバ構築手順の解説は「ネコでもわかる!さくらのVPS講座」がお勧めです。

 ということで,来年3月ぐらいにはバックアップ用サーバを契約し,新年度に入る前にさっさと移行しようと計画しています。ま,見かけは変わらないでしょうが,本サーバの説明書きは大幅に変わりそうです。

Update or perish

 先週の「数値解析2」で,実習環境で使っているLinuxサーバのSamba(ネットワーク共有フォルダを提供するサーバソフト)に接続できない(「\\サーバIPアドレスが見つかりません」というエラーが出る)という現象が一部の受講生に出ました。不思議なのは,私やもう一人の受講生は普通に接続できること。接続できるグループとできないグループに分かれたことで,その時間内にはトラブルが解決できませんでした。TCP/IP接続には問題がないことは,Ping応答やTeraTerm接続ができることで確認済みです。

 後であれこれ検索してみたところ,実習用Linuxサーバの設定が古く(6年前に設定したまま放置状態),Windows 10 1709で無効化されたSMB 1.0プロトコルしか使えない状態になっていることが判明しました。Microsoftに言わせれば


SMBv1 のみをサポートする製品でこの問題を回避するには、製品の製造元に連絡し、SMBv2.02 以降のバージョンをサポートするソフトウェアまたはファームウェアの更新プログラムを依頼してください。

https://support.microsoft.com/ja-jp/help/4034314/smbv1-is-not-installed-by-default-in-windows

だそうで,ぐうの音も出ない正論です。

 ということで,Sambaの設定(/etc/samba/smb.conf)に”max protocol = SMB2″を追記して,SMB2接続ができるように変更しました。これで受講生全員が接続できるようになって一安心です。実際,PowerShellの管理者モードでGet-SmbConnectionコマンドを使うとSMB 2.0.2で接続されていることが確認できます。

PowerShellでSMBバージョンを確認

 古くからSambaやNASを使っていたり,Windows 8以下から10にアップデートしたマシンはSMB 1.0が最初から有効になっているので,問題なく接続できたのはそれが理由でしょう。あるいはWindows Updateをサボっているか,です。

 ICT技術はすさまじい勢いで進化しており,セキュリティ確保のための基盤ソフトウェアやネットワークの更新も頻繁に行われます。更新に伴う不都合が起きた時には,古い環境をそのまま維持するのではなく,Microsoftが主張するように,新しい環境に適応していく方向でトラブル対処を行うようにしましょう。”Update or perish”(アップデートせよ,できなきゃ滅びよ)はICTの世界で生きていく技術者が肝に銘じておくべき格言です。

突然の停電

 台風24号の強風により,中部電力管内,特に静岡県西部地方の送電網が至る所で寸断され,早期の復旧作業のままならない状況に陥りました。本学もそれに巻き込まれてしまい,昨日は丸一日電気が来ず,全学休講にせざるを得なくなりました。幸い本日は朝8時から無事電力を回復し,正常業務に戻ることができましたが,復旧作業のため,本日も休講と相成りました。明日からようやく平常に戻ることができます。

中部電力提供の停電状況(2018年10月2日15時現在)
http://teiden.chuden.jp/p/sizuoka.html

 本学内のネットワークは切り替えたばかりでしたが,電力の回復と同時に無線も有線も平常通り使用することができるようになりました。また,メールやWebサーバはデータセンターOffice365外部クラウドでの運用でしたので,the Internetを通じての伝達手段は本学の電力の有無に関わらず使うことができ,連絡を不自由なく行うことができたのは不幸中の幸いです。まぁこれが普通の組織のICT基盤なんですが。

 本サーバについても何の影響もなく起動し続けています。トラブルは日常的につきもの,いつでも平常業務出来るようにシステムやバックアップ体制を整えておく必要性を痛感した今回の停電騒動でした。

幸谷研究室・情報セミナー2スケジュール2018

2018年度情報セミナー2について

  • 実施日時:水曜2限目,木曜1限目
  • 場所:研究実験棟443実験室
  • 使用ソフトウェア:XAMPP for Windows
  • テキスト:暫定版

初回は443実験室ネットワークの設定,XAMPP for Windowsのインストール,輪講割り当て,連絡係の決定を行います。必ず自分のNote PCを持参して下さい。