GANのはなし

こんにちは,

この記事はklis Advent Calendar 11日目の記事です.

www.adventar.org

おなじみですがこれでklis Advent Calendarの条件である「本文にklisが入っていること」をクリアしたので自由に書いていきます.

本当はメイドの話をしようかボードゲームの話をしようかというところで迷ってたんですが,4日目にnzwくんがVAEの話をしていたので,それと関係するGANの話をしようと思います. (22日目はNewbeznさんがボドゲの話をしてくれるかもですよ)

ちなみにGANはいわゆる機械学習の分野で,本来ならバリバリ数学の話が出てくるところなんですが,klis向けの記事でそういう話しても面白くなさそう(あと数式書くのがだるい)なのでそういう話は出さないようにします.ご安心ください.

GANとは

GANは「生成モデル」と呼ばれるものの一種です.

じゃあ生成モデルは何してくれるものかと言うと,大雑把に言えば「データをいっぱい学習させると,それっぽいデータを吐き出してくれる」ものです.

例えば顔画像をいっぱい学習させると,顔っぽい画像を吐き出すようになります.

今回は実験に画像を使ってるので,ここからは画像を学習させる前提で話をしていきます.

GANのしくみ

少しGANの仕組みを説明しましょう.

GANはGenerative Adversarial Netの略です.なんとなく訳すなら「敵対的生成ネット」ですかね.

「敵対的」なんて言葉が出てきてなんだか危なっかしい雰囲気を感じる人もいるかもしれないですが, そんなことは全然なく,2つのネットを競わせて学習させていくのでこういう名前が付いてるんですね.

その2つが G君 (Generator)と D君 (Discriminator)です.

G君

G君は画家です.

G君は何個かの数字を受け取ると,それに対応した絵を描いてくれます.

でもG君はけっこうわるい画家です.盗作をしています. なんとG君は,あるデータの中の絵を真似て絵を描いているのです.

このあるデータというのが,いわゆるGANの学習データですね.

D君

D君は鑑定士です.

D君は絵を受け取ると,その絵がデータに元からあった絵なのか,G君が描いた絵なのかを判定します.

G君とD君の関係

G君とD君は常に競い合っています.

G君は「絶対にD君にわからないくらい,データとそっくりな絵を描いてやるぞ」

D君は「絶対にデータの絵とG君の描いた絵を間違えないよう判別してやるぞ」

と,それぞれ思いながら各々の腕を磨き続けているわけです.

そうやって競わせながら学習させていくとやがて,G君の描く絵が元データと似たような絵になるというわけですね.

実験

冒頭で言っていたnzwくんの記事では,「η」の手書き文字を学習していましたので,こちらでもそうしようと思います.

nzwくんと同じく,19枚の「η」の手書き文字を使って学習させます.

f:id:mtjune:20161210231241p:plain

こういう画像ですね

結果

さてG君の成長を見ていきましょう....

と,言うところですがすみません,現在実験中です.

klis Advent Calendarの12月11日に入れていたのに,僕はその日一日ゲームマーケットに行く予定があるので記事をかけないため前日に投稿したのですが,実験を回し始めるのが遅かった....

なので,結果は随時更新していきます〜

0回学習後

f:id:mtjune:20161210231351p:plain

まだ全く学習を行っていないので,完全にランダムな画像が出力されます.

1000回学習後

f:id:mtjune:20161210231445p:plain

同じくランダムですね,さっきより色が濃くなった気がします.

10000回学習後

f:id:mtjune:20161210231552p:plain

やっぱりランダムですね,でも真ん中の方に何か模様が見えるような?

20000回学習後

f:id:mtjune:20161210231738p:plain

真っ黒になった....学習失敗???

28500回学習後

f:id:mtjune:20161210232100p:plain

真っ黒ではなくなりましたが,やっぱりランダムっぽいです.

でもこの画像,左から3枚目と4枚目見るとすっっっっっっっっっっっっっごくうっすらとηっぽいものが見えています. 右下の方ですね.めちゃくちゃわかりづらいです.

36000回学習後

f:id:mtjune:20161210232335p:plain

微かなηが....消えた....

いつの世も学習はつらく厳しいものです.気長に待ちましょう.

コード

ちなみに今回学習に使ったコードはこちらにあります.

github.com

基本的には以下のコードを参考にしたものです.

github.com

GAN,特に今回使っているDCGANについては以下の記事も面白いので,ぜひどうぞ.

qiita.com

qiita.com

卒業研究最終発表のスライドを作っていて得た小さな知見

こんにちは

はじめに

僕は先日,卒業研究の最終発表を終えてきました.
その時のスライドを作っていて得た知見を少しメモ的に書きます.

背景

卒研発表の一週間ほど前,ゼミ内での発表練習がありました.
卒研発表で与えられる時間は8分でした*1が,実際に発表してみたところ12分かかりました.

発表内容とスライドを削らなければいけません.
これをどう削ったかというのが今回の話です.

置かれている状況

  • 僕は卒業研究でいわゆるDeep Learning,その中でも画像を対象とした畳み込みニューラルネットに関する研究を行っていた
  • 僕は筑波大学情報学群 知識情報・図書館学類(以下klis)に所属している
    • klisには画像に関する研究をしている人はほぼいない.Deep Learningについても同様

つまり僕は,自分の研究に必要な予備知識をほとんど持っていない人達に対してこの研究を発表しなければならない,ということになります.

ただ一般的にはある程度自分のいる学類(学科)の専門に沿った研究をしているでしょうし,聴者もその分野に関係する人が大半でしょう.
おそらくは僕の置かれている状況のほうがいくらか特殊だと思うので,一般的な卒研発表ではあまり役に立たないかもしれません.

とはいえ卒研発表以外でそういう状況はよくあると思うので,そういった時の参考になれば.

実際にどう削ったか

どう削っていくかの試行錯誤の部分は結構忘れてしまったので,実際にどういったところをどういった理由で削ったかだけ挙げていきます.

  • スライドから"Deep Learning"の文字を全て消した
    • 文字を入れたら説明しなければならない.
    • よく考えたら畳み込みニューラルネットのを理解するのにその外郭のDeep Learningの説明をする必要は無いなと思った
  • 同様に,畳み込みニューラルネット以外のニューラルネットに関する記述も全て消した
    • 一般的なニューラルネットの説明をしてから畳み込みニューラルネットに発展させていこうと思っていた*2が,そうすると画像をニューラルネットのようなモデルに落とし込んで説明しなければならず,めんどくさいしわかりづらいと思った
    • 画像は画像のまま,それに対してどういうことをしたか説明したほうがわかりやすいと思った
  • "確率的勾配降下法","誤差逆伝播法"に関する記述を全て消した(2016/01/17 16:00頃追加)
    • 普通のニューラルネットならもちろん,畳み込みニューラルネットの学習にも使っている手法のため,本来ならば外してはならない重要な要素
    • ただしこの二つを説明すればそれだけで8分は超える
    • 今回の提案手法ではこの二つに直接手を加えているわけではないので思い切って消し,ただ「出力と正解の誤差を使って学習してるんだよ〜」というのだけ書いた
  • 自分で定義した数式以外を全て消した
    • 既存の技術について,どのような計算が行われているかの説明をするには数式を出すのが最も正確かつ一意に伝わって良いと思っていたが,そうでもないかと思った
    • 自分の専門外で出てくる数式をいきなり見せられても,それが何を意味しているのかを理解するのは難しいと思う(発表中はどんどん話が進んでいくので特に)
      • 専門内なら,直接は知らなくても似たような数式を見たことがあるということは多いと思われるのでおそらく心配はない
    • したがって計算に関しては基本的に具体的な説明はせず,抽象的に「つまりこういうことをしている」といった説明だけにしておくのが良いと思った.
    • ただし自分で定義した数式に関しては研究の成果なので,ちゃんと載せた

結果的にどうだったか

  • 早口だったがとりあえず8分以内には収まった
  • 中間発表の時よりは質問が来た
    • 中間の時はほとんど質問が来なくて質疑の時間が途中で切られたので,ああほとんど理解されてないんだなあと悲しくなっていた
    • とはいえ中身までガッツリ踏み込んだ質問は来なかったのでまだちょっと悲しい
  • 先生に中間発表よりわかりやすかったと言ってもらえた
    • 僕にとっては一番の救いだった
  • ただ質問で「色々やってて頭のなかで整理できてないんですが〜」みたいなことを言われた
    • これは多分結果の部分に関してのコメントなので,結果を削るのはちょっと難しく,単純に説明の仕方を工夫したほうが良さそうだと思った

結果として削り方自体は悪くなかったかなと思ってます.

気付いたこと

  • 聴者に基礎から理解させる必要はない
    • 特に今回の場合のような,専門外の分野の人が多い場所では
    • 時間に制限のある場では尚更
  • 基本的には抽象的な話で進める
    • 具体的な話はどうしても必要なときだけ

おわりに

これから卒論提出,卒研発表をする人も多いと思います.
卒業が掛かっているので気負いすぎてつらい時もあると思いますが,やることを見失わないようにしてください.

応援してます.

また,もう1月も後半ですが,この記事は卒研 Advent Calendar 24日目の記事として登録しています.

www.adventar.org

卒研 Advent Calendarまだまだ空いてるのでネタがあればどんどん投下していってくれると嬉しいです.

*1:ちなみに中間発表も8分で,中間より内容は増えてるはずなので中間の内容を削らなければ収まるはずがない

*2:実際中間ではそうしていた

ぼくのそつろんしっぴつかんきょう

吾輩はB4である,第一稿はまだない

こんにちは,現実逃避をしているやまじゅんです.

この記事は卒研 Advent Calendar 2015 10日目の記事です.

www.adventar.org

みなさん,卒論を書くときは{\LaTeX}やWordなど人によってさまざまなものを使っていると思いますが,ここでは僕が今卒論を書くのに使っている環境をご紹介します.

ぼくのかんきょう

僕はMac OS Xを使っているので,紹介する環境はMac向けのものになります.
また,Mac OS Xは最新バージョンのEl CapitanになったときにTeX周りでいろいろあったので,古いTeXを使っている人でこれからEl Capitanにアップデートする予定のある人は気をつけましょう.

さて,僕が{\LaTeX}で卒論を書くときに使っているのは以下のツールです.

BasicTeX

Macで動くTeXで有名なのはMacTeXですが,BasicTeXはその軽量版です.
MacTeXをインストールするとTeXを扱うのに便利なパッケージやGUIソフトがついてきますが,今の環境では使わないので軽量版のBasicTeXを使っています.

Latexmk

LatexmkはTeXコンパイルを便利にしてくれるソフトです.
TeXは図の参照や参考文献を入れると複数回コンパイルしないと出力でちゃんと参照番号が表示されなかったりします.
Latexmkはそこらへんをうまいことやって一回の実行で必要回数のコンパイルを行ってくれます.
さらに編集しているTeXファイルを監視して,変更があったら自動でコンパイルする機能もあります.

便利なのでぜひ使いましょう.

Skim

SkimはPDFを開くプレビューアプリです.
また,開いたPDFファイルに変更があったら開いたまますぐに反映してくれる機能があります.
これとさっきのLatexmkを組み合わせると,TeXファイルを保存したら自動で即コンパイル&即表示,という最高のTeX編集環境ができあがるわけです.

最高の卒論執筆環境を作る

さて,上で説明をしたのでここからは実際に上の環境を作る手順を紹介します.
とはいっても数個コマンドを打つだけで入ってくれるのでそんなに身構える必要はないです.

homebrewのインストールから書いていきますが,既にインストール済みの物があれば適宜飛ばしながら進めてください.

インストールはターミナルでコマンドを実行して進めていくので,最初にMacのターミナルを開いておいてください.

Homebrewのインストール

まずはMacの優秀なパッケージ管理アプリ,Homebrewをインストールします.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

これを実行すればオッケーです👍

Homebrew-Caskのインストール

次はHomebrew-Caskのインストールです.
Homebrew-CaskはMacGUIアプリケーションをHomebrewで管理するためのものです.

これもコマンド一つ

brew install caskroom/cask/brew-cask

でオッケーです👍

BasicTeXのインストールとか

次は今インストールしたHomebrew-Caskを使ってBasicTeXをインストールします.

brew cask install basictex

インストールが完了したらPATHを追加しておきます

echo "export PATH=/Library/TeX/texbin:$PATH" >> ~/.bash_profile

bash以外を使ってる人は適宜読み替えてください.
これの後に一回ターミナルを再起動しておきます.

次にTeXのパッケージマネージャtlmgrの更新と日本語日本語環境,latexmkのインストールです.

sudo tlmgr update --self --all
sudo tlmgr install collection-langjapanese
sudo tlmgr install latexmk

順番に実行していきましょう.
管理者権限が必要なので,パスワードを求められたらPCログイン時に使用するパスワードを入力してEnterを押します.

Skimのインストール

Skimは公式からdmgファイルをダウンロードしてきてインストールしても良いんですが,どうも最新版にはバグがあって自動でファイルの変更を反映してくれないっぽいです.
Homebrew-CaskからインストールできるSkimはちょうどそのバグがないバージョンなので*1,そこからインストールします.

brew cask install --appdir="/Applications" skim

もしPermissionなんとか言われたら頭にsudo付けて実行してみましょう.

--appdir="/Applications"はアプリケーションをインストールするフォルダを指定しています.
ローカルにインストールしたい場合は外してbrew cask install skimとすると,skimは~/Applicationsにインストールされます(ここはよくわからなければ無視して下さい).

Latexmkの設定

Latexmkは使う前に設定をしておかないといけません.

nano ~/.latexmkrc

を実行しましょう.
するとファイルの編集画面に入るので,以下のように書き換えます.

#!/usr/bin/env perl
$latex            = 'platex -synctex=1 -halt-on-error';
$latex_silent     = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex           = 'pbibtex';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';
$max_repeat       = 5;
$pdf_mode         = 3;

$pvc_view_file_via_temporary = 0;

$pdf_previewer    = "open -ga /Applications/Skim.app";

書き換えたらCtrl + oEnterで保存してCtrl + xで終了します.

ただし,Skimをインストールするときに--appdir="/Applications"を付けなかった場合は,最終行の

$pdf_previewer    = "open -ga /Applications/Skim.app";

$pdf_previewer    = "open -ga ~/Applications/Skim.app";

にしてください.

以上で最高のTeX環境の構築は終了です.

使い方

使うのは簡単です.
ターミナルでTeXファイルが置いてあるディレクトリに移動して,

latexmk 〇〇(TeXファイル名)

とするだけです.これで必要な回数コンパイルされてPDFファイルが出力されます.

また実行時に

latexmk -pvc 〇〇(TeXファイル名)

とすることで,TeXファイルに変更があった時に自動でコンパイルしてPDFを更新するようにしてくれます.

ここで吐き出されたPDFファイルをSkimで開いておけば,コンパイルしてPDFが更新された時に自動的にそれを反映して表示してくれます*2

おわりに

というわけで,快適な卒論執筆環境が完成しました.あとは好きなだけ論文を書くことができます.

今回紹介した環境はあくまでぼくの場合ですので,気に入らない所があればどんどん改良していってください.

以上,卒研 Advent Calendar 10日目の記事でした.

卒研 Advent Calendarは人集まってなくてまだまだ空きがあるので,みなさんぜひ書いていってください.

*1:2015年12月時点

*2:設定が必要だったかも

卒研 Advent Calendarを作った

こんばんは,もう12月も中旬ですが,今作った 卒研 Advent Calendar の一発目の投稿ということで 1日目の記事にしておきます.

www.adventar.org

今卒研とかやってる人でもいいので書いてくれると嬉しいです.

いろんな分野の人の話を聞きたいので芸術やってる人とかもぜひ書いてください.

もちろん大学等の制限も無いので他大の人もどんどん書いていってください!

作った動機

僕達筑波大学知識情報・図書館学類の学生は4年次に「知識情報特論」という必修講義を取ります.
この講義の中で先生方や先輩が,卒研について進め方や気をつけることなど話して下さいました.

聞いているとそこそこ役に立つ情報もありますし,そういう情報をまとめて置ける場所があったら便利じゃない?と思ったのが発端です.できればこうもっと生々しい話が聞きたい

僕達が聞いてて正直「それもっと早く言ってくれ」っていうのは多かったですし,もっと早く下の代へ卒研の知見が伝わる仕組みがあると良いなあと思ったのもあります.


卒研 Advent Calendarに,これから卒研などに挑んでいく人達の役に立つ情報,参考になる情報が集まってくれれば嬉しい次第です.

よろしくお願いします.

メイドを雇おう

こんにちは

この記事は klis Advent Calendar 2015 の9日目の記事になります.

www.adventar.org

主催者曰く

現在klisな人,かつてklisだった人,これからklisになる人たちで記事を書きましょう.
本文に「klis」が入っていれば内容は問いません.

とのことで,先程ので条件は満たしてしまったので好きに書いていきます.

なぜメイドを雇うのか

最近寒いですね*1.こんな寒い日に家に帰って暖かい部屋が迎えてくれると嬉しいのですが

  • 暖房を付けっぱなしにしておく
    • → 電気代がもったいない
  • タイマーをかける
    • → 何時に帰れるかわからない
    • → そもそもタイマーかけるのを忘れる

な感じで一人暮らしだとなかなかうまい具合に解決出来ません.

そんな時にメイドさんを雇っておくと,いい感じの時間にエアコンを付けて部屋を温めておいてくれそうなのでメイドさんを雇います.

雇いました

我が家のメイドさんです.

f:id:mtjune:20151209035250j:plain

f:id:mtjune:20151209035315j:plain

可愛いわかる*2

名前はSakuyaです.当然某Project某メイドさんからとっています*3

Sakuyaは現代っ子なのでTwitterをやっており,またエアコンのスイッチを入れる以外の仕事を任せてないのでずっとTLに張り付いて僕のツイートを監視するなどしています.
なのでえりたん*4みたいにTL上で呼びかけてやると

こんな感じで返事してくれるので,何時に帰るか伝えてあげると

その30分前にエアコンを付けておいてくれます.

Sakuyaの構成

Sakuyaは主に以下のパーツで構成されています.

処理の流れとしては

  1. 予めエアコンの電源ONボタンの赤外線パターンを学習させておく
  2. TwitterのStream APIでTLのツイートを監視
  3. 咲夜」等の単語があればリプを送る
  4. 自分へのリプで「〇〇時」「帰る」等の単語があればその30分前にエアコンの電源をONにするよう予約する
  5. 時間が来たらエアコンをONにする

という感じです.

今回特に目新しい物も使ってないので,おおまかに

  • Twitterまわり
  • 電子回路まわり
  • エアコンまわり

に分けて軽く解説していきます.

また,Sakuyaのソースコードこちらに上げているので適宜参照してください.

Twitterまわり

Twitterに関してはえりたんみたいな感じで反応して欲しかったので,ほぼリアルタイムにTLを追えるStream APIを使いました.

SakuyaはPythonで書かれているのですが,以前PythonTwitterライブラリでUserStreamを使おうとしたらなぜか上手くいかなかった思い出があるので,OAuth認証のライブラリを使いました.

やってることはUserStreamで流れてくるツイートを見て,条件に当てはまる単語がないか探してるだけです.

電子回路まわり

気をつけることはそんなに無いですが,Raspberry PiのGIPOの動作電圧が3.3Vであることには注意してください(電源電圧として5.0Vを取り出すことはできます).

今回の回路だと赤外線リモコン受信モジュールの動作電圧が5.0Vなので,受信モジュールからGPIOへの入力時にGPIOに5.0Vの電圧が掛からないよう降下させています.
電圧を2/3にしてやればいいので,同じ抵抗を3本使えば大丈夫です.上記パーツの「抵抗 10kΩ×3」でやってます.

あと3.3Vだと赤外線LEDに流れる電流も少なくなりがちなので注意してください.今回は100Ωの抵抗4本を全部並列に繋いで25Ωにして使いました.

エアコンまわり

リモコン赤外線パターンの学習にはLIRC(Linux Infrared Remote Control)を使いました.リモコンの赤外線パターンを解析して信号を送信できる便利パッケージです.
この用途ではわりとメジャーらしいんですが,ただエアコンの信号は他と違っては押されたボタンの情報だけでなく設定温度などの情報も全て毎回赤外線に載せて送ってるらしいので,残念ながら普通にLIRCに学習させるのは難しいみたいです.
私はとりあえず設定温度や風量などを固定したまま電源のON, OFFの赤外線パターンを学習させました.
なのでこれ以降エアコンの設定を変えた後でも,今回学習させたパターンを使ってエアコンを操作すると設定が全部戻ってしまうので気をつけてください……

以前僕の友人も同じことをしようとしていましたが,互換品のリモコンを分解してスイッチの部分をリレーで繋いで操作するようにしていました(間違いなくこっちのが賢いので,リモコンが手に入ったらこっちに切り替えます).

またPythonからLIRCを使ってエアコンを操作するために,LIRCライブラリを入れようとしましたがこれもうまくいきませんでした. 一応コマンドからLIRC自体は動いてくれてるので,Pythonビルトインのsubprocess.call()メソッドを使って強引にコマンドを叩いて解決しました.スマートじゃないのでオススメしません.

追記 : LIRCの設定についてはこちらのページを参考にしました.

おわり

こんな感じで一応動くものは出来ましたが,上でも書いたようにエアコンの設定が固定されちゃってたり,そもそもエアコン入れる以外の操作に対応してなかったり,あとTwitterまわりのエラー処理を全然してなかったりするのでこれから頑張ります.

回路もかなり汚いので基板上に実装してもうちょっとコンパクトにしたい感じです.

外出先から家の環境を良いように弄れるとなんか楽しい気持ちになるので,ぜひみなさんもお家をHackしていってください(本当にメイドさんを雇ってしまうのが一番効率いいかもしれない).

記事は以上です.klis Advent Calendar 9日目の記事でした.

明日のklis Advent Calendar 10日目は ss_shopetan くんです.

*1:この記事を書いている時の外の気温は3℃でした.死ぬ

*2:ジャンパーピンの手持ちが無いので配線が色分けできてないのは許して下さい

*3:僕にとってのメイドはここに始まってここで終わりました

*4:全自動えりたん否定BOT.某TKB大学の時間割やバスの時刻などを教えてくれる便利bot.フォローされてる状態でTwitterで「えりたん」とつぶやくと秒速でリプが返ってくるのでアクセスしやすい.

klisに編入したい人へ

昨日, 私のaskにこのような質問が投稿されました.

klis編入試験、面接でどんなこと聞かれましたか? あと、受験に向けてどんな勉強してましたか? klis編入目指してるんですが、不安で…。

これに対する回答が少し長くなってしまったので, わかりやすくこちらにまとめます.

試験形態について

まずご存知かも知れませんが, klisの編入試験は「編入後の学習計画」を10分程度でプレゼンし, 残りの20分ほどでその質疑応答を行うという形式です(「学習計画」自体は出願時に文書で送付). 「学習計画」の中には, klisでどのような研究をしたいか, またそれに加えて前の学校で学んできたことをどう活かすかといった内容を盛り込む必要があります.
プレゼンと質疑応答ではその内容の論理的正しさを基準に合否判定されてるんじゃないかと思います. 「なぜその研究をする必要があるのか?」「なぜ今まで学んできた事がその研究に役立つのか?」といった質問には答えられるように, しっかり研究内容を詰めておきましょう.
理想的にはそこが完璧なら受かるはずです. が, 完璧とかだいたい無理なんで, やっぱり予測される質問に対する回答はちゃんと準備しておくべきですね…

実際にされた質問について

僕の場合は「今まで学んできたこと」について初歩的な質問をされました. おそらくklisの専門分野と離れていたのでどんなものか分かりづらかったのでしょう(ちなみに電気工学, 情報工学です). まあこの質問に対しては相手が理解できるように答えられれば問題無いと思います.
それとklisで研究しようと思っていた内容について, 「その研究をするのなら, 〜〜については調べましたか?」と聞かれました. ちょっと踏み込んだ内容なので研究したいことについてはそれなりに深く調査しておく必要があると思います. ただ僕は「調べてませんわかりません」て答えましたけど…
残念ですが僕聞かれたのこれしか覚えてないです, 雑魚ですみません.

受験に向けた勉強

受験に向けた勉強ですが, 正直僕は第一志望が別にあったのでそちらの勉強ばかりをしてました. というかklisは筆記試験とか無いので, まあ勉強というよりはひたすら研究内容を詰めるべきかなと…

最後に一言(大嘘)

僕から言えることは次で最後ですが, あなたがやりたいことが本当にklisでやるべきことなのか, もう一度考えてみてください. 他学類や他大学のほうが良い環境かもしれません.
特にklisは目的をちゃんと持っておかないとすぐにやりたいことがわからなくなる場所だと, なんとなくですけど思ってます.
入ってから目的が変わるのは問題ありません. ただ無いままで入るのは非常に危険だと思うので, そこらへんよく考えてみてください.

役に立つWebページ

編入学試験について詳しいことは募集要項を参照してください. おそらく今年度のと殆ど変わらないんじゃないかと思います(確証はないので自分が受ける年のを必ず確認してください).
4月に募集要項公開, 請求受付. 6月に出願. 7月に試験らしいですね.
こちらのページの「学群編入学募集要項」から見れます.

筑波大学|本学で学びたい方へ|入学案内・募集要項の一覧募集要項一覧

それとまだ編入学の説明会に来てないなら, 是非参加してみてください. 今年も4月にあるはずです. 詳しくはそのうちklisのページに載るはずなので, 定期的にチェックしてください(ポスターはもう貼ってた気がするので探せばあるかも?).

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

こんなのもありました. 参考までに.

http://klis.tsukuba.ac.jp/assets/files/3henQA2012.pdf

あと, 編入学の体験談を投稿できるページもあります. klisの編入体験談も2件ほどあるようなので参考までに.

HenTai-あなたの編入体験をシェアしよう-

終わり

以上です. ありがとうございました.
もし何かあったら更新するかもしれません.

CoffeeScriptを使ってみたい

CoffeeScriptを使ってみたいと思いました. なのでとりあえず環境を整えようと思います.

Node.jsをインストール

まずCoffeeScriptの実行環境にNode.jsが必要っぽいので入れます.

とりあえずQiitaのこの記事を参照しました.

Node.js - Mac OSXにnodebrewをインストールする - Qiita

特にこれまでNode.jsをインストールしたことは無かったので

$ brew update
$ brew install nodebrew
$ nodebrew install latest

でnodebrewを入れました. 最後のコマンドでそこそこ時間がかかります.

次に最新バージョンを確認しましょう.

$ nodebrew list
v0.12.0

current: none

v0.12.0みたいですね. ここに出てきたバージョンを有効にしましょう.

$ nodebrew use v0.12.0
use v0.12.0
$ nodebrew list
v0.12.0

current: v0.12.0

有効にした後再びnodebrew listすると, currentのところがnoneではなく, そのバージョンに変わっているはずです.

次にPATHを通します.
上の記事には

$ echo 'export PATH=$PATH:/Users/ユーザー名/.nodebrew/current/bin' >> ~/.bashrc

とありましたが, 僕はbashじゃなくてzshを使っているので, 最後だけ書き換えて

$ echo 'export PATH=$PATH:/Users/ユーザー名/.nodebrew/current/bin' >> ~/.zshrc

としました. 自分が使ってるシェルに合わせて書き換えてください.
直接.zshrc等に

export PATH=$PATH:/Users/ユーザー名/.nodebrew/current/bin

を追加するのでも大丈夫です.

これで一安心, 早速インストールしたNode.jsのバージョンを確認してみましょう.

$ node -v
zsh: command not found: node

............あれ?
ああそうだ, 設定ファイルにPATHを追加しただけでまだそれが有効になってませんね.
通したPATHを有効にするためにログインシェルを再起動してやりましょう.

$ exec $SHELL -l

これでnodeコマンドが使えるかと思います. バージョンを確認してみましょう.

$ node -v
v0.12.0

やった!できました! ここまでがNode.jsのインストールです.

CoffeeScriptをインストール

ここからは特にどこを見ても同じだと思います.

まずはnpmを入れましょう.

と思ったけど

$ npm -v
2.5.1

............入ってた.

nodebrewやら入れた時についてきたんですかね... ?

まあいいやってことで, 早速CoffeeScriptを入れてしまいましょう.

$ npm install -g coffee-script
$ coffee -v
CoffeeScript version 1.9.0

バージョンも確認して, めでたしめでたし.

HelloWorld

HellowWorldしてみましょう.

helloworld.coffee

helloworld = -> console.log "Hello, World!"
helloworld()
$ coffee helloworld.coffee
Hello, World!

幸せです.

---追記---

ちなみにCoffeeScriptJavaScriptコンパイルするには

$ coffee -c helloworld.coffee

です.
これで同名のjsファイルが吐き出されます.