未来永劫

メリーバッドエンドが好きです.

図書館情報学徒が作ったシステムは(大抵)危ない

この記事はklis Advent Calendar 2015 10日目の記事です.www.adventar.org

Who Are you?

shopetan.hatenablog.com

前置き

情報システムとは.大雑把に以下のような事を指すらしいです.

情報システムとは、情報を適切に保存・管理・流通するための仕組み。

情報システムとは|コンピュータシステム|information system - 意味/解説/説明/定義 : IT用語辞典

本題

さて,私達図書館情報学徒は弊学で知識資源を扱うための術であったり,システムの構築なども(ぼんやりと)学びます.
例えばですが,今年私が受講する限りでシステム構築を行った授業は以下の通り.

  • 主専攻実習
  • 知識情報演習(CJE)
  • Webプログラミング
  • DB演習,DB技術etc...

まぁ内容はまちまちで,PHPを書いてたりRubyCGIを書いてたりフレームワークを使ってたりと 結構様々な手段を学びます.

が,

お前らが作ったシステムは(大抵)危ないぞ.というお話です.

システム主専攻として目指している所

知識情報システム主専攻はどんなところ?
 知識情報システム主専攻は情報技術に注目します。インターネットに代表される情報技術の進歩により、人類はかつてない膨大な知識と情報を共有しています。この知識や情報を有効に活用するためには、効率よくあつかうための高度な技術が不可欠です。

  知識情報システム主専攻では、知識情報の分類や構造化、 Web における知識情報の提供と共有技術、多様な知識情報の表現と管理のためのデータベース技術、知識情報から有益な情報を取り出す情報検索技術、ディジタルライブラリをはじめとする知識情報システムの実装技術などを修得します。

筑波大学 情報学群 知識情報・図書館学類


とりあえず知識資源の扱い方を学んだり知識情報システムの実装技術を取得するそうです.

そもそもこのKlisで勉強すること

Klisでは一般的に,必修科目として1年次にrubyを勉強します.
この必修科目の酷さは他に譲るとして,プログラミングは1年生の半期,2年生の必修で半期程度勉強します.
その後の3年次に主専攻という枠組みで各専攻ごとの授業を受ける事になるわけです.

で,私が所属している知識情報システム主専攻なのですが,知識資源を扱う授業は確かに豊富で,図書館という枠組みを中心に授業が行われています.
しかし,システムと名がつく割に,そもそものシステム開発方法を学べたり,システムを扱う哲学的な講義などはありません.
その結果,自由課題に直面した時に黙々とCGIで何千行書いている人も居ますし,フレームワーク使って賢く開発している人も居ます.
全然出来ない人も当然居ますね.

何が言いたい

私はシステム開発を学ぶ以上,全員が何らかのフレームワークを活用して自力で作成できるレベルに水準が上がるべき と考えています.
我々は,OPACを始めとした情報検索システムや知識にまつわるシステムを作ります.
その開発に,知識資源を扱う以上,知識資源となる"データ"を守る必要が出てきます.
私たちは果たして,学内で学んだ知識のみで大切な知識を守ることが出来るでしょうか?

例えばセキュリティ

おそらく,この学類で具体的にセキュリティを学べる講義は無いと思います.
ただでさえ最近騒がれているのに,システムだけ作らせて肝心なところはカバー出来ていません.

例えば運用・保守

人に見せられるコードをかけていますか?
後で自分が見た時に,内容を説明できますか?

そこでフレームワークです.

例に挙げるのはRuby on Railsという,rubyで書けるWebアプリケーション・フレームワークです.
Railsは,大きく分けて3つの理念を持ったフレームワークです.

1. CoC(Convention over Configuration)
「設定より規約」という意味です.
開発者側で設定を考えずとも,規約として決まり事にすれば余計な手間がかからない.
コードの多様性が減るので保守や運用もし易い.


2. DRY(Don’t Repeat Yourself)
「同じ事を繰り返さない」という意味です.
複数の修正が必要なく,単一の修正で済むように設計されています.

3. REST(Representational State Transfer)
Webの設計思想の一つです.
ここは割愛します.

また,大事な理念として,レール(規約)の上を歩けば安全なシステムが作れる.
という理念があります.
早い話,Railsの決められた書き方をすれば,殆どのセキュリティ上の心配事は無くなるという意味です.

最近では,フレームワークに則った書き方をすればセキュアになるようにしようという動きが多々あります.
開発者が難しいセキュリティの事を考えずとも,使うだけで安全なアプリケーションになるように設計が行われています.
使う以外の選択肢は無いですね!(というか自信がない人ほど使って下さい.)

Railsが出来るようになるためには?

Railsは比較的重量級のフレームワークのため,Webアプリケーションまったくの初心者が作るのはオススメ出来ません.
幸い,我々は2年次にCGIで動的なページを作る事を勉強しています.
「一般的なWebアプリケーションの作成が出来るレベルに立っている」ということです.
Railsは学習コストが高いことで有名ですが,反面,多くの先駆者がいるメジャーなフレームワークのため,ドキュメントが豊富です.
また,書籍等も多く充実しております.
Railsが難しいようであれば,sinatraという軽量のフレームワークなども存在します.

以下にオススメのサイトを貼っておきます.

railstutorial.jp

www.slideshare.net
有名なチュートリアルサイトであるが,少し敷居は高い.
歩き方と合わせてどうぞ.

dotinstall.com
こちらはドットインストールさんの入門.僕はコレで覚えました.

openbook4.me
これに沿って作るだけで簡単なWebアプリケーションが作れます.
こちらは本当に分かりやすいのでおすすめです.

終わりに

自力でシステムを作るための道筋を紹介しました.
講義で習っただけの知識で作成するシステムは危ないです.
また,就職にあたっても,エンジニアとして求められるレベルは,この程度の知識を持って作れるという事がラインになっている気もします.
開発側としてシステムに触れる以上,自力で簡単なモノが作れる程度の実装力は付けておきたいですね.