気合でなんとか

@ningensei848が頑張った記録

Djangoを始めた話と知識情報システム主専攻について

この記事は、klis超絶雑 Advent Calendar 2017の16日目の記事です。

adventar.org

追記 2017/12/17 08:50:深夜に公開したのにも関わらず朝早くから既に当然のごとく先輩から突っ込みをいただきました。これがすべて正しい公式情報であるとかそういうわけではないことを認識したうえで(klis"超絶雑"Advent Calendar 2017であることをきちんと理解したうえで)、以下の文章を読むようにしてください。ご指摘いただき誠にありがとうございました……今後もこういうことがあるかとも思いますが、温かく見守ってもらえたらと思います。ご迷惑をおかけしました。

追記 2017/12/18 13:05 :最後に の部分にあった引用記事の一つを訂正しました。

 

 

今日一日ずっとPCで文字打っててなんかもう疲労困憊ですよ……

前日の記事前々日の記事は@seventy219さんのklisで4つの資格を取る人のお話でした。

seventy219.hatenablog.com

なかなか知識情報・図書館学類というのは、社会に出てから資格で生きていこうとする人に対しては魔境なんだなぁということが非常によくわかる良い記事でした。まだ単位落としてないってアンタすげぇよ……(累計いくつ落としたか覚えてないマン並感)

それでは本題に入っていこうと思います。今回語るのは、Djangoを始めました報告と、知識情報・図書館学類の三つの専攻の一つである『知識情報システム主専攻』について、二年次の段階で調べられる範囲の情報をまとめてみた結果です。

それでは各位、長文になりますがよろしくお願いします~~~。

目次

  1. Djangoとは
  2. なにをどうしたの
  3. PythonDjangoとこれからのはなし
  4. 知識情報システム主専攻って?
  5. なにをどうするのか&なにがどうなるのか
  6. この専攻に進むために必要なもの
  7. 主専攻ってどうやって決めるの?
  8. 最後に
  9. 全体のまとめ
  10. klisの関係者へのささやかなお願い

Djangoとは

"Django(ジャンゴ)は、Pythonで実装され、model-view-controller デザインパターンに緩やかに従っているWebアプリケーションフレームワークである"

Django の第一の目的は、複雑なデータベース主体の Web サイトの構築を簡単にすることである。Djangoコンポーネントの再利用性と'pluggability'、素早い開発、DRY (Don't Repeat Yourself)の原則に力点を置いている。ファイルやデータのモデルにいたるまで、Python が一貫して用いられている。

Django はまた、動的に生成され、データモデルの定義を通じて完全に構成することができる、データベース管理 CRUD インターフェイスをオプションで提供する。

 まぁ、だいたいのことがこのページでわかりやすくまとめられているので上記のことがぜんぜんわからん!というひとは見てみてください。

つまるところ、めっちゃ簡単にwebサービスつくれるよ!開発工程の管理が楽だよ!データベース管理とかやるならこれ使うとラクかも!!ということです。

なにをどうしたの

経緯を説明すると、以下のようになります。

 

Djangoを使ってwebサービスをつくろう!!

データ収集に特化したwebサービスつくればいいじゃん

クラウドソーシングとかクラウドファンディングとかやってみる…?

どうやってデータ集めようかな

計算機資源に投資したりモデルを研究したりする以前に、深層学習に使うための適切な処理がなされたデータがないと精度出ないし意味ないしやってらんねぇなこれ

深層学習がやりたい(chainerで実際にやってみた)=ディープラーニングで金を稼ぎたい

 

しかしここで、いざDjangoを始めようにもどうしたらいいのかわからない……という事態に直面します。Qiitaの記事見ながらしこしこやるのもいいけどそれだとなんかちょっと怖いなぁ(未経験者だし)、ということもあり、まずはどこかDjangoを使っているところ、教えてくれるようなところを探すことにしました。

プログラマが勉強会を探すといえば、connpassかなぁと私は思います。(これしか知らないからだけど)テキトーにTwitterのアカウントと連携させてサクッとログインし、「Django」で検索をかけると、なんとまぁ数えるほどしかありません…これがまだマイナーなwebフレームワークの実力なのか…と一瞬迷いましたが、ちょうどいい感じに株式会社ROBOT PAYMENTという老舗ベンチャーこんなイベントを開いてくれているのを見つけました。

【大学生・大学院生限定!】Pythonを使ったWEBアプリケーションの作り方 

日程的にもギリギリ行けるタイミングだったので、同期のみんなが知財を受けてる裏でこの勉強会に参加することにしました。

 渋谷の、しかもノリに乗っているSHOWROOMやら、富士フィルムやらが入っているビルの4階にオフィスを構えていました……このツイートは半ば酔っている状態で投稿されたものと推測されますが、あとから調べてみるとなかなかすごいところが入ってますね……(畏怖)

で、いざ勉強会が始まると、参加者の皆さんは意外に苦戦する人・スマートにすいすいついていく人、様々居て楽しかったです。Mac主体で説明されたので窓使いとしてはところどころ「?」なところもありましたが、なんとか理解することはできました。(勉強会の資料がqiitaにアップされているんですが、クローズドだったのでここには貼れません……かわりに、殆ど同様のことをしているこのページとかこのページをご参考ください)

いつか使う時が来るから~~とか、授業で使うから~~という動機でプログラミングをやるのは厳しいとは聞いていましたが、「自分でwebサービスをつくりたい!」とか具体的何か一つ目標を持つと、結構行動出来るもんなんだなぁと気づきました。またDjangoを触った感じ、そもそものpythonの知識に加えて、データベースやらそれに付随するサーバー間の知識も身に付きそうだったので是非ともイシキタカイklisには一緒にやってみようと声をかけたい所存です。

 

 一緒にwebサービス、つくろうぜ!!!!
(本当に待ってますので何卒)

 

PythonDjangoとこれからのはなし

さて、なぜこんなにもDjangoをやろうとか、Pythonはいいぞ!と言っているかというと、なんと知識情報システム主専攻はもとより(2017/12/17 14:00 訂正:それぞれ班にわかれるのでやることは異なるらしい)、CJE3(後半)においてもPythonを使い始めるという話があるからです。(前者はすでに先輩方がディ~~~~プラ~~~~ニングしている報告をTwitter上で見ている人もいるかと思います。後者に関しては未確認情報ですが、おそらくperl[railsだったかも?]を廃止してpythonに乗り換えるのは確実なのでは?という話を聞いたことがあります[伝聞推定])

追記 2017/12/19 23:30:知識情報演習IIIの後半からはpython とjupyter notebookで情報検索システムをつくることになったようです。manabaに情報上げるのが遅すぎる……(個人的な都合)

つまり、知識情報システム主専攻に進むにあたって

(どの専攻に進むにせよ)、Pythonでプログラミングすることは避けては通れない道なのです!!!! 正規表現が大好きなRubyistの方々がおりましたら、こんな表現で申し訳ありません。でも、カリキュラム上こうなっているので仕方ありませんね……。

(2017/12/17 14:00 訂正:絶対にpythonでプログラミングしなければならない!ってことではないとのこと)

(2017/12/19 23:30 再訂正:知識情報演習の後半からはpython とjupyter notebookで情報検索システムをつくることになったようです)

(2017/12/20 10:18 訂正:「知識情報システム主専攻に進むにあたって」という文言を「(どの主専攻に進むにせよ)」というものに変更しました。誤解を招く表現であったことを慎んでお詫び申し上げます)

で、そのPythonをやっていくにしても、それ単体でどうにかしようとすると、他の余分な過去の言語も学習することになり、かなりコストが高くつくことになってしま(うと私個人は思って)います。そこで、Djangoの登場です。そのDjangoでも多少の学習は必要あれど、他のレガシー的(?)な言語を学びなおすよりは、ずっと実用的で効率的だと個人的には考えています。

※なお、[Django 年収]などで検索するとこんな感じです。じゅるり。

(追記 2017/12/17 08:40 ; 図書館情報メディア研究科の先輩から「現在の主専攻実習は3班に分かれています。その1班だけがPythonを主に使うだけです。また知識情報演習3は、そもそもB2の必修科目です。システムに進んでからPythonを書かないというやり方は存在します」との訂正情報を頂きました。これは私の観測範囲にいるklis15の諸先輩方がたまたまシステム主専攻のうちPythonだったというだけで、ほかにも専攻内部に班分けがあり、Pythonを使わないという選択肢もあるようです。他の班としては、森継先生とともに数学を探究する定理証明班、水島先生とともに博物館学アーカイブズ(?)なんかを学ぶ班もあるらしい。不確かなことばかり書いててすみません……何せこれklis超絶雑AdCなので(免罪符) 追記その2:こういう言い方はよろしくなかったです。重ねてお詫び申し上げます。2017/12/17 17:25)

 

それでは、DjangoPythonの話はこの辺にして、次の章からはシステム主専攻について語っていきたいと思います。

知識情報システム主専攻って?

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

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

(出典:http://klis.tsukuba.ac.jp/goal.html

 ウーン、なんだか煙に巻かれた気分ですねコゥレワ……ほかの主専攻を見てみると、知識科学主専攻は人間に注目したり、情報資源経営主専攻は社会に注目したりしているようです。いや、システムこそ「人」に注目して「社会」を変えていけるようにしなきゃダメでしょう、って突っ込みもありますがまぁここでは割愛いたしまして。

なにをどうするのか&なにがどうなるのか

とりあえず、知識情報・図書館学類のシラバスを眺めてみましょう。

まず、2年次に主専攻への導入として、

  • 知識資源組織化論
  • データベース概説
  • コンピュータシステムとネットワーク
  • 自然言語解析基礎

の4科目を春秋2科目ずつに分けて開設し、3年次には知識情報システムの実際として

についての知識理解を深め、また知識情報システムの実装として

  • 情報検索システム
  • webプログラミング
  • マルチメディアシステム

を通じて手を動かしシステムを構築し、そして知識情報システムの設計をするために、

  • データ表現と処理
  • データベース技術
  • 情報デザインとインターフェース
  • ヒューマンインタフェース
  • メディアアート

を学び、さらに知識情報のメタ的理解を深めるために

  • 知識資源の分析
  • 知識資源の記述

を通じて知識資源の組織化手法を獲得し、果ては知識情報システムの原理を知るために

といった授業を受けることができるようです。
いやはや、ウマーくカリキュラムが組まれていますねぇホントに。

これらの科目と並行して、主専攻実習として「知識情報システム実習」という必修科目も用意されています。月曜5,6限にあることから既に確定的明らかに辛そうな授業であることがわかります……シュジュッシュ……。

なにをどうするか、についてはこれら各科目のシラバスを参考にしてもらうとして、なにがどうなるのか、について考えてみます。

例として、知識情報システム実習(主専攻実習:必修科目)について、[学習・教育目標]の欄を見てみると、このように書いてあります。

知識情報システムの構築に関わる基本的な技術を身につける。
知識情報システムを実現するための実践的な知識と技術 (問題の分解, クラス設計など)を身につける。

また、授業計画には以下のように書いてあります。

春学期:共通課題

  • 導入 (実習の説明, 知識情報演習の復習)(1 週目,7B206 集合)
  • 知識情報演習の成果を応用したシステムの構築 (2 週目~9 週目)
  • 発表 (10 週目)

秋学期:選択課題

  • 導入 (実習の説明)(1 週目,7B206 集合)
  • 知識情報システム構築実習 (2 週目~9 週目)
  1. 要求定義
  2. システム設計
  3. システム実装
  • 発表 (10 週目)

まぁ、知識情報システム主専攻ではなにがどうなるのかということに関しては、つまり「知識情報システム主専攻に所属する学生が」「知識情報システムを自分で考え、一から作ることができるようになる」ということだと思います。ヒョエー

この主専攻に進むために必要なもの

いったい何が必要なんでしょうかね……?少なくとも、2年次の単位を落としているようではかなり厳しい茨の道を進むことになるんじゃないでしょうか(特大ブーメラン発言)また、開設科目を見る限り、少なくともコンピュータサイエンスが好きではなかったりプログラミングで手を動かすのが耐えられないほどにツラい……という人たちが来るところではないような感じがします。必要なものは、情報系全般への飽くなき探究心とプログラミングがそれほど苦にならないという耐性、そしてしいて言えば、なにか情報系の技術を通じて作りたいものがある!といった欲望、とかでしょうか。

(追記2017/12/17 08:30;これは個人の見解です。必ずしも絶対にこの要素が必要不可欠であり、持たざる者は不要である、といった排他的な思想に基づくものではありません。別にまぁコンピュータサイエンスが大っ嫌いでもいいし、プログラミングなんて死んでもやりたくないけど私はシステム主専攻に進むんだ、という人がいていいと思います。一方で、そういう人はほかの専攻に進んだ方がその人にとって実りあるものになるとも思いますけれども)(訂正 2017/12/17 17:25;煽情的な言葉使いを改めました)

この3つの条件でいえば、今のところ私はこの専攻に進むのかなぁと考えています。webサービスつくりたい(そして金を稼ぎたいし深層学習をやってみたい)、そのためにプログラミングすることは厭わない(できるとは言っていない)、そして「その人の知識レベルに合わせて自動的に変化する情報提供システム」や「新たな図書館をつくりだす業務支援システム」とかつくりたいという野望がある私にとっては、正直ここしかない感があります。(グループワークさえなければ知識科学主専攻もアリだが……ナオキです)

主専攻ってどうやって決めるの?

(以下は個人の見解であり、鵜呑みにするのは良くないよ~~)

前項で述べたような、その人自身の主専攻分野への適性もさることながら、最も重要なのは『その主専攻から選べる研究室に、自分の行きたいところがあるか』即ち、自分が教えてほしいと思う教授がその主専攻から選べるかということです。地味に一番大事な要素かもしれません。なぜなら、3年次の授業の単位を取り終えてあとは卒業研究、となったときに、頼りになるのはその教授しかいない可能性もあるのですから。ましてや、相性が悪かった、なんてことが起きた日には目も当てられません。

1,2年生で受けた授業ではまだ顔を合わせていない教員がいることも確かですが、これまでの記憶の中で、この人の授業好きだったなぁとか、成績は良くなかったけど内容自体は面白く聞けたよなぁとか、そういったエピソードが1つや2つあるかと思います。その感覚は実際かなりの部分で正しいはずです。

年末のテスト期間が終わり、時間ができてからでいいので、冬休みの間に2,3人くらい記憶に残っている教授の研究室について調べてみるといいでしょう。何の研究を扱う研究室なのか、例年何人くらい配属されていて、現在のメンバーはどんな研究をしているのか、教授は何歳くらいで(以外に重要)何に興味がある人なのか、などなど……

その段階で、この人の研究室に行く!!!と決めろということではありません。(私にしても、複数人候補がいてそれらがすべてたまたまシステム主専攻の教員だったのでこの専攻に進もうと思っている段階です)ただ、教えを請いたい教授が複数いたときに、その人たちが専攻ごと分断されていたら悲しいことになるかもしれないのと、少し将来のことを見据えてみるのも楽しくていいということがあります。いま授業やっている意味不明なことも、やがて四年生になって研究をしていくうちに自分にとって当然の知識に替わっているかもしれないのです…ワクワクしませんか?

最後に

とはいうものの、まだ2年次の段階でここまで語ったところで何の厚みもないことは当然の事実です。なので、以下に先人たちの悩み苦しんだ結晶のページを置いておきます。現在も図書館情報メディア研究科の大学院生として研究室に所属している人もいます。見て損はないと思います。専攻迷子の方々はぜひ、参照してください。

h1mkt.hateblo.jp

現在もslis:図書館情報メディア研究科 の大学院生でklisの先輩である@himktさんのブログのアーカイブです。3年次の冬にご自身の主専攻選びについて振り返ってくれています。

繰り返しますが,筑波大学は総合大学です.極めて多くの分野に関する授業があります.興味がある分野があるなら授業を覗きに行くべきだと思います. この学類のカリキュラムはあまり厳しくないので,自分で必要な知識を得る努力をしましょう.(めちゃくちゃ耳が痛い)

 要約しましょう.

  • 図書館に興味が持てなくなっても悲観しない
  • 興味がある分野があったら他の学類を覗いてみる
  • 自分で勉強する

これができなかったから僕は今苦しい思いをしています. 専攻迷子のみなさんがんばりましょう.

 

d.hatena.ne.jp

なんと2007年度入学(1期生)の方の残した教訓を見つけました。「同大学院 図書館情報メディア研究科で知識情報学(図書館情報学)を学ぶ」「自分の過去を振り返って、やってよかった・やればよかったと思っていることを書いた」との記述から、かなり良い情報であることもわかります。あと内容が本当に耳が痛いので、意識を高めたいklis各位は読むといいかもしれません。

shopetan.hatenablog.com

現在もslis:図書館情報メディア研究科 の大学院生でklisの先輩、かつ3年次編入で入ってきた元高専生である@ss_shopetanさんのブログのアーカイブです。春AB秋ABでの主専攻実習でのシステム開発の危うさを振り返ってくれています。

何が言いたい

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

 -------------------------------------------------------------------------

自力でシステムを作るための道筋を紹介しました.
講義で習っただけの知識で作成するシステムは危ないです.

筑波大学 情報学群 知識情報・図書館学類の鼎談〜研究・専攻内容/大学生活/就職活動・仕事/将来のプラン/高校生へのアドバイス

今度はちょっと気色が違いますが、知識情報・図書館学類を大枠とした、新入生・卒業生・教授の3者の視点から学生生活・研究・就職・5年後の未来など考えさせられる事柄についていろいろと語られています。初代図情ACで第1期生のレジェンド小野永貴 (ONO Haruki) (@milkya)さんと、弊学類の象徴とも言える逸村裕教授と、当時1年生だった山口未来さんの鼎談という形になっていますが、この学類を志してから卒業し研究する/就職するといった道筋がいくつか示されているので、一見の価値はあると思います。そもそもなにをしにここへ来たのかわからなくなってしまった学生たちにはこの記事を読んで初心を取り戻してほしいです。

全体のまとめ

知識情報・図書館学類の新入生がやるべきたった11のこと(2011年度版)を記した先人の言葉が一番大切だと思ったし、簡潔にまとめられているので以下に引用します。

  1. 断固たる決意で卒業する
  2. 入学当初の分からないを忘れない
  3. まずは大量に記録する
  4. 息を吸うように情報を摂取する
  5. 複数の「すごい人」との接点をもつ
  6. はじめるときは仲間・コネ・場所を見つける
  7. ネット上の人格について
  8. 技術を好きになる
  9. プレゼンテーションについて
  10. 逆算して見積もる
  11. 卒業する頃に「知識情報・図書館学類の新入生がやっておくと良い11のこと」を書く

以上のことを肝に銘じて冬を過ごしたいと思います。今の二年生は、全員この記事を読むべきだと思います。春になってからやっと気づいたころには周回遅れになっている、という状況に陥っていたとしてもだれもあなたを助けられないのです……。

klisの関係者へのささやかなお願い

と、以上の前項まででこの記事の内容はお終いですが、最後に一つ、klis関係者各位にお願いしたいことがあります。

それは、知識情報・図書館学類としての集合知を蓄積するアーカイブをつくりたいということです。

この記事を執筆していても強く感じたのですが、“関係者・在学生・卒業生の大学時代の生活の知恵や学問に関する純粋な疑問、素朴な興味関心や技術的な知見が一切共有されていない”という問題があります。

これを解決するために、Googleが提供している無料のGsuite for educationに同梱されている、Googleチームドライブ(無料:容量は無制限)を、学類全体の学生 ひいては知識情報・図書館学類に関係する方々全員で一つのプロジェクトチームとしてこれを活用したいと思っています。

チームドライブに関しては以下のリンクから参照ください。

https://gsuite.google.jp/learning-center/products/drive/get-started-team-drive/

 

それを最大限に活用し、知識情報をアーカイビングしていくために、試験的に学類全体のSlackチームを作成しました。以下のリンクからメールアドレスを入力することで参加できます。なお、関係者であることを証明するために、ドメイン名が@klis.tsukuba.ac.jp または@slis.tsukuba.ac.jpである必要があります。

https://klis-members.slack.com/join/signup

 

また、関係者であることを証明するドメイン名である@klis.tsukuba.ac.jp または@slis.tsukuba.ac.jpを取得するために、メールアドレス利用の手引きを作成しました。以下のリンクから参照してメールアドレスを取得し、ぜひこのSlackチームにご参加ください!

https://hackmd.io/GbBsCYGYBZVBaArJUBOe0AMF4A5m7wCGApkWosOACbiqpA==

 

それでは、この記事を読んだ知識情報・図書館学類関係者の皆様の参加を心からお待ちしております。ともにklisの集合知を蓄積するアーカイブをつくりましょう!!

 

参考文献

  1. Django - Wikipedia

  2. 【初心者必見】PythonのDjangoとは?webアプリ開発の第一歩 | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト

  3. 株式会社ROBOT PAYMENT
    お話を聞く限り、かなりいい感じの企業だったので、できることならこういうところで長期インターンとかさせてもらって現場の雰囲気を肌で感じる体験をしたいなぁと思いました。いわゆるFintechをやってるところで、煩雑作業の自動化ロボをつくっているようです。

  4. Python Django入門 (1) - Qiita

  5. Django入門は「 django Girls Tutorial」から手をつける - Qiita
    webフレームワークとかそもそもPythonとか、専門用語もわからない……けどwebサービスは作ってみたい!という意欲的な方におススメの記事です。Django、やろう!!

  6. FrontPage - KLIS-System 
    知識情報システム主専攻のページ
  7. FrontPage - Major in Knowledge Sciences
    知識科学主専攻のページ

  8. FrontPage - Major in Information Resource Management
    情報資源経営主専攻

  9. シラバス | 筑波大学 情報学群 | 知識情報・図書館学類

  10. 情報学群長表彰 | 筑波大学 情報学群 | 知識情報・図書館学類
    毎年、各学類から表彰者がいるようです。大学表彰も狙えるぐらいに研究してみたいものですね……

  11. 2018年度卒業研究指導方針一覧 | 筑波大学 情報学群 | 知識情報・図書館学類
    各教授の研究指導方針が一覧できます。広く受け入れている人もいれば、これしか指導できないよという人もいるのできちんと確認するのが吉です。

  12. 知識情報システム主専攻 | 筑波大学 情報学群 | 知識情報・図書館学類
  13. 症例で見る!知識情報・図書館学類おさんぽマップ - 月歩

  14. 知識情報・図書館学類の新入生がやるべきたった11のこと(2011年度版) - 知識情報学を学ぶ

  15. 図書館情報学徒が作ったシステムは(大抵)危ない - 未来永劫

  16. 人間がさき,卒論があと - 未来永劫

  17. 筑波大学 情報学群 知識情報・図書館学類の鼎談〜研究・専攻内容/大学生活/就職活動・仕事/将来のプラン/高校生へのアドバイス

  18. Itsumura Lab Wiki - PukiWiki

  19. 「15FY未踏事業公募」に係る14FYスパークリエーター認定者への事前通知の件
    なんと、未踏事業に採択されるようなklisも過去にはいたようです。(というかいまslisで大学院生とソフトウェア開発者を第一線でバリバリやっているようです、やべぇすげえ)