Quantcast
Channel: 熱血挑戦者のブログ
Viewing all 107 articles
Browse latest View live

UT-S1-1stの僕が受けた夏学期科目一覧

$
0
0
どうも熱血です。

もしかしたら誰かの参考になるかもしれないので、僕が今学期受けた科目の一覧と、ちょっとしたコメントを残しておきます。

尚基礎科目は必修で担当教授も元から決まっているので、後からどう文句もつけようがないと思います。なのでこの記事では総合科目、主題科目等の基礎科目以外の科目について書きます。

尚、僕が今学期受けた基礎科目は英語一列 英語二列P(いわゆるALESS)、フランス語一列 ▲侫薀鵐晃貽麥鶚 ⊂霾鵝⊃搬留親亜Ψ鮃科学実習、数学IA ⊃学境 ⊃学IA演習 ⊃学怯藹 ⇔漏悖銑 熱力学 ∪弧寝奮忰 △任后

タイトルにも書いてある通り、僕は理一の一年生です。







[月曜日]


月1:基礎統計 安藤雅和先生 F系列

準必修の統計の授業です。この授業は何人か教官がいらっしゃるようです。安藤先生は教科書をメインに発展をまじえつつ進めていくタイプの先生で、スライドは全部Webに公開されます。月1ということでブッチ勢の数もかなりいたと思います。900番教室での授業でした。レポートが2回課されました。どちらも教科書を読めば解ける比較的簡単なものだったと思います。期末試験で重要なのは過去問をとにかく解くことだと思います。類題がかなりでます。また、問題数が多いので計算量がはんぱないです(電卓持ち込み不可。可の年もあったようだが、基本的には不可)。いちいち解法の部分で悩んでいたら全部は解けないと思います。


月2:記号論理学I 岡本賢吾先生 A系列

記号論理学という授業は高校までではなかなか触れてこなかった方も多いと思います。この分野では……ゲーデルの不完全性定理とかペアノ公理系とが一般には有名なのかな? 岡本先生の授業はユニークでとても面白かったです。夏学期の人気科目の1つで、今学期はもともと525教室で授業していたのが途中から900番に変更になりました。レポートはありません。教科書はなく、全てプリントです。板書メインの授業です。評価は試験のみ。期末試験は全持ち込み可ですが、正直持ち込み物を見てる暇はないと思います。持ち込み物にもよりますが。尚、岡本先生は東大の先生ではありません。冬学期には「記号論理学供廚あります。

月4:社会行動論 村田光二先生 D系列

心理3科目の1つです。月4は他に取れる科目が少ない&&理系には大事なD系列のため、この科目にはそれなりに人がきます。1106教室でした。なお受講人数の調整と、受講者のバランス調整のために、第一回の授業にて抽選があります。第一回の授業にでないと受講できないので注意です。出席をたまに取ります。あと、出席点のために一回だけ、授業でアナウンスされる心理学実験を受ける必要があります。授業の方でも詳しく解説されるとは思いますが、全部で3回あるうちから1回受ければ大丈夫、というものです。僕は第2回を受けました。第1回はGW付近、第3回は期末試験付近にあるから受けられなかったんです(尚どの実験にも参加できなかった人向けに、代替としてレポート課題の提出をすることもできます)。期末試験は回収です。僕が受けたのは60分の試験で、記名欄含め4ページ。単語記述4問、選択問題20~30問くらい?、論述2問、でした。授業中に見たビデオの内容とか、プシュケの名前から何が生まれたか、とか、村田先生はシケプリに載ってないことを試験に出すと授業中すら公言するお方なので、授業にはちゃんと出た方がいいとは思います。尚村田先生は東大の先生ではありません。

月5:基礎現代化学 村田滋先生 E系列

準必修です。村田先生はスライドを使う先生で、今年からスライドの公開もはじまりました。評価は試験+レポート1回。1学期にある化学系の大きい授業はこれしかないはずなので、化学に興味がある人はとるべきでしょう。ただし基礎論しかやりません。理一の化学は後の学期で構造科学、物性化学、基礎科学実験、あと一応熱力学、この4つの授業で詳しくやることになります。基礎現代化学はそれらの講義と高校化学の橋渡しみたいなことをする授業で、別にとらなくても良いや、という人は少なからずいるでしょう。内容としては『化学の新研究』に載っているような、高校までは副殻とか呼ばれていた電子軌道の話から入り、主にそれを基本にしながら種々の反応について俯瞰するといったものです。はじめの数回は眠たいかもしれません。取るか迷っている人は、参考書でもある『化学の基礎77講』を読んでみるといいと思います。そこに書いてあること全てをやるわけではありませんが、逆に言えばその本の内容を大きく超えるようなことはしません。あと友達に、村田先生の基礎現をとらず、月2のウッドワード・ジョナサン・ロジャー先生の基礎現代化学を受けに行った人がいました。オール英語の授業らしいですw

月6:実践的プログラミング 金子知適先生 全学自由研究ゼミナール

趣味です。競技プログラミングの授業で、プログラミングガチ勢が集まってます。僕は小鹿のように隅でカチャカチャやりました。灘や開成の計算機部や高専からの編入組がたくさんいて、色んな人を知るきっかけになったと思います。講師の金子先生は、将棋第2回電王戦にも出場した将棋ソフトを作っていらっしゃる先生の一人です。ちなみにその電王戦では情報教育棟のPCが全部起動され、並列処理に参加したとのことです。コワイ。授業としては毎回先生から提示されるテーマと練習問題を解いていく形で、毎週一問解けさえすれば単位はもらえます。単位をもらわない受講も可能です。かなりの実力者がそろっている(過去の受講生たちも受講しにくる)ので、プログラミングの質問をするにあたってこの授業ほど困らない環境はないと思います。第一回には30名ちょっとが来ていましたが、最終的には約20名が受講していました。楽しい授業でした。来学期も受けます。






[火曜日]

基礎科目のみ。






[水曜日]

水1:基礎方程式とその意味を考える(物質・生命一般) 上田正仁先生・中澤知洋先生 E系列

電磁気学と量子力学について、それぞれの基礎方程式であるマクスウェル方程式とシュレディンガー方程式から、それぞれの学問を俯瞰するという授業です。授業は前後半に分かれていて、前半は上田先生による電磁気の授業、後半は中澤先生による量子力学の授業が行われました。上田先生の方はプリント式で、プリントのpdfはウェブに公開されます。印刷しておく必要がありました。上田先生の授業を受けている間は(たとえ第一回の前であろうと)上田先生のHPを定期的に見ておくことをお勧めします。内容としてはニュートン力学から電磁気学、相対性理論までの流れを追った後にマクスウェル方程式をひもといていく感じでした。後半の中澤先生の授業では同様にニュートン力学、前期量子論から量子力学の今、までの歴史を追った後、シュレディンガー方程式を使って井戸型ポテンシャルを解析したりまあ色々します。プリントが配られますが板書メインです。説明をかなり飛ばし飛ばしでされるので、要質問だと思います。授業評価はレポートによります。前後半で1回ずつ、計2回のレポートが課されます。どちらもウェブ上に過去問があがっているので見てみるといいでしょう。ちなみに電磁気パートの問題ですが、去年(2012年度)の問題は簡単だったのに、今年(2013年度)の問題はむちゃ難しくなってますw レポート問題とはすなわち、調べてもいいから解いてみろ、ということです。分かんなくなったら調べてもいいんですよ。量子パートの問題はそんなに難易度変わってませんでした。あ、あと、この授業1年生と2年生の割合が確か2:1くらいでした。3:1くらいだったかもしれません。1年生にとってはこれからする電磁気と量子力学を俯瞰するという新分野探究の授業になりますが、2年生にとっては既習の分野の再発見という授業になります。必然的にレポートの難度も変わってくるので注意が必要です。






[木曜日]

木5:情報科学概論I 増原英彦先生 F系列

情報系の授業の中では一番基礎論をする授業です。コンピュータアーキテクチャ、オペレーティングシステム、プログラミング言語、並列・分散システム、セキュリティ、の5分野について概論を行います。情報に詳しくない人でも気軽にとれる情報系科目だと思います。評価は試験一本です。スライドメインの授業です。CFIVE上でスライドが公開されますが、必ず1年前のスライドが白黒で公開されるので、ノートは取っておいた方がいいでしょう。試験の形式が年によって結構異なっています。僕の受けた2013年夏学期の試験は短い論述問題×10数問という形式でした(2012夏もこれです)。ですが年によっては一問一答形式、文章穴埋め形式などになったり、あるいは先の5分野について「それぞれの分野について一番興味をもったことを選びそれについてできるだけ書け」なんて問題が出た年もあるようです。





[金曜日]

基礎科目のみ





[集中講義]

# 夏休みに集中講義を1つ取っていたのですが、その名簿が公開されている関係上、ある方法を使うと僕の本名が特定できてしまうことに気づいたので、この項目は削除しました。申し訳ありません。 #








1学期僕がとったコマ数は、集中講義含め20でした。

あとTipsですが、受講することを決めた先生のHPは、たとえ何もインフォームが無くても定期的に見ておくのが吉と思います。たまに自分のHPにとても興味深い内容を書いてくださっている先生がいらっしゃるので……。

以上です。質問等あればこの記事にコメントをしていただくか、@nekketsuuuまで。




[追記]

基礎科目の中で、数学気倭択ができることに気づいたので、数学気隆響曚盻颪い討きます。

そういうこと言い始めると力学だってAとBがあるじゃないかと言いたくなりますが、まあこっちは「高校過程で力学を選択してなかった人はBを」というアレなので、自己判断できるでしょう。何もなければAの方で良いと思います。



数学IA ゝ娑翅醋蕁ヾ霑嘆別棔数理科学
数学IA演習 ゝ娑翅醋蕁ヾ霑嘆別棔数理科学

とても面白い授業でした。逆井先生は今年が数学IAを教える最初の年だったらしいのですが、その分の違和感は全くと言っていいほどなかったです。数学IAの授業は普通の講義形式で、授業毎に演習プリントが1枚配られます。これを解き終わる義務はないです。ただし2週間に1度ある数学演習IAの授業で行われる小テストの参考となります。演習の授業では半分くらいの時間を先ほど述べた演習プリントを解くことに費やし、残りの時間を小テストに費やします。評定としては、数学IAの授業の成績は期末テスト一本で、数学IA演習の授業の成績は、数学IAの期末テストの点数か、毎授業で提出する小テストの合計点数かの、良い方の点数が採られました。
新1年生にとって興味があるのはおそらく、数学IAにすべきか数学IBにすべきか、という話でしょう。僕が数学IAを選んだのは、僕の進振り候補のトップが理学部情報科学科だからです。AにすべきかBにすべきか、の決定打として一番大きいのはおそらく進振りでどこに行きたいか、つまり、将来修める科目としてより数学寄りな方に行きたいか、そうでないか、ということでしょう。AとBの違いは、単にε-δ論法を習うか習わないかの1点に尽きます。ε-δ論法が何であるかはググっていただくとして、これがあるかないかだと、数学Iで習う微分・積分の定理に対する証明が少し変わります。また、習う定理も少し変わります(僕の感触だと、数学IBの方がより工学で実用的な定理を習っている感があるような気がします、先生によっても習う内容はわずかに変わるので、僕の年の先生たちが偶々そうであったからというだけかもしれませんが)。
ちなみにε-δ論法は2年生夏学期にある総合科目「数理科学后廚任盻えます。なので、数学IBにしたからといって今後習えないわけではありません。IAとIBのどちらかがより難しいかどうかについては、僕にはちょっと分かりかねます。同じくらいなんじゃないかなあと思ったりもしますが、どうなんでしょうね……?

Axiomログ - v.s. hide

$
0
0
hideと僕とのAxiom対戦のログを編集して公開します。

Axiomのルールもログ中に書いてあります。






hide:
Axiomのルール:
★ターン制で交互に行動。自分のターンが来るたびに、次のいずれかの行動を行う
1.公理作成
「○○は△△である」といった類の文言を書き加える
2.定理審議
すでに書かれている公理の中に、他の公理のよって導かれる「定理」が存在することを証明する
3.背理審議
すでに書かれている公理の中に、他の公理と矛盾する「背理」が存在していることを証明する
★負けを認める条件
定理審議・背理審議をされた側は、それが正しいものであると認めた場合には負けを認めなければならない。
定理審議・背理審議をした側は、それが誤りであると指摘され、補足により証明が完了できない場合には負けを認めなければならない。
★★勝敗の決定(最重要)
「まけました」(ひらがな5文字)と書き込んだら負け

その他基本事項:
・特に断りのない場合「数」といえば1以上の自然数を指し、表記は10進法による
・「数字」とはn進法位取り表記に用いるn種類の文字のことを指す
(「数」と「数字」の違いに注意)(11/20 07:58)



hide:公理00:すべての数は「赤」「黄」「青」の性質をちょうど1つまたはちょうど2つもつ(11/20 07:58)


熱血:公理01:すべての1以上の素数は「かたい」「やわらかい」のどちらかの性質をちょうど1つのみ持つ(11/26 07:52)
熱血:1は素数に含みません(11/26 07:52)


hide:公理02:1の位が3または7である数は全て「赤」の性質を持つ(11/26 10:38)
hide:もちろん1ケタ(3と7)も含みます(11/26 10:38)


熱血:公理03:1の位が3または7である素数は全て「かたい」の性質を持つ(11/26 12:41)
熱血:あ、1ケタも含むよ(11/26 12:41)


hide:公理04:「n以下の数の内『かたい』の性質を持つ数の方が『やわらかい』の性質を持つ数より多い」が任意のnで成り立つ(11/27 03:37)


熱血:公理05:任意の数nについて、|n-m|<3を満たすいくつかの数mの内、いずれか1つは「赤」の性質を持ち、いずれか1つは「黄」の性質を持ち、いずれか1つは「青」の性質を持つ。(11/27 22:28)


hide:公理06:「かたい」「黄」の性質を同時に持つ数は存在しない。「やわらかい」「赤」の性質を同時に持つ数は存在しない。(11/28 03:48)


熱血:公理07:任意の数nについて、その二乗数n*nは「青」の性質を持つ(11/30 11:56)


hide:公理08:4の倍数5の倍数6の倍数は全て「やわらかい」の性質を持つ(12/01 03:47)


hide:確認:公理01は言外に「素数以外は『やわらかい』『かたい』の性質を持たない」のニュアンスを含む?(12/01 11:53)
熱血:返答:公理01は「素数には『やわらかい』『かたい』の性質がある」という存在を示したものなので、公理01には素数以外の数に対する性質判定は行っていません(12/01 13:28)


熱血:公理09:「かたい」という性質も「やわらかい」という性質も持たない1以上100以下の数が存在する(12/04 08:48)


hide:定理審議:公理03
1の位が3または7である素数は全て、公理02より「赤」の性質を持つので公理06より「やわらかい」の性質を持たない。
よって公理01より「かたい」の性質を持つ。故に公理03は定理である。(12/04 09:02)


熱血:まけました(12/04 16:54)







結果:hideの勝利。


尚、公理09は定理です。僕の攻めでした。

hide:公理04,n=1より、1は「かたい」の性質を持ち「やわらかい」の性質を持たない
公理06より、1は「黄」の性質を持たない。
公理03より、3は「かたい」の性質を持ち、公理06より「黄」の性質を持たない
これらと公理05,n=1より、2は「黄」の性質を持ち、公理06より「かたい」の性質を持たない
これより公理04,n=2より、2は「やわらかい」の性質も持たない
よって公理09は定理である。(12/04 18:00)


互いのやり取りの間の制限時間は72時間で行いました。


公理08の後のhideによる確認は、このままで見るとルール違反(手番違い)に見えます。これはログを一部削除しているからです。公理08を出して半日後にhide自身が公理01の解釈次第で公理08が定理になることに気づき(解釈問題になると面白くないので)僕に対して公理01の解釈判断を提案してきたわけです。その際にhideから「これで試合終了でも構いません」という提案がありましたが、それだと面白くない+僕はhideの提案してきた解釈を考えていなかったので、ゲーム続行しました。





俯瞰:
公理06が出た時点で公理03が定理になっていたが、2人ともしばらく気が付かなかった。

hideの確認と公理09の間で僕が長考してますが、これはどこかに定理がありそうな気がして色々探索していたからです。結果見つけられなかったわけですが……。

公理08はhideの攻めでしょう。公理01は「数の内素数については、『かたい』『やわらかい』の性質をただ1つもつ」としか言ってないので、合成数に関しては「性質を2つもつ」もしくは「性質を持たない」ことがありえます。もし合成数について「性質は1つのみ」だと拡張解釈してしまうと、公理08は背理になってしまいます(公理04のn=1の時より1は「かたい」。公理03より3は「かたい」。公理01を拡大解釈すると1,4,6はそれぞれ「かたい」or「やわらかい」の性質を持つ。公理01より2と5は「かたい」or「やわらかい」。もし2が「かたい」なら公理04のn=6の時を考えると4,5,6の内どれか1つは「かたい」の性質を持つので、公理08は背理。もし2が「やわらかい」なら公理04のn=4の時を考えると4は「かたい」の性質を持つので、公理08は背理。以上より公理08は背理)。

結構がんばれましたが、負けてしまいました。悔しいです。また頭が空になりはじめたらやりたいです。



それでは。

Axiomログ - v.s. SP1

$
0
0
クリスマスイブにSP1と行ったAxiomのログをここにおいておきます。

hideが横で見ておりました。

クリスマスに集まって数学の話をする男子3人 #とは






熱血:Axiomのルール:
★ターン制で交互に行動。自分のターンが来るたびに、次のいずれかの行動を行う
1.公理作成
「○○は△△である」といった類の文言を書き加える
2.定理審議
すでに書かれている公理の中に、他の公理のよって導かれる「定理」が存在することを証明する
3.背理審議
すでに書かれている公理の中に、他の公理と矛盾する「背理」が存在していることを証明する
★負けを認める条件
定理審議・背理審議をされた側は、それが正しいものであると認めた場合には負けを認めなければならない。
定理審議・背理審議をした側は、それが誤りであると指摘され、補足により証明が完了できない場合には負けを認めなければならない。
★★勝敗の決定(最重要)
「まけました」(ひらがな5文字)と書き込んだら負け

その他基本事項:
・特に断りのない場合「数」といえば1以上の自然数を指し、表記は10進法による
・「数字」とはn進法位取り表記に用いるn種類の文字のことを指す
(「数」と「数字」の違いに注意)(12/24 23:36)

ターンの間の制限時間は15分とする。




熱血:公理00:すべての数は「爆発する」か「爆発しない」の性質をどちらか1つだけ持っている(23:42:18)


SP1:公理01:すべての数は「リア充」か「非リア充」の性質のどちらか1つを持つ、あるいはどちらの性質も持たない。(23:45:18)


熱血:公理02:任意の数nについて、数(n+1)と数(n+2)が共に「リア充」の性質を持つならば数nと数(n+3)は共に「リア充」の性質を持たない(23:50:25)


SP1:公理03:任意の異なる2数m,nが共に「リア充」ならば、積mnは「爆発する」。(23:53:35)


熱血:公理04:4で割って1余る3以上の素数pを任意にとると、pは「非リア充」の性質を持つ(00:06:48)


SP1:公理05:6と28は共に「リア充」かつ「爆発しない」。(00:10:50)


熱血:公理06:任意の数nについて、2乗数n*nは「爆発する」の性質を持つ(00:18:22)


SP1:公理07:任意の数nについて、3乗数n*n*nは「非リア充」の性質を持たない(00:23:59)


熱血:公理08:任意の、2以上の異なる2数m,nについて、積mnと和m+nのどちらか一方は必ず「リア充」の性質を持つ(00:35:15)


SP1:公理09:「リア充」でも「非リア充」でもない数はただ一つのみ存在する。(00:47:15)


熱血:公理10:数2は「リア充」の性質を持つ(00:56:55)





SP1:背理審議:公理09
証明は今書きます(01:09:35)


SP1:Ax.09が成立していると仮定。
6:爆発しない(Ax.05)とAx.03より、1は「リア充」でない。
またAx.07より1は「非リア充」でない。
よってAx.09より2以上の数は「リア充」または「非リア充」...(Lem)。

いまAx.07, Lemより8,27は「リア充」。よってAx.2,Ax.5,Lemより7,26は「非リア充」。
また, Ax.08で(m,n)=(2,5),(3,4),(2,13)を適用して, 10,12,15:「リア充」。
Ax.02, Lemより9,11:「非リア充」。
さらにAx.08で(m,n)=(2,7),(4,5)を適用し, 14,20:「リア充」。
Ax.02より13,16:「非リア充」。
Ax.08で(m,n)=(5,8),(3,13),(2,11)を適用し40,39,22:「リア充」
Ax.02より21:「非リア充」。
Ax.08で(m,n)=(2,19)を適用し38:「リア充」
よって38,39,40は「リア充」だが、これはAx.02に矛盾。

つまりAx.09は背理。(01:19:35)


熱血:まけました(01:34:18)






熱血:これは分からんわwww(01:34:27)
熱血:ちくせう(01:34:30)
SP1:きつかったっすw(01:34:37)
熱血:何このパズル(01:34:47)
熱血:なんか完全敗北した気分(01:35:35)
hide:平方数に立方数持ってきたのかと思ったら、6と8、27と28で噛み合うようになってるのがうまいなーと(01:35:41)
熱血:それな(01:35:50)
SP1:Ax.07までは想定どおり(1をどっちでもないにする)だった(01:35:54)
熱血:完全数で適当にしたのかと思ったら……ちくせう(01:36:09)
SP1:いや適当だったよw(01:36:26)
熱血:もっと立方数にぐりぐりマークをつけておけばよかった(ω)(01:36:54)
熱血:何はともあれ深夜までありがとう(01:37:12)
SP1:Ax.08で状況が一変して、Ax.09は見切り発車で投げました(01:37:14)
SP1:こちらこそありがとう(01:37:24)
熱血:Ax.08で攻めて、きっとAx.09が定理になるはずだからと思ってたのに何か定理っぽくないのが来たので慌てふためいた(01:37:51)
熱血:いやあこれは分からんわ笑(01:38:29)
hide:面白かったー では今日はこれにて解散ですか(01:38:42)
熱血:先に言っておくけどhide、ログとっていいよん(01:38:48)
SP1:いいですよー(01:38:55)
熱血:そうですね、さすがにねむいかも(+_+)(01:38:57)
SP1:ぼくも寝ます(01:39:06)
SP1:ではでは(01:39:13)
hide:しっかり保存しときますー>ログ(01:39:14)
hide:ではでは~(01:39:18)
熱血:それでは二人ともおやすみなさい(01:39:18)
熱血:ノシ(01:39:20)
お知らせ:熱血(Win/Chrome)さんが退室しました。(01:39:24)
お知らせ:SP1(Win/IE10)さんが退室しました。(01:39:26)
お知らせ:hide(Win/Chrome)さんが退室しました。(01:39:27)






前のhideとの戦いと違い、インターバルが15分という短期決戦。そのため「あいてをひっかける」ということが割と容易にできる戦いでした。

なんというか、うまくしてやられましたw 考えが浅かったです。修行します。


今回もとても楽しかった。それではっ。

あけましておめでとうございます@2014

$
0
0
どうも、熱血です。あけましておめでとうございます!

2014年になりました。去年は高校を卒業したり東大に入学したり色々ありました。お世話になった皆様方、どうもありがとうございました。今年もよろしくお願いします。



2014年1月1日
熱血挑戦者

UT-S1-1stの僕が受けた冬学期科目一覧

$
0
0
どうも熱血です。

半年前に書いた1学期科目の感想に続いて、2学期科目の感想も書いておきます。

前回と同じく、基礎科目についての感想を書いたとしてもどうせ基礎科目は殆ど元から先生が決まっているので感想は書きません。数学IについてはAかBか選べますが、これは夏学期に選択したものをそのまま選ぶことになるので、前回の記事に書いた数学IAの感想をご覧ください。電磁気についてもAかBか選べますが、高校で物理を選択したかしないかで選べるので書きません。英語二列Rについては少し書きます。

尚、僕が今学期受けた基礎科目は、英語一列◆英語二列R、フランス語一列◆▲侫薀鵐晃貽麥鶚◆基礎物理学実験、身体運動・健康科学実習、数学毅銑◆⊃学境◆⊃学毅善藹◆⊃学怯藹◆電磁気学A◆構造化学◆△任后

どうでもいいですけど、たとえば「電磁気学A◆廚箸△蠅泙垢、「電磁気学A 廚あるわけじゃないです。単に夏学期にあるものが 冬学期にあるものが◆△箸覆辰討い襪世韻里茲Δ任垢諭帖帖

タイトルにもある通り、僕は理一の一年生です。







[月曜日]


月1:図形科学I 加藤道夫先生 F系列

準必修の図学の講義です。スケール(目盛りのついた定規)と三角定規とコンパスのみを用いて手で作図する方法を学びます。中学校で習うような作図とは割と違います。建築物の設計図の作図をイメージしていただくと大体合ってると思います。プリントが配られ黒板で解説していくタイプの講義形式で、出席が毎回取られます。レポートがほぼ毎回出題され、僕にはこれが結構難しかったです。「萌えるシケプリ」という神シケプリが存在します。少し古いシケプリですが、もしこれを読んでいる人でこれを持っていない人は今すぐダウンロードしておくべきだと思う程度には分かりやすいです。評価は出席、レポートと期末試験です。期末試験は毎年異なるユニークな問題が出されているようです。3学期に「図形科学演習機廚あります。また、同じく3学期にCADの授業として「図形科学供廖Javaを用いて3Dグラフィックスを扱う「図形科学演習供廚存在します。


月2:記号論理学供_本賢吾先生 A系列

1学期の「記号論理学I」と関係する講義ですが、記号論理学Iを受講していなくても大丈夫にはなっています(講義内容がほとんどかぶっていないため)。ゲーデルの第一・第二不完全性定理の解説を軸に、論理学や計算機科学を学びます。今年は期末レポート1本で成績がつきました。数学系・情報系に興味がある人は是非とっておくべき講義だと思います。プリントを配りつつ黒板で行う講義で、出席点はありませんでした。少し難しい講義ですが、楽しかったです。


月6:実践的プログラミング 金子知適先生 全学自由研究ゼミナール

夏学期に続いて、趣味です。夏学期にも月6に同名の講義がありますが、夏と冬で単位は別なようです。講義形式は夏学期と同じでしたので省略します。今学期は、第1回には23人、最終回には15人が受講したようです。楽しい講義でした。来学期も受けます。
# 余談ですが、今学期かなりの割合で3・4時限目にあった物理実験が延びて6時限目に食い込んできました。物理実験、かなり要領よくやらないと時間内に終わらないような気がするのですがどうなのでしょう。僕たちのクラスだけなのでしょうか(他クラスの人に「そうでもなくね?」と言われたことがあるので……)。






[火曜日]


火1:相対論 和田純夫先生 E系列

その名の通り相対論の講義です。特殊相対論を数時間で学んだ後、ニュートン力学と電磁気学を特殊相対論と矛盾しないように書き直します。その後時間が余れば余った分だけ一般相対論を学びますが、こっちはオマケみたいなもんです。今学期は2~3時間くらい一般相対論に触れました。夏学期にも開講されていますが、僕は冬学期に取りました。物理が苦手だからっていうのが第一の理由です。力学と電磁気学をある程度分かっていないと、この授業のメインである相対論に矛盾しない力学・電磁気学の有り方についての講義が分かりにくいかもしれません。今学期は講義中のアンケートの結果、力学は知ってるものとして講義が進み、電磁気学は必要に応じて(Maxwell方程式について、など)註釈が入りました。講義は黒板のみ。評定は基本的に期末試験ですが、救済レポートが存在します。期末試験が120点満点らしく、100優がとりやすいとの噂です。習う事項が新奇ではじめは理解しにくいですが、ローレンツ変換とテンソルについて理解できたらそれなりに点がくるんじゃないかなぁと思います。尚僕はこの講義で物理系科目初の優を取りました(やったぜ)。
# 他の物理系総合科目の主流としては、解析力学や統計力学が存在します。統計力学はよく知りませんが、解析力学は友達が受講してたのをチラ見しました。加藤先生の解析力学でしたが、パッと見「あっ物理ガチ勢だこわちかっ」って思う程度の難易度でした。4学期余裕があれば受講してみようかな……。あ、それと、一般相対性理論についてですが、心配しなくても理物に進まれる方は専門で習います。逆に物理系に進まない方はもしかすると今後相対論に触れない可能性も残されているわけで、専門課程の講義もチラ見しつつ受講を決めればいいんじゃないかと思いました。






[水曜日]


水1:化学平衡と反応速度 佐藤健先生 E系列

同名の科目が3コマありますが、僕は他科目の履修で他の2コマが埋まってしまった等の理由から水1の「化学平衡と反応速度」を選びました。この科目、先生によって習う内容が少し違うようです。佐藤先生の「化学平衡」は、特に酵素反応に力を入れた生物寄りの授業でした。とはいえばっきばきの生物寄りというわけでもなかったです。1学期科目の熱力学/化学熱力学と関係があります。講義形式は黒板のみで、評価は期末試験一本です。後から知ったのですが、佐藤先生はそれなりに評価が厳しい先生のようです。とはいえ試験は講義をきちんと受けていれば点がとれる程度の難易度で、気を付けるのは計算ミスかなぁと思います。


水4:振動・波動論 井上純一先生 E系列

物理系の準必修です。「振動・波動」というとなんだかふんわりしていてどの科目なのか分からないですが、実際色んな科目からのアソートみたいな面もあるので、ふんわりしています。高校物理や1学期「力学」で習う単振動等の振動から発展させて色々な振動を習い、それを波動に発展させていきます。先生によっては、これを力学や量子力学等の具体的問題に応用する所までやるみたいですが、井上先生はそうではなく、もっと理論寄りの講義な感触でした。今年が井上先生の初「振動・波動論」なので過去問はないです。講義は黒板のみで、評価は期末試験のみでした。質問にとてもきちんと答えてくださる先生でした。振動・波動論はなかなか参考書が見つからないです。僕は買いませんでした。裳華房の参考書が良さげな気がして図書館で借りてみたりしたのですが、あまり使いませんでした←






[木曜日]


木2:情報科学 千葉滋先生 F系列

情報系の準必修です。Rubyという言語を用いて主にアルゴリズムの基礎論をやります。昔は言語の仕様についての話もしていたようですが、今はアルゴリズムに注力している感触です。講義はPDFで内容を配布して、先生が言葉で付け加えつつ毎時間課題をこなしていく形式でした。評価は課題と期末試験です。期末試験は共通問題です。情報系に明るくない方にとっては「アルゴリズムの基礎論」と言われても分かりにくいかもしれないのでもう少し詳しく書きます。1学期の「情報」科目で少しプログラミングに触れた方も多いと思いますが、日本語を英訳する時に色々な言い方があるように、同じ計算をさせるにも色々なプログラムの記述方法が存在します。しかも記述の方法によって計算にかかる時間が大きく変わるのです。これは理学・工学系の研究において数値計算をさせる時について致命的です。またたとえば「小数を含んだ計算をさせる時に注意すること」「乱数を使うときに注意すること」なども習いますが、これも使い方を間違えれば研究結果に影響を及ぼしかねない重要な基礎論です。そういうわけで、僕がシケ対してた科目の宣伝でした 笑


木5:日本国憲法 渋谷秀樹先生 C系列

教職を取るために必要な科目です。夏学期にも開講されていますが、冬学期にもあります。文系、特に法学部志望と戦うことになるので優を取るのは理系には難しいかもしれませんが、良は取れました。講義はパワポを使いながらノートを取らせるタイプで、パワポの配布はありません。評価は期末試験1本です。期末試験は穴埋め問題と記述問題で、特に理系は慣れない記述問題をすることになります。ただ日本国憲法の講義自体はそれなりに面白かったです。慣れない文系科目に触れる良い機会でした(法学なんて触れたことなかったので)。






金4:英語二列R ミルズ先生 基礎科目 既習外国語 英語

基礎科目ですが、英語二列Rはある程度選択肢があるので書いておきます。この講義では前半で"The Curious Incident of the Dog in the Night-Time"という本を基に自閉症について理解を深めました。本の読解と言いますが、出てきた単語を用いたクロスワードをしたりとかいうのだったので新鮮でした。後半ではRainmanの映画を見たり、色々と自閉症に関する映像を見たりしました。全体的にふわっとした講義で楽しかったです。評定は出席点等と、一番最後の講義で書くラストエッセイで決まるようです。内容がかたいように見えますが、そこまでかたくなかったです。


金5:わかる電子回路 三田吉郎先生 F系列 数理・情報一般

夏学期に受講した集中講義で勧められたので受講しましたが、満足しています。アナログ回路の基礎を習い、最後の方の講義では自由に回路を組ませてくれます。講義は型破りな感じで、黒板を用いつつざっくり解説なさります。評価は出席点と簡単なレポート、及び最終課題です。最終課題は自分で回路を組むかレポートを提出するかの二択です。回路を組むために工学部の一般電子実験室を開放してもらえました。僕はそこでイチからプリント基板を設計・作成することができました。初めての体験でしたが楽しかった。1年生の内からここまで自由に実験室を使える講義はそうないと思います。電気系に興味がある方、回路に興味がある方にはおすすめです。ここらへんが講義HPです。






今学期は集中講義を取りませんでした。総コマ数は21でした。

以上です。質問等あればこの記事にコメントをしていただくか、@nekketsuuuまで。

UT-S1-2ndの僕が受けた夏学期科目一覧

$
0
0
どうも熱血です。

2年夏学期も無事終了しました。毎学期恒例の講義感想録を書きましたのでアップします。

2年生になると進振りが間近な関係上、いくらか履修もピリピリしてきます。また、全然コマを取らない人からいつも通り取る人まで様々で、人によって生活が結構違うものになるのも特徴かと思います。あと、理一は基礎科目が物性化学、英語二列、基礎実験しかなくなるのでクラスの交わりも必然減ってしまいます。悲しいものです。

例によって基礎科目以外の科目について感想を書きます。僕が2年夏学期(3学期)に受けた基礎科目は、物性化学、英語二列C(Germain先生)、基礎化学実験です。


あ、そうそう、2年夏学期は履修の幅も広がり色々分かりにくくなる時期かと思います。一番最後に数理科学I~Vと、教職科目についての簡単な説明を付記しておきます。

また、とても重要なことですが、2015年度から東大は4学期制に移行するようなので、もしかすると講義内容や講義方式がここに書かれているものとは全く違うものになる可能性があります。この記事に書かれていることはあくまで僕の今学期の感想であり、将来的な恒等性を保証するものではありません。自己責任でお願いします。







[月曜日]


月2:量子論 加藤光裕先生 E系列

物理学系の主流な総合科目の1つ、量子論です。加藤量子論ではまず前半をかけて解析力学と統計物理学の勉強を少ししました。解析力学は少しずつ飛ばしながら、ラグランジュ形式やハミルトン形式のさわりまでを学び、統計物理学では黒体放射についてのPlanckの式を理解できる程度まで学びました。その後前期量子論(古典論における量子論的な展開)を学び、その流れで量子力学に入りました。シュレディンガー方程式について、時間依存しないシュレディンガー方程式を見ながらどんな感じか概観して、行列力学(いわゆる<φ|φ>みたいなやつとか)や水素原子のシュレディンガー方程式の解を見て終了でした。「量子論」という名前どおり、量子力学のシュレディンガー方程式をただ見つめるのではなく、なぜそのような方程式に至ったのかまで含めて詳しく学べます。シュレディンガー方程式のより詳しい解法については専門課程で、という感を覚えました。レポートは無し、板書のみ。期末試験一本です。内容的に少し1年生にはキツイかもしれませんが、できないことは無いと思います(前提として必要な知識がそこまで無いため。ニュートン力学をかじっていれば2年生とそこまで変わらないはず。ただ、冬学期に開講される解析力学を受講していた人は強いと思います)。なお、量子論は他の先生が開講されている場合もあります。清水明先生が開講されていることもあります(清水量子論教科書を読む限り、シュレディンガー方程式からはじまり理論の構築を行う授業のように思えます)。個人的には、1年夏学期の力学Aで加藤先生にお世話になっており、良い先生だということは知っていたため受講しました。良かったです。


月5:教育の方法 藤江康彦先生 教職科目

教職科目の1つです。この講義では、学校で行われる教育について、いくらかの分析をしてみようという趣旨の話をしました。具体的には、まず学校教育の特質、特に、教室における特質を詳しく見ました。その後、ではそのような状況の上でどのように教育を行えばよいのかという議論を行いました。講義は配布プリント+パワーポイント+時々ビデオ教材、で進行していき、毎講義B5一枚のプリントで数問の問題に答え、講義の感想を書きくわえて提出しました。問題自体はそこまで難しいものではなく、どちらかというとその講義において考えたことを書いたり、講義の内容をまとめたりする程度のものでした。1~3回に1回、数人のグループで話し合いをする場があり、何人かが先生にあてられて発表することがありましたが、そこまで厳しいグループワークではなくゆるふわでした。評価は毎授業で提出するプリントによる点と、最終レポート(大問2つ。各2400文字程度)の提出(今年は、7/28締切)で行われたようです。期末テストはありませんでした。


月6:実践的プログラミング 金子知適先生 全学自由研究ゼミナール

これで3学期連続の受講になります。趣味です。月6には教職科目もありましたが、やはりこっちの方が好きだったのでこっちを受講しました。尚月6の教職科目「教師論」ですが、毎回それおれ各地の先生を呼んでお話を聞く、という授業だったと聞いています。さて実践的プログラミングですが、今学期も今学期で同じように毎週1つ問題を解いていくというものでした。もうこれ書くのも3回目なので省略しますね。今学期は一度金子先生にICPCに出ないかと誘われたのですが、流石にこれ以上タスクを積むと無理そうだったので残念ながら断念させていただきました。プロの人は今年も世界大会で活躍されてましたね。強いです。






[火曜日]


火1:超高速ロボットをつくる 石川正俊先生など 全学自由研究ゼミナール

集中講義と普通講義の間みたいな全学ゼミです。3,4週火曜1限での講義を受けた後、週末の午後を2日分使って本郷での講義+研究室見学に参加するという講義形式でした。具体的には、工学部計数工学科の石川渡辺研究室および篠田牧野研究室の研究成果をひたすら見て、その基本にある知識を少し学ぶ、という感じの講義です。ここにある動画は何回も見ました。評価は毎講義への出席と、最終レポート(A4 2枚、見学の感想と機械システムの将来性について)の提出で行われました。僕としては、東大入学前から知っていたじゃんけんロボットBFS-Autoなどのシステムを実際に見れるのが魅力で、ただそれだけの理由で受講しました。実際に色々体験できたので面白かったです。発見としては、この2次元通信システムを知れたのが大きかったです。非接触給電には去年あたりから興味が強くなっているので、色々と考える所がありました。


火2:数理科学I 松尾厚先生 F系列

聴講しました。数理科学Iは、2次元の数学について学ぶ講義で、陰関数定理、未定乗数法、線積分などを触りました。3次元のベクトル解析を行う数理科学IIIと関連があり、また微積分を行うという点で1年の数学IA・IBと関連があります。授業形式は板書のみ。時々演習問題が配られました。


火3:反応化学 山田徹先生 E系列

準必修です。反応化学は有機化学の各種化学反応についての理論を学びました。高校化学の有機分野をより難しくした感じです。もし1年冬学期に基礎化学実験を行っていたのなら、その時に出てきたニトロ化反応やグリニャール反応は反応化学の範囲内です。割と暗記事項が多い科目でした。評価は試験と、一応の出席点(毎授業ごとに1問指定された問題を解いて提出)。講義は配布プリントと板書。割とどんどん自習していった方が捗りそうな講義でした。教科書について、ウォーレンだのジョーンズだのありますね。お高いので買いたい場合は進学したい学部でどれを使うのかも考慮しつつ、という感じだと思います。試験問題はそれなりに難しいので、しっかり勉強しないとアレです。ちなみに2014年度の試験ではIUPAC名の問題は出ませんでした。尚山田先生は毎年「試験講評」なるものを発行されているらしく、試験後に山田先生にメールすればその年の問題の講評と平均点と分散を教えていただけるそうです。友人曰く山田先生はこの講評がWeb上に落ちていると思ってらっしゃるそうですが、あんまり落ちてません。


火4:図形科学II 奈尾信英先生 F系列

準必修です。1年の冬学期に受講できる図形科学Iは手書きの作図についてでしたが、図形科学IIではその発展としてCGを使った立体の取り扱い方と図形幾何学の応用について学びました。尚手書きの作図についてもっと詳しく知りたい人のために図形科学演習Iという授業もあります(僕は受講していません)。さてこの講義では、Inventorや3ds Maxといったソフトウェアを使ってコンピュータを使った作図(CAD)の扱い方と、それを用いてレンダリングして映像を作る手法のお勉強をしました。毎時間ソフトの使い方をちょっとずつ学んでいき、最後の3週間+αを使って何か1つ最終課題を作って提出、という形の授業です。評価は毎週の成果物の提出(よくできているものについてのみ追加加点)+最終課題+期末テスト(+出席?)という感じでした。期末テストは教科書の丸暗記で解けます。厄介なのは最終課題で、約1か月使って何かしら3Dレンダリングした動画を作成します。具体例はコチラ。尚左に載ってるのは教科書に載ってる例そのままで、オリジナルのものを作成してもOK。年々クオリティが上がっているそうな。レンダリングという作業に無茶苦茶時間がかかる(最低でも数時間。凝ったものを作りたいなら数日間はかかるかも)ので、コマを多くとっている人(僕)は注意が必要です。JK棟でちくちくレンダリングしながら物性化学の勉強するのはもう嫌です。尚この講義で使うソフトウェアのInventorと3ds Maxは共にこの、Autodesk Educational Communityから無料ダウンロードできます。学生ならば.ac.jpドメインのメールアドレス(Mail Suiteのやつ。@email.ecc.u-tokyo.ac.jpなど)を使って登録することで、ダウンロードから数年間だけ無料になるライセンス付きのAutodesk商品をゲットすることができます。尚、2014年度使ったソフトのバージョンはInventor Professional 2012と3ds Max 2012です(注意なのですが、実は先のページからInventorをダウンロードしようとするとpart1だけダウンロードされて、part2がダウンロードされない時があります。chromeだとダウンロードがうまくいきません。Internet Explorerを使ってください。あるいはchromeでもpart2ファイルに直接アタックすればDLできたような気がします。あとInventorも3ds Maxもどちらも[.NET再頒布可能パッケージとか入ってるため]数GBの容量を誇る.exeとなっておりますのでダウンロード時間に余裕をもったダウンロードが期待されます)。バージョンはおそらくECCSに入ってるものと同じやつを使うはずです。Windowsで動作するソフトなので、ECCSのWindowsでログインし、スタートメニュー→すべてのプログラム→Autodeskの中にソフトが入ってます。どんな感じか触ってみたい人はそこからどうぞ。ちなみに最終課題のためには自分のPCにもソフトをダウンロードしてやることが効率のために必要な気がします。あ、あと、実は教科書は学生会館委員会の委員会室(学生会館の上の階にある)で割と安く買えます。


火5:道徳教育の理論と実践 西野真由美先生 教職科目

道徳系の教職はほぼ選択肢が無いのでこれを受講した方がよいと思い受講しました。講義形式は配布プリント+板書。評価は出席点+レポート1回(毎講義に講義と関連する参考図書が数冊挙げられるので、それらの中から1冊選び考察する)+期末テスト(繰り上げ)、です。講義1回目に詳しい説明がありました。詳しい講義内容としては、道徳とは一体何か、という所から始まり、道徳性の発達についての研究、日本における道徳教育の歴史の概観、そして具体的な道徳教育の方法についての考察などを行いました。ほぼ毎回グループワークがあり、何かしらの方法(毎回変わる)を使って集団の意見決定を行いました。そうそう後、結局指定されていた教科書一回も使わなかったです(むー……)






[水曜日]


水1:統計物理学 吉岡大二郎先生 E系列

今学期受けた科目の中で一番好きになれた科目かもしれません。とても僕と波長が合った気がします。統計物理は、ニュートン力学などのミクロな物理と熱力学のマクロな物理をつなげようという分野です。2年生向けの講義ですが、1年生も受講できます。(先生からの情報によると、暫定ですが2014年度の1年生の受講生は9名で、内6名が優だった模様です) 講義はパワーポイントで、適宜印刷してくることが必要です(しかしそれだけの価値があります)。所々量子論を必要としますが、適宜説明が入るので大丈夫です。それよりどちらかというと数学的操作に慣れている必要があると思われます。毎講義最後に質問+感想等を書いた紙を提出しました(成績には関係なかったはずです)。集められた質問はその次の講義で回答がありました。個人的には、最後2.5回分くらいの講義を使って説明のあった、強磁性体のIsing模型による解釈がとても面白かったです(強磁性体がなぜキュリー温度で常磁性体に相転移するのか、なぜ磁化するのか、などを考察)。残念ながら吉岡先生が今年でご退官なさるらしく、来年からはどうなるのか分かりません。同様に、和田純夫先生、風間洋一先生もご退官だそうで、来年からの「相対論」は一体どうなるのだろうかなぁという感じです。教科書指定はありませんでしたが、吉岡先生は2冊統計物理の本を書いていらっしゃいます。『マクロな体系の論理』(もうあんまり売っていないので古書を探すしかない)とSpringerの"Statistical Physics"です。


水2:数理科学II 今井直毅先生 F系列

数理科学IIは、全微分方程式の授業です。微積分を扱うという点で数学IA・IBの発展ですが、実は途中で行列を扱う所がちょっとだけあるのでそこは数学IIの発展となっています。今井先生はかなり凄いお方で、僕は個人的にとても尊敬しています。講義形式は板書のみ。講義2回に1回、任意提出のレポート問題が出ました(成績に影響はなく、提出者のみに解答付きで採点が返ってくる)。評価は期末試験のみでした。最初の講義が新規事項が多くちょっとたじろぎましたが、一旦乗り越えると楽でした。教科書指定アリでした。レポート課題(任意提出)が割と教科書に似た問題だったので買って良いと思います。結構期末試験のために演習問題を解きたくなると思うので……。


水5:教育課程 岩田一正先生 教職科目

教職科目です。その名の通り、カリキュラムについてのひきこもごもを学習しました。具体的には、日本のカリキュラムの歴史を概観したのち、カリキュラム研究についての一般事項、たとえばヒドゥン・カリキュラムと呼ばれるものについて学び、その後各国のカリキュラム事情について俯瞰して終わりました。岩田先生はとても教養のあるお方で、毎回の講義で話される知識の豊富さ、論理の堅実さに正直びっくりしました。とても面白かったです。講義形式はパワーポイント(任意で印刷してくる)。評価は期末試験のみ(繰り上げ、持ち込みA4両面2枚まで可)でした。


水6:精密工学メカトロニクス入門 山本晃生先生 全学体験ゼミナール

工学部精密工学科の開講している全学ゼミです。工学部合同ゼミで説明が受けられるゼミの1つです。履修のためにはガイダンスに参加する必要があります。講義内容としては、駒場で2回制御論の基礎を学ぶ座学をしたあと、本郷で週末の2日全日を使って磁気力を使った非接触浮上(マグレブ)の制作実習をしました。制御論の学習というのは、簡単な電気回路の知識(抵抗、コンデンサ、トランジスタ、OPアンプの基礎)と、それを使った制御の理論的扱い(古典制御論と現代制御論)について俯瞰し、古典制御論のPID制御について学びました。今回使った制御方法はPID制御です。実習では1日かけてアナログ回路を用いて小さいマグレブ装置を1人1つ作り、磁気浮上させました。1日目でマグレブできてしまったので、2日目はマイコンを使ったデジタル制御によるマグレブをしました。mbedを1人1つ使って、Cで適当なプログラムを書いて制御しました。簡単でした。制御論を学んだのは初めてだったので面白かったです。今学期受けた講義の中で最も早く単位確定しました。






[木曜日]


木1:図形科学演習II 山口泰先生 F系列

図形科学IIはInventor/3ds Maxを使った授業でしたが、こちらはJava + OpenGLを使ったプログラミングの演習授業となっています。内容的には最終的には図形科学IIに若干関係あるものになりますが、正直あまり図形科学IIとの関連は無いと思った方が良いかと思いました。どちらもCGを扱うという点では共通です。Javaは情報科学で扱うRubyと似たようなオブジェクト指向言語であり、情報科学を履修していればそれなりに扱えると思います。授業内容としては、Javaの使い方(いくつかの文法、クラス、継承についての解説)を少し学んだあとCanvasを使った2D描画について学び、そしてOpenGL(JOGL)を使った3D描画について学びます。図形科学IIで扱うようなCGソフトが概略的にはどのように作られているのか分かって面白かったです。授業はJK棟で毎週講義+実習の形で進み、教科書を約1章ずつ進めていくような感じです。毎週課題の提出があり、期末テストはありませんでした。個人的に山口先生には何度もお世話になっているので、お勧めの講義です。あと実は、図形科学IIと同様に、教科書を学生会館委員会室でちょっとだけ安売りしてます。


木5:教育原理 下地秀樹先生 教職科目

教職科目です。この講義では「そもそも"人間"とは何か?」みたいな人間論から入り、学力観について再考し、そして改めて教育とは何か考える、というようなことをしました。哲学チックなにおいもする講義でした。僕は好きです。講義内容としては毎回、座学+小課題筆記+ピアレビューみたいな形でした。この小課題がかなり面白い問題ばかりで、考え応えがありました。評価はこの小課題の出席点と、期末テスト(繰り上げ、小課題の発展みたいな大課題が4,5問、持ち込み可、終了後にやっぱりピアレビューをした)でした。






[金曜日]


金1:数理科学IV 松田茂樹先生 F系列

数理科学IVはジョルダン標準形についての講義です。つまりは1年生のときの数学IIの続きです。対角化できない正方行列に対してどう処理するかを目標に色々学びます。数理科学IIの微分方程式にもチラリと関わってきますし、理学・工学では色んな分野で重要になってくる概念(らしい)です。授業形式は板書のみ。ときどき演習問題が配られました。評価は期末一本でした。「「「準同型定理は麦」」」


金5:教育心理I 市川伸一先生、植阪友理先生 教職科目

教職科目です。教育心理ではその名の通り教育学に有効な心理学を学びます。特にこの市川・植坂両先生の講義は心理学の理論というよりかはその実践に興味があるらしく、実践について両先生の実体験も交えながらの講義、となりました。講義形式は、少し説明しづらいのでざっくりと説明しますが、まずほとんどの回を植坂先生が担当されました。植坂先生が市川研に所属している、という形みたいです。で、2,3回市川先生の講義がありました。植坂先生の講義ではゞ飢塀颪了慊蠅気譴疹呂鰺十してくる⊆箸呂犬瓩4人グループで予習の確認をする先生の主に口話、時々板書による講義ず討咼哀襦璽廚覇睛討粒稜Лト展、という、(この講義で習う形の)講義形式でした。市川先生もこれに似ていましたが、パワーポイントを用いていた点で差がありました。授業形式として、配布プリント有、毎授業で質問+感想を書いた紙を提出、でした。評価はレポート2回+期末試験(繰り上げ)(+出席?)でした。2回目のレポートの提出締切が8/11まで、という謎な感じなのですが、専門課程の講義ではこのようなことも多いのでしょうか。教職科目は進振りには関係ないのでそこまで早く評価を出さなくても良いのかもしれませんが……。植坂先生の講義では毎回4人のペアを作ることが必要でした。その意味で、3-4限が基礎化学実験だったため少しキツかったですが、講義後半になると先生が徐々に基礎実験について理解を示していただけるようになり、また同クラ受講生が割と多かったこともあり、乗り切れました(ちなみに一応基礎物理実験には5限のために一旦実験を抜けてまた戻ってこられるというシステムが有るとか無いとか)。






[集中講義]


# 夏休みに集中講義を1つ取っていたのですが、その名簿が公開されている関係上、ある方法を使うと僕の本名が特定できてしまうことに気づいたので、この項目は削除しました。申し訳ありません。 #


(※火1:超高速ロボットをつくる、水6:精密工学メカトロニクス入門もほぼ集中講義でした)






[数理科学について]

数理科学I~Vは、2年生のみが受講することのできる数学の科目です。5つもあって「全部受講しなきゃいけないの?」とか色々あると思います。まず、それぞれの科目が主に何をする科目なのかの解説を書きます。

数理科学機2次元における微積分を主に扱いました。陰関数定理、未定乗数法、線積分など。
数理科学供Ь鑒方程式を扱いました。
数理科学掘3次元におけるベクトル解析を主に扱うそうです。ストークスの定理、微分形式など。
数理科学検Jordan標準形を主に扱いました。行列の話です。
数理科学后Е-δ論法について主に扱うそうです。

並べてみると、1年生のときの数学IA・IBの発展として数理科学機Ν掘Ν后⊃学IIの発展として数理科学犬あることがわかります。尚数理科学IIは微積を扱うという点で数学IA・IBの発展ですがそこまで強いものではなく、また行列を扱う話もある、という点で数学IIの発展にもなっていました。

ちなみに、1年生の冬学期最後の数学の講義において、先生から「進学学部別の『受講してほしい数理科学』一覧」のリストをもらいました。数理科学の履修については、このリストや行きたい学科の要望科目等の情報を参考にしつつ決めればよいのではないかと思います。聴講という選択肢もあります。


[教職科目について]

2年生では、教職免許を取得するために必要な単位の内のいくつかを先行して受講することができます。詳しくは1年生の夏に開かれる任意参加の「教職免許ガイダンス」に譲るとして、進学の手引きなどをよく読めば、それなりの単位数が教職に必要なことがわかります。教育学部が開講しているそれらの科目の内いくつかは駒場で先行開講されているため、受講できます。今学期は月曜~金曜の5限と、月曜6限に開講されました。尚、それら全てを受講しなければいけないわけではありませんでした(とれば専門課程進学後楽になるというだけ)。

尚、進みたい学科によっては学部時代中の教職免許取得が絶望的になりますので、そこらへんをよく考慮しつつ自分で計画することになります。ちなみに僕は進振りガイダンスで教授直々に「教職免許取るなら修士だと思うけど~」という趣旨のことを言われガビーンってなりました。

教職科目は教育学部の科目なので教養学部の日程で試験が行えず、試験がある科目については全て繰り上げ試験という形になりました。また、先生が毎年変わっている科目もあるらしく、ここに書いたことが参考になるのは数年後かもしれません。


[4学期制(4ターム制)について]

来年から東大も4学期制になります。上でも述べましたが、それに伴い色々とカリキュラムも変わるでしょうし、どうなるか分かりません。理系と文系で学期が変わるようなので、もしかすると理系が教職科目受講することがより大変になるのでは……?とか思ってます。闇なことにならないとよいのですが。

まだ各学部学科ごとの具体案が分からないのでどうもこうも言えないのですが、繰り返しますように、もし4学期制になって制度が変わるとここに書いてあることは全く参考にならない可能性がありますのでご承知おきください。






今学期の履修は基礎科目2コマ+実験1つ(2コマ)+総合7コマ+教職5コマ+ゼミ1コマ+集中講義3つ(+聴講1コマ)でした。

以上です。質問等あればこの記事にコメントをしていただくか、@nekketsuuuまで。

eSpeakで遊ぶ

$
0
0
「本の虫:GNU/Linuxでコマンドラインから喋らせる方法」に触発されて、僕も喋らせてみることにした。

環境はWindows 8。コマンドプロンプトの上で喋らせてみる。

eSpeakというソフトを使う。文字列を渡すと、喋る。標準出力も読んでくれる。

eSpeakのHPはここ。適当に[Download]からWindows用のexeをもらって、インストール。インストールする際、どの言語(声?)を使うかー?、みたいなことを聞かれたけどどうせ英語しか喋らせないしデフォルト設定にした。

コマンドプロンプト上で使いたいのでPATHを追加。exeはeSpeak/command_line/の中にある。


使えるようになったので適当に

>espeak "Hello, world."

おお、喋った。


pingも試してみる。

>ping localhost | espeak

ところがコマンドプロンプトが日本語環境なため、うまくいかない。そこでchcpコマンドを使う。ここを参考にした。日本語のCode pageは932、OEM United Statesは437。

>chcp
現在のコード ページ: 932
>chcp 437
Active code page: 437

これで英語環境に変わる。どうでもいいけど、cmd.exeのタイトルバーやコンテキストメニューなどの文字は変わらないのね。

この上でもう一度。

>ping localhost | espeak

喋った。


chcpコマンドのCode pageについて、technet(2012)のこのページだけだと情報が足りなかったので調べた。ちなみにこのページに載っている437、850、852、855、857、860、861、863、865、866、869だとどれもping localhostの出力は同じだった。

"Code page"でググったらすぐ出てくる。Wikipediaにも記事があるMSDNならここ。英語圏だと、utf-8をコマンドライン上で使うためにchcp 65001が有名みたい? コマンドプロンプト(日本語)の標準文字コードってShift_JISなので、もしutf-8が使いたくなったときのために覚えておこう。




ところでeSpeak、5分くらい遊んだが、飽きた。というかこれ、WIndowsでやるならゆっくりでよくない?

TOP PAGE


UT-S1-2ndの僕が受けた冬学期科目一覧

$
0
0
熱血です。

急かされたので、2年後期の講義感想録をつけたいと思います。

今学期も所属は教養学部理科一類なのですが、進振りで僕は理学部情報科学科(以下ISと略記)に内定したので、専門科目の受講がほぼ全てとなっています。

以下「4学期科目」と書いた場合、その学科が教養学部2年冬学期に開講していた専門科目のことを指すこととします。

IS内定者はIS4学期科目が全て必修で、他にいくつか取らなければいけない感じでした。

夏学期の講義感想録を見ると「クラスとの交わりが減ってしまい悲しい」とか書いてますが、今学期はクラスメイトと一緒に受ける講義は0でした。コンパはしたし、駒場で何回も会うので交流はありますけどね。これからも交流を続けたい所です。






[月曜日]


月2:生物情報学基礎論I 高木利久先生, et al. 理学部生物情報科学科4学期科目

ISは必修の他に何個か単位を取らなければいけないので取りました。この科目は高木利久先生, 笠原雅弘先生, 浅井潔先生, 津田宏治先生, 岩崎渉先生によるオムニバス形式の講義でした。生物情報学に必要な技術・知識を学べる科目で、どちらかというと情報科学寄りの話題が多かったです。基礎論IIの方は生物寄りの話題が多いらしいですが受講していません。準必修科目「情報科学」の内容にも含まれていたアラインメントのアルゴリズムの話やその応用の話、ベイズ統計と統計モデル選択の話、グラフ理論の基礎とグラフのデータ構造の話、並列計算を用いた高速計算の話、進化樹形図の描き方の話、などなどが話題でした。どの話も根源的には、生物のゲノムやRNAの配列を解析し分類・解析しようとした時に必要となってくるものでしょう。生物情報学は急伸している分野であり、最新の研究結果もどんどん変わるので、講義内容は毎年ちょっとずつ違うらしいです。参考書も(一応指定はありますが)まだ確立したものは無いらしい。指定された参考書は、昔の生物情報科学科の何らかの講義の講義ノートを学生がまとめて本にしたものらしいです。個人的には、「数え上げお姉さん」プロジェクトにも関わっていらっしゃったらしい津田先生のグラフアルゴリズムの話が一番面白かったのですが、それは多分僕が情報科学畑の人間だからだと思います。講義はスライド(先生によっては配布有)、評価は出席+期末試験でした。


月3:計算機システム 吉本芳英先生 IS4学期科目

計算機のハードウェア的な面からソフトウェア的な面までを総ざらいする科目です。月4のHW構成法と並んで、ISの3年生科目に繋がる科目となっているそうです。また、情報科学基礎実験とも繋がっています。習った内容が多岐にわたるのでまとめにくいですが、計算機の発展の歴史、業界標準な計算機でのデータの表し方、CPUの内部構造、アセンブリ、RISC/CISCの話ができる程度の設計基礎知識、OSの基礎、ソフトウェア実行の仕組み、ネットワーク階層の基礎、セキュリティーのお話などをやりました。昨年度まで平木先生が講義なさっていたらしいのですが、今年度は吉本先生の講義でした。講義は全てスライドで配布無し、評価は出席+中間試験+期末試験でした。IS4学期科目には繰り上げ試験が多いのですが、これとHW構成法期末試験だけ繰り上げじゃなかったです。習う内容が多く、また基礎知識未満の知識が少ない箇所は自分で細かい所を調べていかないとちゃんと理解はできないと思います。とはいえそこまで講義で説明していたらどれだけ時間があっても足りないので、生徒の自主性に任せているのかなあという感じです。


月4:ハードウェア構成法 小林芳直先生 IS4学期科目

個人的に今学期ベスト科目です(冗談です)。この講義はNOT/AND/OR/XOR等を使って論理回路を組み、色々作ってみる講義です。作ってみるといっても紙面の上ですが。そして論理素子を使うといったのは半分嘘で、実際によく使うのはもっと大きな単位だったりします。「計算機システム」と共に3年生の専門科目に繋がる講義で、特に3年後期のCPU実験と強い関係があります。今年はISerしか受講していませんでしたが、正直ISerくらいしか受講する意欲が湧かない科目かもしれません(単に他の必修と被っていただけかもしれませんが)。僕の場合、講義初回から聞いたこともない「ラッチ」という言葉を既知にされて、ラッチをどうやって論理素子で作るかという話から始まったのでものすごい困惑したものですが、半年頑張ってみるとちゃんとわかるようになっているので不思議です。小林先生はその道のプロ中のプロで、ハードウェアに対する知識量が半端ないです。CPU実験をやっていた1つ上の先輩が「今HW構成法を受講したい」というツイートをしていた気がするので、2年生の内に負けずに頑張ることが大事なのかなあと思って頑張りました。今年度は毎年使っていた教科書が学期開始時絶版になっていたのですが、先生の力で増刷となりました。来年度以降も同じ教科書が使われるのか知りません。後、今年度は「ハードウェア記述言語」という分類のプログラミング言語であるVHDLを使って提出できるレポート課題があり、しかも学科民が結構普通に提出できてしまったので、もしかしたら来年からはVHDLがかなり早目に導入されるかもしれません。尚、VHDLの文法とかは自習しました。講義は板書+喋りで、評価は有るのか無いのかよく分からない出席+中間レポート+冬休み特訓レポート+期末試験です。期末試験は繰り上げじゃなく、任意のウェポンの持ち込みが許可されていました(ただ通信機器の持ち込みが可能かどうか結局最後まで微妙でした。1つ上の代の人はPC持ち込んだ人がいるらしいのですが)。


月5:進路指導・生徒指導 大野道夫先生 教職科目

大野先生の関心が「青年期の日本人」にあるらしく、そればっかりします。あと毎時間ロックを1曲程度聴きます(ロック史を追うことで青年期について学ぶという趣旨)。講義は板書で、評価は期末レポートのみでした。


月6:実践的プログラミング 金子知適先生 全学自由研究ゼミナール

4学期連続の受講となります。これで単位がもらえる受講は終わりですね。来学期からエア受講するか迷う所です。この講義については過去の講義感想録で語り切った気がするのでもう書くことはないです。去年の冬学期の内容に少しアップデートがかかっていて新しい内容も含まれていたので、連続受講しても暇にはなりませんでした。





[火曜日]

火4:教育と社会 西島央先生 教職科目

理学部・工学部の多くの方は全休となる火曜日ですが、教職科目を取るとそうはなりません。この科目は社会学的見地から見た教育学がメインでした。西島先生が「常識を疑う」ことを講義の1つの軸にされていたらしく、教育に関わるいくつかのテーマの上で「それがなぜそうなのか」を考えることを良くやりました。学期の後半で、能力の高い者が社会を統治しているのだ、というメリトクラシーという社会学の概念にまつわる話がいくつか出てきて、興味深かったです。講義はプリント等による先生の講義と、生徒間での議論とが半々くらい交互で行われる感じでした。評価は出席(?)+期末レポートです。


火5:特別活動論 滝充先生 教職科目

今学期受けた教職科目の中で個人的に一番面白かったのがこの科目です。特別活動とは、たとえば中学校では学級活動・生徒会活動・学校行事の総称であり、ちゃんと初等・中等教育の指導要領に定められているものです。この講義ではこの指導要領をよく読みながら、学生個々人の体験なども交えつつ、指導要領で述べられている「特別活動」において必要な「望ましい集団活動」とは何か、や、「特別活動」として具体的にどんなことをすれば良いのか、どういったやり方が今あるのか、などといったことを学びました。指導要領が教科書に指定されていますが、100円位しかしないので早目に買った方が良いです。一応webに文科省がpdfで上げてくれているのですが僕は本の方が便利でした。講義は開始直後に小テストがあり、その後スライドを用いて先生が問題提起しながら、先生の促しに応じて学生がどんどん発表していくというスタイルです。評価が出席+小テスト+発表点で、完全に点数化されています。学期中に何回かその点数を確認しました。はじめの方の講義で発表点を稼げれば非常に旨いので、初回や第2回の講義でビビらず発表すると後々嬉しいと思いました。





[水曜日]

水1,2:代数と幾何 志甫淳先生 理学部数学科4学期科目

4学期に数学科の専門科目は講義が3種類×2コマ、演習が3種類×1コマで全部で9コマ存在しました。僕は講義を3種類全部取ったのでそれぞれについても感想を書いておこうと思います。「代数と幾何」は線形代数の続きで、教科書の節名をそのまま持ってくると、線形空間、線形写像、自己準同型(Jordan標準形)、双対線形空間、双線形形式、商空間、テンソル積について学びました。Jordan標準形くらいまでは2nd夏学期の数理科学IVでやった内容とほぼ同じで、準同型定理とかもやりました。講義は板書、評価は中間テスト+期末テストでした。演習問題は演習の時間に配られていたので数学科の友達に見せてもらったのですが、教科書の演習問題まとめと、いくらかオリジナルな問題があった感じでした。


水4:アルゴリズムとデータ構造 五十嵐健夫先生 IS4学期科目

アルゴリズムとデータ構造の基礎をやる科目です。グラフの探索、配列データのソート、動的計画法とかのアルゴリズムの基礎と、その計算量の基礎をやりました。講義中のアルゴリズムの説明には仮想言語を使いました。その関係で、プログラミングをしたことが無い人は自習が必要と思います。五十嵐先生の手による自習用教材がかなり丁寧に作られていて、学生としてはとても嬉しく感謝の念しかありません。CとJavaによる実装が教材になっているのですが、特にJavaの方はグラフの探索やソートなどの様子が、1ステップ進む度にGUIで分かるようになっていて初心者向けだと感じました(ただCとJavaそのものに対する解説は無いので、やはりそこは自習)。講義は電子黒板的なモノによる板書(!)で、評価は出席+期末試験(繰り上げ)でした。あ、あと一応講義の内容が情報科学基礎実験に関連します。


水5,金5:情報科学基礎実験 萩谷昌己先生 IS4学期科目

Twitterで #情報科学基礎実験 と検索すればいくらか雰囲気が分かるかと思いますが、いくつかの言語について学んで実装してみるという講義です。自然科学系の学科から見れば「実験」という名前がついていることが奇妙に思われるかもしれませんが、計算機に入力してその出力を見るという意味で実験、だそうです。毎時間2~10個ほどの実験課題が出て、それを各自実装して提出する形でした。やった言語はC / Scheme / PowerPCアセンブラの3つです。講義は大きく4つの内容に分けられ、(1) C言語の基礎から発展。変数のポインタやメモリの動的確保などまで。 (2) 関数型言語Schemeの基礎。SICPが参考書になってました。最終的にScheme処理系をSchemeで作ります(丁寧な解説がつくので思っていたよりは簡単でした)。 (3) アルゴリズムとデータ構造演習。同名の講義で習ったものの内のいくつかをCやSchemeで実装します。 (4) アセンブラ演習。PowerPCというアーキテクチャのアセンブラを学びました。「計算機システム」で扱うアセンブラはPowerPCをモデルにしてそうな部分が多数あり、関連が強かったです。評価は提出した課題によります。





[木曜日]

木1,2:集合と位相 二木昭人先生 理学部数学科4学期科目

学期の前半は素朴集合論における集合の取り扱いについて学び、後半で距離空間、位相空間、位相的性質、完備性について学びました。集合論の方は集合の元とか包含関係とか基礎の基礎から始まって選択公理とかZornの補題とかそこらへんまで。位相論の方は位相の基礎をやった後、連続写像とかHausdorff空間とか完備化とか、色々飛ばしている気もしますがそこらへんをやりました。昨年度までは松尾先生が担当なさっていたのですが、今年から二木先生に。ただし「集合と位相演習」は今年度も松尾先生でした(参考: Twitter #ほのぼの集合と位相演習 )。講義は板書。毎時間レポートが出て次の週の講義で提出でした。評価はレポート+中間試験+期末試験。


木4:基礎教育学概論 小国喜弘先生, et al. 教職科目

6人×2時間のオムニバスでした。毎時間出席点があり、僕は初回の講義出席しなかったのでそこだけ逃しました。出席点で最大40点くらい稼げた気がします。先生によって全然話す内容が違い、また文系科目の素養が無い僕には少し苦しい話もいくつかありました。一応概要を書いておきます。(0)僕が出席していない初回の講義。Hannah Arendtについてやったらしい。(1) 片山勝茂先生。現代社会における道徳教育とシティズンシップ教育について。講義はプリント。(2) 金森修先生。Pierre BoundienとÉmile Durkheimについて。再生産理論、文化資本、社会分業論。講義は喋り続ける感じでした。(3) 川本隆史先生。「社会」「人権」について。講義はプリント。(4) 小国喜弘先生。大阪市立大空小学校の実例を教育学的に分析し、学校とはどんなものであるか考えた。講義1回目はビデオを見て、2回目はプリント。(5) 田中智志先生。教育臨床学について。講義はプリント。(0)~(5)までで1つずつ期末試験の問題が前バラシされ、期末試験では6題中1題に解答するという形だった。期末試験は繰り上げで、ノートや資料の持ち込み可。





[金曜日]

金1,2:複素解析学I 平地健吾先生 理学部数学科4学期科目

複素数の構成から始まって、正則関数、Cauchy-Riemann方程式、リーマン球面、1次変換、Cauchyの定理、Cauchyの積分公式、留数計算、ローラン展開、無限積展開などをやりました。僕にとって数学科三大必修の内一番難しかったです。演習も平地先生でしたが演習の問題はWeb上で公開されていました(提出の義務があるのは演習を受講している人のみでした)。学期はじめの方、毎週の演習をあまりしなかったことをとても後悔しています。そのせいで大幅に出遅れました。講義は板書。評価は中間試験+期末試験でした。


金3:情報数学 須田礼仁先生 IS4学期科目

情報科学にまつわる数学的基礎を広く扱う科目です。数学的な議論は若干ラフでした(少なくとも数学科必修よりは楽でした)。情報科学科(学年で30人くらい)の必修科目なのに履修者は173人もいたようです。理学部の数学、化学、物理科などでは定番の他学科科目となっているみたいです。内容としては素朴集合論の基礎(元とか包含関係とか)、群・環・体などの基本的な代数構造、暗号論、確率や情報エントロピーなどの理論、符号理論です。指定された教科書が4つあって、それぞれがそれぞれで微妙にカバーしている範囲が違いました。講義の1回目に説明があったので買うのはそれまで待っても良いかもしれません。講義は板書で、評価は出席+期末試験(繰り上げ)+レポートでした。レポートは毎回出題され、学期中に講義6回分ずつ提出するもので、救済の意味しかなかったようです。


金4:形式言語理論 蓮尾一郎先生 IS4学期科目

決定性有限オートマトンの話から非決定性有限オートマトンの話に入り、オートマトンのpumping lemmaや計算能力の差についてやった後、正規表現、文脈自由文法、文脈自由文法のpumping lemma、Pushdownオートマトン、Turing機械などをやりました。講義は板書、評価は大体毎週出題されるレポート+期末試験、でした。教科書が(東大内からのアクセス限定で)講義ページにpdfでアップされています。計算論の知識やアルゴリズムの知識がいくらかあるとより楽しめる授業だと思います。


金5,水5:情報科学基礎実験 ⇒ 水5を参照






今学期は集中講義等は取りませんでした。
IS必修7コマ + 理学部他学科科目7コマ + 教職4コマ + 全学ゼミ1コマでした。


以上です。質問等あればこの記事にコメントしていただくか、@nekketsuuuまで。

Markdown -> PDF on Ubuntu 14.04 LTS

$
0
0
MarkdownからPDF作りたいですよね。やりましょう。

この記事では、.mdファイルをpandocで.pdfにする過程を自分用メモします。

環境はUbuntu 14.04 LTSです。

最終更新: 2015/11/23


https://github.com/jgm/pandoc/releases/1.15.1<----- バージョンによってURLが変わります

sudo apt-get install pandocで入れても良いのですがバージョンが古いのでdebian packageから入れましょう。上の1つ目のリンクから最新バージョンの.debファイルが置いてあるGitHubまで行けます。

$ sudo dpkg -i pandoc-1.15.1-1-amd64.deb

また、多少時間がかかりますがビルドすることもできます。

pandocはHaskellで書かれているのでHaskellを入れていない人は入れましょう。

Haskellアプリのパッケージマネージャであるcabalを使ってインストールします。

$ sudo apt-get install haskell-platform
$ cabal update
$ sudo cabal install --global cabal-install
$ sudo cabal install --global pandoc

LaTeX

pandocは内部的にMarkdown ->* LaTeX -> PDFという変換をしているのでLaTeXが必要です。今ならTeX Live 2015が良いです。数年前まで日本語フォント周りが面倒臭かったですが最近は楽です。

TeX Wikiを参考に、install-tl-ubuntuを使うのが良いでしょう。



$ git clone https://github.com/scottkosty/install-tl-ubuntu.git
$ cd install-tl-ubuntu
$ sudo ./install-tl-ubuntu

gitが無いならwgetでもいいです

$ wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/install-tl-ubuntu && chmod +x ./install-tl-ubuntu

そのまま運用してると、忘れてsudo apt-get install texliveしたときなんかに/usr/binに同名の(あんまり設定がされていない)TeX Liveが入ることがあるので、それが嫌な人はapt-getに/usr/local/texliveにTeX Liveがあることを教えてあげます(dummyパッケージを作ります)。

$ sudo apt-get install equivs
$ wget http://www.tug.org/texlive/files/debian-equivs-2015-ex.txt
$ equivs-build debian-equivs-2015-ex.txt
$ sudo dpkg -i texlive-local_2015-1_all.deb

エディタ


適当なMarkdownファイルを作ります。

Emacsでもvimでもウェブエディタでも良いですが、Markdownに特化するならAtom.ioが使い勝手良いです。まだUbuntu用だとアップデートが自動ではないですが、そんなには気になりません。



Ubuntu用には上のページに書いてあるようにatom-amd64.debをダウンロードして

$ sudo dpkg --install atom-amd64.deb

が良いです。

バージョンによっては日本語の入ったMarkdownのプレビューが豆腐になることがあるので、設定で調整します。これはフォントの問題です。

Atomを起動後Ctrl+,でSettingsを開いて、左のカラムから"Open Config Folder"を開きます。

そして以下のCSSをコピペしてstyles.lessという名前で出てきたフォルダ(デフォルトは~/.atom)に保存します。

* {
    font-family: Source Han Code JP;
}

.markdown-preview {
    h1,h2,h3,h4,h5,h6 {
      font-family: Source Han Code JP;
    }
}

atom.ioの解説記事では無いのでこれ以上説明しませんが、色々面白いパッケージがあるのでググってみてください。

Node.js

単に変換するだけなら今までのだけでできるんですが、使いたいフィルターがあるのでNode.jsを使えるようにします。sudo apt-get install nodeだと違うのが/usr/sbin/に入ってしまうので注意してください。

同時にNode.jsアプリのパッケージマネージャーであるnpmも入れます。

$ sudo apt-get install nodejs
$ sudo apt-get install npm

Node.jsのバージョン問題が気になる人はnvmでバージョン管理する方法があるようです。


このままだとnodeというコマンド名でNode.jsが起動できないので、

$ sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

としてやってnodeでも起動できるようにするか、すぐ下でダウンロードするimport.jsのnodeをnodejsに書き換える必要があります。特に拘りがないなら上のコマンドを使うのが速いです。

import.js

@azu_re さんのimport.jsが便利なので使ってみたい人はgit cloneします。

pandocでは内部的にMarkdown -> JSON -> filtered JSON -> PDFみたいな感じに、変換途中に自前のフィルタースクリプトを噛ませることができます。

import.jsは、Markdownのコードブロック(プログラムのコードを書く部分)に外部ファイルをインポートできるようにするフィルターです。

後々楽なので~/.pandoc以下にダウンロードするようにしていますが、好みで変えても構いません。

$ cd ~
$ mkdir .pandoc
$ cd .pandoc
$ git clone https://github.com/azu/pandoc_import_code_filter.git
$ cd pandoc_import_code
$ npm install

試してみる


たとえばこんなMarkdownファイルで試してみます。


Markdownの文法はググればすぐでてきます。AtomだとCtrl+Shit+MでMarkdown previewをトグルできます。

今回使っている文法は、GitHub Markdownにpandoc拡張のpandoc_title_blockheader-attributeを入れたものです。

LaTeXの数式モードが若干分かりにくいので付記しておくと、tex_math_dollarsでは$ ... $がインライン数式モードとして使えます。tex_math_single_backslashでは\[ ... \]が行立てする数式モード(ディスプレイ数式モード)として使えます。マニュアルによるとこれで\( ... \;)も使えるようになるはずなのですが何故か使えませんでした。

このような文法の細かい設定は、pandocの実行時フラグで設定できます。

たとえばこのファイルを以下のコマンドでpdfに変換できます。

$ ls
example.md  hello.c
$ pandoc example.md -s --self-contained -f markdown_github+pandoc_title_block+header_attributes -o example.pdf -V documentclass=ltjarticle --latex-engine=lualatex -V geometry:a4paper -V geometry:margin=2.5cm -V geometry:nohead --filter ~/.pandoc/pandoc_import_code_filter/import.js
$ ls
example.md  example.pdf  hello.c

今回の設定は基本的にGitHub Markdownの指定にしたがっていますが、以下の拡張がなされています。

・ pandoc_title_block : 最初の%で始まる行がタイトル扱いされる。デフォルトだとタイトル・著者名・日付の順番。これを自分好みに変えるためにはYAMLメタデータとテンプレートが必要です。たとえばこのissueや、このissueなんかが参考になります。

・ header_attributes : 各sectionには#section_nameでinternal link(内部リンク)が貼れるのですが、日本語セクション名だと自動生成のidになってしまい直感的なリンクが貼れません。header_attributes拡張を入れると、セクション名の後に {#section_name}と書くとそれがidになります。

・ --filter import.js : コードブロックの中で$importすることで外部ファイルを読み込むことができるようになります

他にも便利な拡張がたくさんあります。implicit_header_referencesとか。Pandocユーザーズガイドの日本語訳を読むと勉強になります。

Makefile


毎回この長いコマンドを打つのは面倒なので、aliasしてあげたり(-t フラグを使うと出力フォーマットを指定でき、-o を省略できます)、Makefileを作ることを思いつきます。

たとえば僕は下のようなMakefileを使っています。

https://gist.github.com/nekketsuuu/5f49279090b7d1301376
PANDOC = pandoc
IMPORT_JS = $(HOME)/.pandoc/pandoc_import_code_filter/import.js
MD = example
TOC =

# 入力はGitHub Markdown + タイトルブロック
# http://sky-y.github.io/site-pandoc-jp/users-guide/#title-block
FLAGS = -f markdown_github+pandoc_title_block

# standalone: 適切なヘッダ・フッタをつける(実は出力がpdfなら勝手にこのモードになる)
# http://sky-y.github.io/site-pandoc-jp/users-guide/#general-writer-options
FLAGS += -s

# 出力ファイルは1つにまとめる
FLAGS += --self-contained

# 日本語でLaTeXを使うための設定
# pandocだとpdfLaTeXで日本語がうまくいかないのでLuaLaTeXを使う
# Tex Live 2015で成功
# デフォルト設定だと余白が広いので調整する
FLAGS += -V documentclass=ltjarticle \
--latex-engine=lualatex \
-V geometry:a4paper \
-V geometry:margin=2.5cm \
-V geometry:nohead

# import.jsをフィルターに入れる
# http://efcl.info/2014/0301/res3692/
# https://github.com/azu/pandoc_import_code_filter
FLAGS += --filter $(IMPORT_JS)

# TOCフラグが立ってるなら目次も入れる
# usage: make TOC=1
ifdef TOC
	FLAGS += --toc
endif

$(MD).pdf: $(MD).md
	$(PANDOC) $(FLAGS) $< -o $@

.PHONY: clean
clean:
	rm -f $(MD).pdf

atom.io再び


markdown-preview-plusというパッケージとmathjax-wrapperというパッケージを入れて、markdown-previewをdisableし、markdown-preview-plusの設定で色々弄るといちいちpandocでコンパイルしなくてもそれなりの出来上がり見本がCtrl+Shift+Mで見られるようになります。便利。

pandocパーサーで数式表示させるためにはPandoc Options: Markdown Flavorにtex_math_dollarsを入れましょう。


まだ僕にはよくわかっていないこと


Markdownには標準で中央寄せ、右寄せがありません(表のセル内alignならあるのですが、<div align="right">に相当するものがありません。

HTMLやLaTeXを直接打つことで解決することもできるらしいのですが、あまりスマートでないのでスマートなやり方を探しています。それこそfilter作るとか。

このStackOverFlowが参考になりそう


テンプレートについてはたとえば http://pandoc.org/demo/example9/templates.html

さいごに


MarkdownからPDFを作れると、

・作ったはいいものの詳細に仕様をまとめるほどではないプログラムの簡単な説明を書いたり

・適当に書いた説明書を体裁よくして印刷できたりします。

綺麗なPDFを手早く作って楽しましょう。

追記.1. (2015/11/12)

「動作が遅い」という感想をもらいました。確かにMarkdown -> pdfはちょっと遅いです。これはpandocが重いというよりか、lualatexが重いのではないかと考えています。試しに同じ入力でMarkdown -> latexをしてみると超速いです。

対応策として、pandocでMarkdown -> htmlしてからブラウザでpdfに印刷する、という方法を@dmingnがしていましたが、これする位ならはじめからMarkdown -> pdfした方が速いのではないかと思う熱血です。

追記.2. (2015/11/12)

LaTeXの数式モードの中でボールドイタリック体を出したいという意見をもらったのでやってみました。LaTeXの数式モードでは太字\mathbfとイタリック\mathitがありますが、ボールドイタリックはありません。\mathbf{\mathit{x}}では片方の性質が打ち消されてしまいます。

LaTeXそのものでは、以下のサイトに書かれているように、\newcommandする方法や\usepackageする方法が知られています。


以下では下のように\newcommandしてやることでボールドイタリックを使えるようにします。上のページに記載されている他の方法も同じようにして使えます。

\newcommand{\mathbi}[1]{\mbox{\boldmath $#1$}}

これをpandocで使える形にするにはいくつか方法がありますが、一番手早いのはYAMLメタデータブロックを使う方法だと思います。

たとえばこのサンプルファイルを見て下さい。このMarkdownをpandocに変換させると、確かにボールドイタリックとして出力されます。

ただしいくつかエクステンションを増やさないと駄目です。YAMLメタデータブロックを使うためのyaml_metadata_block、LaTeXの\newcommandや\renewcommandを使えるようにするlatex_macrosが必要です。僕はしばらくlatex_macrosの存在を知らなくて、バックスラッシュが\textbackslashに変換されてしまってエラーが出ていました。

上のMakefileに追加すればそれで大丈夫なのですが、一応最終的なコマンドをコピペしておきます。

pandoc -f markdown_github+tex_math_dollars+yaml_metadata_block+latex_macros -s --self-contained -V documentclass=ltjarticle --latex-engine=lualatex -V geometry:a4paper -V geometry:margin=2.5cm -V geometry:nohead --filter /home/itak/.pandoc/pandoc_import_code_filter/import.js  example.yaml.md -o example.yaml.pdf

YAMLメタデータのheader-includesにはLaTeX以外にも色々書けて便利です。リファレンスこのStackExchangeが参考になります。

この方法は手軽なのですぐできますが、こういうヘッダーが増えてくると同じようなヘッダーを複数ファイルに何回も書くことになって面倒くさいです。そういう状況にはYAMLメタデータではなくて、LaTeXテンプレートファイルの方が適していると思います。

これはあらかじめ~/.pandocなどに置かれたテンプレートファイルを実行時にテンプレートとして指定することでヘッダーファイルとしてインクルードできるという機能です。詳しくはリファレンスをば

参考


Pandoc ユーザーズガイド 日本語版
http://sky-y.github.io/site-pandoc-jp/users-guide/


多様なフォーマットに対応!ドキュメント変換ツールPandocを知ろう : Qiita
http://qiita.com/sky_y/items/80bcd0f353ef5b8980ee

Pandoc: オプション「--data-dir=DIRECTORY」の利用(4)途中だが、進化! : いわにぃのブログ
http://blog.livedoor.jp/ti5942/archives/7332808.html

pandocでMarkdownを拡張しコードをインポート出来るfilterを書く
http://efcl.info/2014/0301/res3692/


atomのmarkdown-previewで日本語が豆腐になる(Ubuntu) : Qiita
http://qiita.com/Mokkeee/items/cca4ba3a6bf334fa7934

Ubuntu でapt を使用してNode.js をインストールする3 つの方法(Ubuntu 15.04, Ubuntu 14.04.2 LTS) : Qiita
http://qiita.com/TsutomuNakamura/items/7a8362efefde6bc3c68b

Adding headers and footers using Pandoc - TeX - LaTeX StachExchange
http://tex.stackexchange.com/questions/139139/adding-headers-and-footers-using-pandoc

CPU実験と東大理情のカリキュラム

$
0
0

15erの熱血です。この記事では東大理情のカリキュラムが(CPU実験から見ると)良くできていると思った話を軽く書きます。僕が個人的に続けてきた講義感想録の続きでもあります。

どちらかと言うとISの方はもう充分ご存知の内容だと思います。想定読者層は進振り前の前期教養1,2年生です。

最終更新: 2015/Dec/02




東大理情(IS)のカリキュラムがどういう風になっているかは、たとえば学科紹介パンフレットの図を見ると分かります。この図では各講義の連続性が分かりやすく表示されているのですが、正直僕はこの連続性がいかに具体的なものであるかを学部2年夏の進振り前にあまり分かっていませんでした。だからCPU実験をやりながら感じたカリキュラムの一貫性について書きます。

CPU実験では単にFPGA上にCPUを作るだけでなく、OCamlというプログラミング言語のsubsetであるところのmin-caml言語の自作アーキテクチャ向けコンパイラを作ったり、三角関数などの数値計算を要する関数を自前実装したり、自作アーキテクチャのシミュレータを作ったり、I/Oまわりやアセンブラなどを更に作ったりと、色々とすることがあります。大体4人くらいの班でこれらのジョブを各人に割り振って(コア係、コンパイラ係、シミュレータ係、FPu係)、自前アーキテクチャを作ることになります。

そんなことを今すぐ「やれ」と言われてもできないので、ISのカリキュラムでは段階的にこれらの技術を学べます。




2年後期には「ハードウェア構成法」という講義があります。先生が変わっていなければこれは小林先生の講義だと思います。なかなかディープな講義です。そして、3年生になってから「今受けたい」と言う人も多いほど、前提知識が少ない人には苦しい講義だとも思います。ISのハードウェア系の講義だと一番物理層・物性に近いことを習った講義でもありました。

また2年後期には「計算機システム」という、コンピュータの物理的な仕組みからアプリケーションレイヤーでの仕組みまで、コンピュータがどのように動いているのかを網羅的に扱う講義もあります。こちらも前提知識が少ない人には多少苦しい講義になりますが、逆に言うとここで叩きこまれておくと後が楽です。

この「ハードウェア構成法」と「計算機システム」は、そのまま3年前期の「ハードウェア実験」と「計算機構成法」という講義に内容が直結しています。

「ハードウェア実験」は実際にデジタル素子を使った電気回路実験から始まります。これは電気回路の特性を知るための前準備みたいなもので、本番はその後のFPGA実習にあります。FPGAとは自分でデジタル回路をプログラムできる電気回路のことで、HDL(ハードウェア記述言語)と呼ばれるプログラミング言語で仕様を決定し、そこからデジタル回路を合成してFPGAに書き込むことで回路を作り、その特性を調べるといった実験が可能になります。「ハードウェア実験」ではFPGAを使って、いくつかのデジタル回路を作ることになります。ここで作る回路はそのままCPU実験の基本となるような回路ばかりです。つまりこの講義はCPU実験に直結していると言えます。

「計算機構成法」では「計算機システム」では深堀されなかったCPUの仕組みについて詳細に語られます。ぶっちゃけるとカリキュラム的にはこの講義が無いとCPUを作るのは厳しいでしょう。というわけでこの講義もCPU実験に直結します。自習したい人はいわゆる「パタヘネ」「ヘネパタ」という本があるにはあります。この講義を担当なさっているhrk先生がもうすぐご退官予定のため、もしかすると後数年でこの講義の性質が変わるのかもしれません。でもそんなこと言うとCPU実験そのものの存続さえ危ぶまれてしまうので特に考えないこととします。


2年後期には他にも「アルゴリズムとデータ構造」という名が体を表す講義があります。アルゴリズムとはコンピュータで計算をするための一種の決まりきったやり方のことです。そしてデータ構造とは、計算するためのアルゴリズムを簡単にするための技法と言ってもさほど間違いではないでしょう。この講義で習うこれらの概念はソフトウェア的な意味での情報科学全ての基礎になっていると言っても過言ではありません。そういう意味で、この講義は3年後期の「連続系アルゴリズム」に弱く接続しています。

3年後期の「連続系アルゴリズム」ではいわゆる「数値計算」と呼ばれる分野を網羅的に扱います。浮動小数点数計算の誤差についての議論から始まって、数値微分・数値積分や補完多項式などの話題があります。僕ははじめこの講義はCPU実験に関係ないと思っていたのですが、関係あります。CPU実験でレイトレするために数値計算が必要なのです。FPU係の人やコンパイラ係の人(ライブラリを書く人)は特に関係するでしょう。


コンパイラ係がコンパイラを書くための知識は、2年後期「形式言語理論」、3年前期「言語処理系論」および「関数・論理型プログラミング実験」の知識が使われます。抽象的な意味での(形式的、数学的な意味での)「言語」を扱う「形式言語理論」の知識の一部が「言語処理系論」で必要になります。「言語処理系論」では人間が書いたプログラムのソースコードをコンパイラが扱いやすい形にする字句解析・構文解析の知識から始まり、それらを元に機械語を生成するための様々な手法について学びます。実際に「関数・論理型プログラミング実験」の方ではインタプリタを作ったりもします。これらの知識と、CPU実験(コンパイラ実験)で習う手法を元にコンパイラを書くことになります。

「言語処理系論」の話をしたのでついでに話しておくと、コンパイラの最適化技術は「言語処理系論」で習うものでは少し足りないので、それらをある意味補ってくれているのが3年前期「離散数学」「離散数学演習」であったり3年後期の「計算量理論」「計算量演習」であったりすると考えることもできます。「離散数学」で習うグラフ理論の基礎や線形計画問題の扱い方は最適化のための手法として有効です。コンパイラで扱う問題にはNP困難な問題が結構あるので、「計算量理論」で習う近似アルゴリズムの話も多少関係してくる所でしょう。


ここまでシミュレータについて触れてきませんでしたが、じゃあシミュレータ係は楽なの?と言われると、一概にはそうも言えません。CPUのシミュレータを書くためにはそもそもそのアーキテクチャの仕様についての理解が必要なので、ハードウェアの知識が必要です。またCPU実験で使うレイトレーシングのプログラムは普通に動かしてもそれなりに時間がかかるものなので、シミュレータの高速化には開発速度を高めるという充分な意味があります。高速化のためには2年後期「システムプログラミング実験」で習うような手法や、そもそも一般の実験で必要とされるようなプログラミング技術を持っているべきでしょう。また、Out of Orderという実装をコア係がする場合は、CPUの1クロックごとのシミュレーションをするCycle Accurateなシミュレータがあると便利なのですが、この実装はコアを1つ実装するのと同じくらい大変です。




ISの講義はここで紹介した以外にも存在します。それらの講義はCPU実験と直接的な関わりは無いかもしれません。でもたとえば14erの方々の中には自作アーキテクチャの上にOSを実装した班があったりと、余興の方にそういった知識は用いることができます。自前計算機を作るんですから何でもできますね。

というわけで、以上ISのカリキュラムを追いながら、どういった知識がCPU実験で必要で、活用されているのかを書きました。ISに来ようか迷っている方や、ISじゃないけどCPU実験をしてみたい方の参考になれば幸いです。

.ocamlinit

$
0
0
CPU実験 Advent Calendar 2015の記事です。今回は短い。

最終更新: 2015/Dec/06

コンパイラのデバッグに役立つかもしれないOCaml情報なのですが.ocamlinitが便利です。

カレントディレクトリもしくはホームディレクトリに.ocamlinitがある場合、ocamlコマンドでOCamlトップレベルが立ち上がる際に.ocamlinitの中身が読み込まれます。

なので、.ocamlinitの中で#loadや#use、#mod_use、#load_recなどをするようにしておくと、新しい最適化用関数をデバッグするときにとても便利です。一時的によく使うデバッグ用関数とかを.ocamlinitでletしておくのも便利です。

より詳しい話は http://caml.inria.fr/pub/docs/manual-ocaml/toplevel.htmlなんかを参考にどうぞ。日本語マニュアルはちょっと古いことと、英語版マニュアルを見るときも最新ページでないページを見ている可能性があるので更新日時に注意してください。

-initオプションで.ocamlinit以外のファイルをロードすることも可能です。また細かいことですが僕がひっかかったので書いておくと、トップレベルを立ち上げる意味でocamlコマンドを使うのではなく、スクリプトモード(ocamlコマンドの引数に.mlファイルを与えてトップレベルで実行させて結果を出力させるモード)でocamlコマンドを使うとどうも.ocamlinitや-initが効いていないっぽい(OCaml 4.02.3時点)ので注意です(仕様なのかバグなのか不明)。

デバッグするときに-initオプションだとかocamlmktopだとか試したのですが、僕的には.ocamlinitが一番使いやすかったので紹介しました。ではー。

CPU実験: ライブラリのバグを晒す

$
0
0

僕はコンパイラ係をしています。コンパイラ係関係の仕事の1つとして「ライブラリを書く」というものがあります。具体的に言うと、I/O系の命令や三角関数などの関数を、アセンブリやmin-caml言語などで書くことになります。

この記事では、僕がコンパイラを書くにあたって遭遇したライブラリのバグについて書きつつ、1stコンパイラのデバッグにかけた期間のラスト1週間がどんな感じだったのか書きます。多少記憶が前後しているかもしれませんがそこらへんはご愛嬌ということで。

最終更新: 2015/Dec/08




☆ライブラリがすべからくバグっていた

僕はライブラリ関数をアセンブリで書いたのですが、眠たい眠たい言いながら睡眠前にちょっとずつ書いていたのが悪かったのでした。至る所buggyなライブラリは「コンパイラはちゃんとraytracerをコンパイルできているし、出力されたアセンブリも合法に見えるし、シミュレータ上でも正常に終了して画像を出力するのに、何かがおかしい」という状況を生み出しました。

市民、睡眠は義務です。眠たいときは寝ましょう。

もうどのライブラリがどのようにバグっていたのかはいちいち覚えていませんが、それぞれのライブラリ関数がどのような出力を吐くのか調べるために適当な入力のもとでグラフを書いた画像が残っていたので、これを貼ってお茶を濁します。

はじめにバグっていることが発覚したライブラリはcosでした(11月9日)。

イメージ 1


どうみてもcosのグラフですね。間違いない。

多少手を加えると下のグラフのようになりました。タイトルがsinとなっていますがcosです。

イメージ 2


このとき調子に載って同時にatanをプロットしたら痛い目に遭いました。

イメージ 3


まあこれはすぐに直りました。




☆画像だなあ

11月10日にmandelbrotが動いたので、そのままの勢いでraytracerを動かしました。

イメージ 8


綺麗なtron.ppmですね。




☆三角関数だけじゃなかった

floorもバグっていました(11月10日)。floorは何も考えずに実装しているとバグを生むので注意してください。

イメージ 4


床関数(穴だらけ)。

このあたりのコンパイラデバッグ期間はつらかったです。ライブラリに限らず無限にバグが生まれていて悲しかった。しかもその9割は僕の不注意による非本質的な、typoなどのバグだったのでしょんぼり。

コアが既に完成していて、実機でも先ほどのレイトレース画像と同じ世紀末的画像が出力されることが再現されていたので、焦りがありました。

11月13日、floor, i2f, f2iなどのライブラリ関数がきちんと動くようになりました。




☆三角関数ふたたび

このあたりからFPU係の人がデバッグを手伝ってくれるようになりました(11月14日)。cos/sinの誤差を全数調査したところ、さっきのグラフではうまくいっているように見えるものの、実は無茶苦茶誤差っていることが分かりました。

イメージ 5


なんか角が生えていますね。誤差だけ表示してみましょう。

イメージ 6


グラフだと分かりにくいのですが、pi/4周期で誤差が大きくなっています。cosの実装上どこが誤差を生んでいるかはすぐに分かったので後はひたすら自分の書いたバグアセンブリを読みました。




☆うごいた

ライブラリを直して、CPU実験のレギュレーションを満たしていることを全て確認してもまだ動きませんでした。emit.mlを何回も読み直しました。バグを見つけてコミットしました。

そうしたら動きました(11月16日)。

イメージ 7


最後に見つけたコンパイラのバグは、1箇所だけ浮動小数点数レジスタ移動命令fmovのsourceレジスタとdestinationレジスタの向きが逆になっているというものでした。

同じ日に実機でも完動しdiffは0で狭義完動となりました。

おしまい。




教訓: 眠いときは寝る。ISAを100回読む。

CPU実験の浮動小数点数演算について

$
0
0

読者層として3年の夏休み頃のIS 16erを想定して書かれています。

この記事では、CPU実験で動かすことになるraytracer/min-rt.mlの中で必要な浮動小数点数周りの演算についての軽い解説を行います。解説しなくてもその内分かるかとは思いますが、一応記録のためです。

以下の記事では2015年度のCPU実験のルールを元にした記述がたくさんあります。ルールが変わっているかもしれないので注意してください。

最終更新日: 2015年12月11日




浮動小数点数演算について見る前に、IEEE 754 単精度浮動小数点数について復習します。

IEEE 754 単精度浮動小数点数は、32bitで実数を近似的に表現するための規格で、符号部1bit, 指数部8bit, 仮数部23bitからなります。

指数部は127を0とするオフセット付きの表現になっており、また、仮数部はけち表現(1.xxx...のxxx...しか保存しない表現)をすることによって1bit節約されています。

単精度で表現できる通常の実数(正規化数)の他に、±inf, NaN, 非正規化数があります。また0には2種類(+0と-0)あります。

ここらへんについて怪しい方は是非今の内に"Wikipedia - IEEE 754"生の規格(東大内だとpdfで落とせます)を読んでおいてください。以下では上の知識は既知とします。




「浮動小数点数演算」と言いましたがこれは曖昧で、実際に実装するときには「ハードウェア実装する浮動小数点数演算」「コンパイラのライブラリ関数としてソフトウェア実装する浮動小数点数演算」「min-caml言語として実装する浮動小数点数演算」の3種類があります。これらの演算をFPU係やコンパイラ係が実装することになります。

どこまでの演算をどの分類にするかは、班のISA(命令セットアーキテクチャ)やコンパイラ・ライブラリの仕様によります。どのような設計にするとより高速にレイトレーシングが実行できるか、などを目標にこれらを定めることになります。

この記事の目標は、必要な演算について適当な解説をして、1st アーキテクチャの設計前になるべくクリアなイメージを持ってもらうことにあります。

では、どのような演算が必要になるのか列挙していきます。




加算命令faddと乗算命令fmulは、全ての班が1st アーキテクチャでハードウェア実装することになるでしょう。おそらくハードウェア実験でfaddの実装はしたことになっているでしょう。まだしていない人はFPU係として実装することになります。faddの実装にはハードウェア構成法の方の小林先生の著書である『ディジタル・ハードウェア設計の基礎と実践』が多いに参考になるでしょう。地下に数冊あるので是非読んでみて下さい。faddのC実装がちゃんとできているかどうかは綿密にチェックしましょう。14erのb-inaryさんが作られたverify.cが参考になるかもしれません(14er wiki/ハードウェア実験にあります)。ただし安全のためにはもっと標本数を増やすべきです。faddが実装できればfmulの実装は容易にできるでしょう。2004年に書かれた神FPU資料のfmul実装は古いです。16erの皆さんが扱う基盤がリニューアルされたものなら、他の部分の記述も古いものになってしまっているかもしれないので注意が必要です。

faddのC実装はある程度真面目に作っておく必要があります。というのも、CPU実験の狭義完動条件が「シミュレータの出力と実機の出力のdiffが0」なので、シミュレータに組み込まれたfaddの実装が雑だとVHDL実装とのdiffが出てしまいます。

NaNや非正規化数などにどこまで対応するかどうかは、CPU実験のレギュレーションやraytracer/min-rt.mlの中で行われる演算と相談しながら行うことになります。レイトレーシングに満足せずもっと豊富なことをしたいのであれば実装しても良いでしょう。はじめは面倒くさいし実装していなくていいんじゃないかあと思います。実際にレイトレでNaNや非正規化数が現れるのかどうかは、コンパイラ、アセンブラ、シミュレータ完成後にシミュレータで確認することはできます。本当にCPU実験のレギュレーションかちかちで作るのであれば、丸めの計算をroundingをnearest evenなどといったものでなくもっとサボることもできるらしいのですが、僕は実際に実装していないので分かりません。速さを求めるのであれば神FPU資料なども参考に研究することになります。ただしfaddの誤差をサボると三角関数などのソフトウェア実装した関数で誤差が大きくなって困ることになるかもしれないので加減が必要です。

VHDL実装をパイプライン方式で行ったとして、66MHzでfaddが3 clock、fmulが2 clockで終わればとりあえずは大丈夫です。ただしその内クロックを上げることになるので、それに対応することになるでしょう。また、うまく丸め計算をサボるともう少し高速化することもできるようです。13er grafiさんの記事には2パス加算器の話が載っています(ヘネパタにアイディアが載っているらしい。こちらも参考になる)。




加算命令と乗算命令があるなら減算命令fsubと除算命令fdivも欲しくなる所ですが、もしISAをなるべく小さくしたいのであればこれらはとりあえず必要ありません。代わりに正負反転命令fnegと逆数命令finvが必要です。

fnegの実装は簡単です。finvの実装はNewton-Raphson法を用いるか、線形近似の値を保存しておくテーブルを用意しておいて、テーブル引きを使って値を求める方法の2種類に分かれます(他の方法もあるのかもしれませんが知りません)。

Newton-Raphson法で実装する場合"Wikipedia:en - Division algorithm"が参考になります。テーブル引きで実装する場合は神FPU資料が参考になるでしょう。finvには大体2 clockかかります。ただし分散RAMを使って1 clockで終わらせる実装も発見されていて、こちらはハードウェア資源との相談になります。

テーブル引きの誤差を減らす方法はよく知りません。FPU係の誰かが記事にしてくれるかも?




コンパイラとしてmin-camlをそのまま使うなら、浮動小数点関係の中間表現としてあらかじめ存在するものはFMov, FNeg, FAdd, FSub, FMul, FDiv, LdF, StF, IfFEq, IfFLEの10個です。楽をするなら1stではこの10個さえできればOKです。FSubはfaddとfnegで表現できます。fdivは実はx/yをx * (1/y)と最適化するのは正しくない(たとえばx=y=0)のですが、CPU実験のレギュレーション的にはOKなので大丈夫です。

僕の班の場合、1stが完動した後にシミュレータを使ってraytracer/min-rt.mlでの色んな命令の出現頻度を測った所fsubが結構多かったので2ndではfsubを命令セットに加えることにしました。fdivは今の所入れていません。ここらへんは各班で色々画策して決めることになるかと思います。

LdF, StFはGPR/FPR(整数レジスタと浮動小数点数レジスタ)を分けている班は用意する必要のある命令です。分けていない班は中間表現ごと消して大丈夫(なはず)。面白命令入れたい班の人はx87の定数ロード命令などいかがでしょうか(速くなるかどうかは知りません)。役に立たなさそうな面白命令として、上位/下位n bitだけが即値オペランドで指定できる浮動小数点数ロード命令とか(無いところは0埋め)。

fmovはGPR/FPR分けてる班なら有ると思うのでOKかと思います。ちなみに凄い細かい話をすると"fmov x to y"を"y = fadd 0.0 x"で実装するのは間違いです。xが-0.0のときを考えて下さい。

浮動小数点数によるブランチ命令は最低限equalとless than (もしくはless than or equal to)があれば大丈夫です。いや待てよ、本当に最小の命令セットにするならequalも不要ですね(ニッコリ)。コンパイラに優しいのはeq, neq, lt, leq全部あるパターンかな?




平方根命令fsqrtの計算はfinvと同じくNewton-Raphson法かテーブル引きを使うでしょう。ここらへんからハードウェア実装するかソフトウェア実装するかが分かれてくると思います。

面白命令として、高速に平方根の逆数を求めるfast InvSqrtというのが知られています。特にfsqrtをソフトウェア実装している場合「平方根の逆数を求めてから乗除算に使う」という方法で高速化の可能性があります。計算には有名なマジックナンバーがあるので参考になるかも。ただし誤差がちゃんとレギュレーションを満たすように注意してください。1 iterationでは満たさないと思います。




三角関数のsin/cosは入力xの値によって誤差が大きくなるので、適当に誤差の小さい区間に帰着させてあとはマクローリン展開(をちょっと弄ったもの)によって計算するという方法が神FPU資料に載っています。また、15erには自力で色々試してみている人もいたようです。

sin/cosは1stではソフトウェア実装の人が多かった印象です。レイトレーシングではそんなに呼ばれない[要出典]ということもありハードウェア実装のメリットがそんなに無い班も多いです。自分たちの班のISAと相談することになります。

sin/cosが出来上がったら誤差をulpでちゃんと表示してあげることをオススメします(参考)。もしかすると、たとえばsinでx=nπの周辺において誤差が大きくなっているかもしれませんが、実はそれはCPU実験のレギュレーション内です。しっかりレギュレーションを確認すると、定数cというとても1に近い数が設定されていることに気づきます。このcの意味に気づけば、cを含んだ意味でcos/sinがレギュレーションを満たしていることを全数探索できます。

あ、そうそう、連続系アルゴリズムの講義で習うかとは思いますが、級数の計算はHorner法でやると良いです。

tanもレイトレの中で使われていますが、raytracer/min-rt.mlの中身でtan = sin/cosと定義されてしまっています。ただしCPU実験のレギュレーションにより、勝手に別のものに置き換えても良いことになっています。

atanもsin/cos同様にマクローリン展開で計算できます。僕はほとんど神FPU資料に従ってしまったのであまり詳しいことは分かりません……。




浮動小数点数と整数の変換命令としてint_of_float(ftoi, f2i)とfloat_of_int(itof, i2f)があります。神FPU資料には8388608を使った実装法が載っていますが、他の実装として、GPR/FPRが分かれていないなら指数部を読んで適当にシフトしてあげるというのもあります。ちなみにCPU実験のレギュレーションに沿ったint_of_floatとOCamlのPervasives.int_of_floatは微妙に違うので注意してください。

int_of_floatには、爆速で終わる実装が発見されています(ただしISA的な注意が必要)。詳しくはこちらを: (1) / (2) / (3) / (4)

似た命令にffloorがあります。ffloorは神FPU資料を見て何も考えずに作ると間違えるので注意してください。「床関数をミスるとレイトレの床がバグる」という超有用な金言があるので、床がバグったらいの一番にffloorを疑って下さい。

int_of_float, float_of_int, ffloorはソフトウェア実装するかハードウェア実装するかの選択で悩むことになるかもしれません。呼び出し回数や1回の呼び出しでの消費クロック数などを考えながら選択することになるでしょう。




raytracer/min-rt.ml特有の命令として、fless, fispos, fisneg, fiszero, fhalf, fsqr, fnegがあります。これらはminiMLRuntime.mlに定義されています。

これらはCPU実験のレギュレーションによりある程度弄くることができます。min-caml言語として実装してインライン展開しても良いですし、たとえばfhalfはGPR/FPRの区別が無いアーキテクチャの場合はfmulしなくても単に指数部を弄るだけで実装できます。ここらへんは小細工です。




FPRを使うライブラリ命令は実はもう1つあって、それがread_floatです。これはRS232Cから送られてきたASCIIの小数を32bit floatに変換してレジスタに格納する命令です。別にread_intも作ると思うのでそれをそのまま拡張すると作ることができます。小数点が無かったりすることもあるので注意してください。ASCIIの1文字は8bitなので、8bit単位で読み書きする命令があると便利です。レギュレーションが変わっていなければ審判サーバーとの通信過程で1byteだけのデータを送信する箇所があるので、I/Oがいつも32bit単位だと思っていると失敗すると思います。

また、審判サーバーが変わっていないのなら、更に32bitのバイナリを読んでその内容をそのままFPRに格納する命令が必要なはずです(そしてこれはすぐ実装できます)。




以下は瑣末な点です。

誤差を測る: 浮動小数点数まわりの演算を実装するときは、誤差がちゃんとレギュレーションを満たすことを確認した方が良いでしょう。そこまで細かくなくても、グラフの概形が合っていることを見るだけでも何かバグってないか見ることができます。1引数の関数は全数検査が現実的な時間でできるのでやってみるといいかもしれません。15erはシミュレータ経由でデータを出させてグラフプロットする人が多かったようですが、14erには実機で直接検査していた方もいたようです。

また、x87との誤差を見るときは注意が必要です。C言語でやるなら、全ての表現がfloatになっていないと、途中でdoubleの計算になってからfloatにキャストされるのは結果が違うかもしれません。math.hの関数を使うときも、たとえばsinの代わりにsinfを使うべきでしょう。また、もう無いと思いますがx64ではなくてx86でやるときは、うまくコンパイルしないと浮動小数点数演算の際に一度80bitに拡張されてから計算されてしまうので誤差がでます(参考1参考2)。また、OCamlは倍精度です。ついでに言うとOCamlの整数型は1bit無いです(GCに使われている。ビット幅をフルに使うにはnativeintを用いる)。

シミュレータで数える: どの命令が要りそうか判断するために、どの命令が何回実行されたかカウントするのは便利でした。関数呼び出しの回数を測るのはシミュレータの組み方によっては難しいかもしれませんが、うちはたまたま標準だとnopが1回も実行されないので、回数を数えたいところにnopを手で挿入してやりました。

ISAについて考える: どこまでハードウェア実装してどこからソフトウェア実装するかは結構悩みどころかもしれません。でもたとえば"Computer Organization and Design"には「ぶっちゃけISAはそこまで関係ない」と書かれていたりもします。ISAに神経質になりすぎるよりコアの設計やコンパイラの最適化を考えた方がよっぽど速度に寄与するのかもしれません。また、数年前までは神FPU資料に結構頼っていたと思われるFPU実装も、そこまで単純なものには見えなくなってきました。

いくつかの実装については、14er wiki/CPU実験のSUPERHACKERのCPU実験/Yebiや神FPU資料が参考になります。浮動小数点数演算周りの話は、班の全係が関係して色々考えられる面白い部分だと個人的に思っているので、是非色々試して面白実装してみてください(面白いのができたら、是非教えてください!)。

WiiリモコンをScratch 2.0で使う

$
0
0
この記事では、Wiiリモコン(Wiimote)をBluetoothでパソコンに接続し、cwiidというソフトウェアを介してキーボードやマウスと対応づけることでScratchで使うことを解説します。

以下は、Ubuntu 14.04 LTSで動作確認しました。確認していませんが他のLinux環境でも同様に可能だと思います。Windows環境でも、ここで用いるソフトと同様のことができるソフトを使えば可能です(最後にリンクします)。Mac OS環境ではよく知りません。

最終更新日: 2016/01/21




まず、WiiリモコンをパソコンにBluetooth接続できるか確認します。

パソコンにBluetoothがついていない場合、Bluetooth USBアダプタを使用すると良いです。僕のパソコンには標準でついていたので使用していません。

イメージ 1


Ubuntu側でBluetoothの待ち受けをした後、Wiiリモコンの.椒織鵑鉢▲椒織鵑鯑瓜,靴垢襪、電池の横にある赤いSYNCボタンを押すことでBluetoothの登録をします。

後は待っていれば自動的に成功します。とはいえ繋がるだけなのでこのままでは何もできません。電池がもったいないので一旦接続をオフにします。後で面倒くさいので、Ubuntu側で認識できることが分かれば[Bluetoothの設定]からデバイスを削除しておいても良いかもしれません。




今回はBluetooth接続したWiiリモコンをジョイスティックとして使うために、CWiiDというソフトを使います。


libcwiid1が共通ライブラリ、lswmがWiiリモコンのアドレスを出力するソフト、wmguiがGUIでWiiリモコンの接続を確認するソフト、wminputが今回メインで使う、Wiiリモコンの入力をマウスやキーボード入力にマップするソフトです。

まずはインストールします。とりあえず使うだけならaptのパッケージで大丈夫です。pullされていない拡張機能を試したい方はgithubからcloneしてコンパイルする必要があります(後述)。

$ sudo apt-get install libcwiid1 lswm wmgui wminput

更にマウスを動かす機能を使うために、カーネルにuinputモジュールをロードしておきます。

$ sudo modprobe uinput

この操作はUbuntuを再起動するたびに必要になるはずです。かわりに/etc/modulesに直接書き込んでおく方法もあります。

$ gksudo gedit /etc/modules
$ cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lp
uinput
$

さてそれでは、動くかどうかwmguiで確かめてみます。

$ wmgui

起動したら、メニューバーから[File]->[Connect]を押したあと、Wiiリモコンを待ち受け状態にして(+△泙燭SYNC)、[OK]を押すとWiiリモコンが認識されます。

イメージ 2


この画面の上で、きちんとWiiリモコンの入力が認識されているか確認できます。標準ではボタン入力だけチェックされていますが、メニューバーの[Settings]で選択することによって、加速度センサー、赤外線、ヌンチャク、クラシックコントローラの入力を受け取ることができるようになります。また、[Controls]から選択することによってWiiリモコンのLEDを光らせたり、Wiiリモコンをバイブさせたりすることができます。




動作確認ができたら、今度はwminputを使ってみます。wminputはWiiリモコンの入力をマウスの移動やクリック、キーボード入力などに変換できるソフトです。

$ lswm
Put Wiimotes in discoverable mode now (press 1+2)...
00:1F:32:95:EF:B0                   # このアドレスはWiiリモコンによって違うはずです
$ sudo wminput 00:1F:32:95:EF:B0

まずlswmを使ってWiiリモコン固有のアドレスを取得しておきます。これは必須ではないですが、こうしておくとwminputを使うときに接続開始を速くできます。

そしてwminputにこのアドレスを渡して動かします。デフォルトの設定では、Wiiリモコンを傾けるとマウスが動き、Aボタンで左クリック、Bボタンで右クリック、A+Bで中クリック、十字キーが矢印キーなどに対応させています。

このキーマップはコンフィグファイルを使って変更することができます。wminputの-cオプションを使うとできます。コンフィグファイルのサンプルは/usr/local/lib/cwiid/wminput/などにあります。

$ sudo wminput -c ir_ptr

みたいにすると使えます。詳しくはwminputのREADMEを読んで下さい。

赤外線センサも上みたいにコンフィグを変更することで使用できます。Wiiに付属のセンサーバーを起動してもいいですが、CWiiDのREADMEによると、赤外線LED、ろうそく、白熱電球などで代用できるようです。センサーバーからはたくさん赤外線が出ていますが、基本的には左右2つあればよいらしく、もっと言うと1つでも大丈夫だそうです。(まだ試していません)

またCWiiDにはプラグインの機能があります。マウス移動の機能はデフォルトで入っているプラグインを使って実装されています。プラグインはC/Pythonで書くことができるのでユーザーがいくつか自作プラグインを開発してpull reqを送っています。完成しているがmergeされていないものも多いですが、GitHubのレポジトリを確認しつつ自分でmergeしてコンパイルしてやると使うことができます。Wiiリモコンの傾きを捻りだと思ってキーボード入力にするScrewdriverとか便利じゃないですかね? 自分でプラグインを書くこともできるので自由度高そうです。

aptで配布されているパッケージはちょっと古くて、ソースコードからコンパイルするとwmguiでモーションプラスの値を取れるようになっていたりします。

ソースコードからコンパイルすることについては、こっちの記事を参考にしてください。

これ以上の詳細はCWiiDのコミュニティページや、wminputのREADMEを参照してください。




wminputのデフォルト設定を使ってWiiリモコンを接続したとして、Wiiリモコンで遊べるサンプルゲームを作ってみました。


(順次追加予定)




※ Windows使いの方向けの補足 ※

CWiiDはLinux用です。Windowsでするならもっと簡単に、一般のBluetoothジョイスティックを入力として扱うソフトウェアがあるのでそれが使えます。

この記事が詳しく解説されています。ソフトウェアとしてGlovePIEやWeyを紹介されていて、同様の方法でWiiリモコンだけでなく「太鼓の達人 for Wii」のタタコンなどが使用できることが示されています。「Wiimote software」などで調べると色々出てきますね。

(2016年1月20日16時現在、GlovePIEの公式ホームページはハックされてしまっているように見えます。復旧まで下手にアクセスしない方が良さそうです)

また、Scratch 1.4のときみたいにプラグインとしてWiiリモコンを使いたいという欲求もあるでしょう。たとえばWiiリモコンの加速度センサーの値をそのままScratchで使いたくなるときもあります。

Scratch 2.0では拡張機能をScratchXとして実装しようとしている(?)ので、ScratchXを使用するならこれを実現することができます。たとえばiiConnect2ScratchというのがBluetooth接続方法から、オリジナルソフトウェアの使い方、Scratchでのサンプルプロジェクトまでの流れが全部分かりやすく説明されていて良いと思いました。特にこのユーザーガイドは分かりやすかったです。iiConnect2ScratchではWiiリモコンだけでなくWiiFitボードも使えるようです。面白そう。




参考


ScratchXについて、開発者向けにはここが詳しいです
ScratchX - GitHub

CWiiDをUbuntu 14.04にインストールする

$
0
0
CWiiDをUbuntu 14.04 LTSでコンパイルして、wmgui, lswm, wminputを使えるようにする。

Scratchで使いたかったという話の流れですがこの記事にScratchは出てきません。あと、単に使うだけならapt-get installできます。

最終更新日: 2016/01/21




1. git clone

オリジナルのレポジトリはabstrakraft/cwiidなのだが、これの開発は2010年から止まっている。開発者のabstrakraftは「もっと良いAPIとしてWiiリモコン用のカーネルドライバができたのでcwiidを開発する必要が無くなった」と言っている

そこでこのissueを参考にしつつ、たとえばmzimmerman/cwiidというforkをgit cloneすると良いと思う。オリジナルに寄せられたpull-reqをいくつか取り入れていたりするブランチなのでわざわざ自分でmergeしなくて済む。

以下mzimmerman/cwiidかオリジナルをgit cloneしたとして話す。




2. 事前に必要なものをインストール

目ぼしいところだとpython2.xやlibbluetooth-dev(bluez-libs)が必要です。僕の環境ではpython2.7で動作確認しました。

$ sudo apt-get install bison flex libgtk2.0-dev autotools-dev automake libbluetooth-dev

フランス語のこのサイトによると、以下のものが必要らしい(環境はLinux Mint 12)が、本当かなあ。pythonのバージョンを見る限り情報が古そうな気もする。

$ sudo apt-get install bison flex libbluetooth-dev libgtk2.0-dev python-dev libtool automake1.10 autoconf quilt patchutils python-all-dev cdbs lesstif2 poppler-data
$ sudo apt-get install autogen automake gcc bluetooth libbluetooth3-dev libgtk2.0-dev pkg-config python2.6-dev flex bison git-core libbluetooth-dev python-pygame python-tk

あと、wminputを動かすためにカーネルにuinputモジュールを入れておく必要がある。これについて詳しいことは、wminputのREADMEを参照。

$ sudo modprobe uinput  # 再起動のたびに実行




3. makeしてインストール

コンフィグしてmakeする。

オリジナルのレポジトリからgit cloneしたなら、Makefileにバグがあるので修正する必要がある。wmdemo/Makefile.inの11行目を以下のように追記修正。

LDLIBS += -lcwiid -lbluetooth

そしてmake

$ cd cwiid
$ aclocal
$ autoconf
$ ./configure --with-cwiid-config-dir=/etc/cwiid/
$ make
$ sudo make install

configureが「wmdemo.oに未定義のシンボルstr2baがあんねん」みたいなエラーで止まった場合は上の修正を忘れている。wmdemo/Makefile.inを修正し、make cleanした後に上の動作をもう一度すると良い。




4. 確認

wmgui, lswm, wminputが動くか確認してみる。またはwmdemoを動かしてみても良い。

$ which wmgui
/usr/local/bin/wmgui
$ wmgui

僕の環境+オリジナルのcwiidでは、オリジナルのWiiリモコン、Wiiリモコン+ヌンチャク、Wiiリモコン+モーションプラスがちゃんと認識できた。クラシックコントローラは持っていないので分からない。また、Wiiリモコン+モーションプラス+ヌンチャクだと上手く認識できなかった。また、wmgui起動中にヌンチャクとモーションプラスを切り替えてもプラグアンドプレイ的な認識をしてくれなかった。

mzimmerman/cwiidでも同じような認識だった。ただこっちにはさらにguitarというのが増えていた。"Guitar Hero"や"Rock Band"というゲームで使用されているコレのことだろうか。持っていないので確認できなかった。

lswmとwminputも普通に動いた。mzimmerman/cwiidならsudoは要らないようだ。

$ lswm
Put Wiimotes in discoverable mode now (press 1+2)...
00:1F:32:95:EF:B0                   # このアドレスはWiiリモコンによって違うはず
$ wminput                           # オリジナルならsudo wminputじゃないと駄目な気がする

もし"ImportError: No module named cwiid"というpythonのエラーっぽいもので止まったら、以下のことをすると良いだろう。僕はこれで動いた。

a. PYTHONPATHにpython2.X/site-packagesを追加する。

$ export $PYTHONPATH="/usr/local/lib/python2.7/site-packages"

元からPYTHONPATHに何か入っている方は上書きして消さないように注意。このスクリプトは.bashrcなどに書いておくと便利。ちゃんとパスが通ったかどうかは、たとえばsys.pathを見ると確認できる。

$ python2.7
>>> import sys
>>> sys.path

それでも止まるときは、他のモジュールが干渉しているかもしれない。僕はstraceして変なところから呼んでないか調べた。

$ sudo strace wminput 2> log
$ emacs log

b. sudo wminputがうまくいかないとき、これはsudoだとPYTHONPATHが使われないことに起因している。sudoersのenv_keepにPYTHONPATHを追加すると動く。このStackOverflowや、このブログを参考にした。

sudoersは不用意に弄ると死ぬので気をつける。/etc/sudoers.d/やvisudoを使うと安全?

c. ディストリビューションによっては、/usr/local/libを見に行かないこともあるらしい(Ubuntu 14.04だと大丈夫だった)。cwiidのREADMEに解決策が出ているので参考にすると良いかもしれない。また、./configureに-libdirを指定しないといけないディストリビューションもあるらしい。こちらを参照




5. キーコンフィグやプラグイン

wminputは-cオプションを使うとキーコンフィグファイルを変更できる。/etc/cwiid/wminput/や/usr/local/etc/cwiid/wminput/にサンプルのコンフィグファイルがいくつかあるので、たとえば

$ ls /usr/local/etc/cwiid/wminput/  # オリジナル版の場合
acc_led  buttons  gamepad  neverball        nunchuk_stick2btn
acc_ptr  default  ir_ptr   nunchuk_acc_ptr
$ sudo wminput -c ir_ptr

とするとir_ptrを使用できる。コンフィグファイルの文法についてはwminputのREADME参照。

自分でプラグインを書くこともできる。他のプラグインを参考にしながらCで書いてmakeし直すとできるはず。




6. その他

やってるとCWiiDのインストール/アンインストールを繰り返すことがある。そのときは

$ cd cwiid
$ sudo make uninstall && sudo make uninstall_config
$ sudo make clean

すると綺麗に諸々削除してくれる。make cleanまで必要なのかどうか知らないが、不安なのでとりあえずしている。make uninstallについてはcwiidのREADMEに書いてあった。

ちゃんとmake uninstallできていることは

$ sudo updatedb
$ locate cwiid

とかすると分かる。

UT-S1-1stの僕が受けた冬学期科目一覧

$
0
0
どうも熱血です。

半年前に書いた1学期科目の感想に続いて、2学期科目の感想も書いておきます。

前回と同じく、基礎科目についての感想を書いたとしてもどうせ基礎科目は殆ど元から先生が決まっているので感想は書きません。数学IについてはAかBか選べますが、これは夏学期に選択したものをそのまま選ぶことになるので、前回の記事に書いた数学IAの感想をご覧ください。電磁気についてもAかBか選べますが、高校で物理を選択したかしないかで選べるので書きません。英語二列Rについては少し書きます。

尚、僕が今学期受けた基礎科目は、英語一列◆英語二列R、フランス語一列◆▲侫薀鵐晃貽麥鶚◆基礎物理学実験、身体運動・健康科学実習、数学毅銑◆⊃学境◆⊃学毅善藹◆⊃学怯藹◆電磁気学A◆構造化学◆△任后

どうでもいいですけど、たとえば「電磁気学A◆廚箸△蠅泙垢、「電磁気学A 廚あるわけじゃないです。単に夏学期にあるものが 冬学期にあるものが◆△箸覆辰討い襪世韻里茲Δ任垢諭帖帖

タイトルにもある通り、僕は理一の一年生です。







[月曜日]


月1:図形科学I 加藤道夫先生 F系列

準必修の図学の講義です。スケール(目盛りのついた定規)と三角定規とコンパスのみを用いて手で作図する方法を学びます。中学校で習うような作図とは割と違います。建築物の設計図の作図をイメージしていただくと大体合ってると思います。プリントが配られ黒板で解説していくタイプの講義形式で、出席が毎回取られます。レポートがほぼ毎回出題され、僕にはこれが結構難しかったです。「萌えるシケプリ」という神シケプリが存在します。少し古いシケプリですが、もしこれを読んでいる人でこれを持っていない人は今すぐダウンロードしておくべきだと思う程度には分かりやすいです。評価は出席、レポートと期末試験です。期末試験は毎年異なるユニークな問題が出されているようです。3学期に「図形科学演習機廚あります。また、同じく3学期にCADの授業として「図形科学供廖Javaを用いて3Dグラフィックスを扱う「図形科学演習供廚存在します。


月2:記号論理学供_本賢吾先生 A系列

1学期の「記号論理学I」と関係する講義ですが、記号論理学Iを受講していなくても大丈夫にはなっています(講義内容がほとんどかぶっていないため)。ゲーデルの第一・第二不完全性定理の解説を軸に、論理学や計算機科学を学びます。今年は期末レポート1本で成績がつきました。数学系・情報系に興味がある人は是非とっておくべき講義だと思います。プリントを配りつつ黒板で行う講義で、出席点はありませんでした。少し難しい講義ですが、楽しかったです。


月6:実践的プログラミング 金子知適先生 全学自由研究ゼミナール

夏学期に続いて、趣味です。夏学期にも月6に同名の講義がありますが、夏と冬で単位は別なようです。講義形式は夏学期と同じでしたので省略します。今学期は、第1回には23人、最終回には15人が受講したようです。楽しい講義でした。来学期も受けます。
# 余談ですが、今学期かなりの割合で3・4時限目にあった物理実験が延びて6時限目に食い込んできました。物理実験、かなり要領よくやらないと時間内に終わらないような気がするのですがどうなのでしょう。僕たちのクラスだけなのでしょうか(他クラスの人に「そうでもなくね?」と言われたことがあるので……)。






[火曜日]


火1:相対論 和田純夫先生 E系列

その名の通り相対論の講義です。特殊相対論を数時間で学んだ後、ニュートン力学と電磁気学を特殊相対論と矛盾しないように書き直します。その後時間が余れば余った分だけ一般相対論を学びますが、こっちはオマケみたいなもんです。今学期は2~3時間くらい一般相対論に触れました。夏学期にも開講されていますが、僕は冬学期に取りました。物理が苦手だからっていうのが第一の理由です。力学と電磁気学をある程度分かっていないと、この授業のメインである相対論に矛盾しない力学・電磁気学の有り方についての講義が分かりにくいかもしれません。今学期は講義中のアンケートの結果、力学は知ってるものとして講義が進み、電磁気学は必要に応じて(Maxwell方程式について、など)註釈が入りました。講義は黒板のみ。評定は基本的に期末試験ですが、救済レポートが存在します。期末試験が120点満点らしく、100優がとりやすいとの噂です。習う事項が新奇ではじめは理解しにくいですが、ローレンツ変換とテンソルについて理解できたらそれなりに点がくるんじゃないかなぁと思います。尚僕はこの講義で物理系科目初の優を取りました(やったぜ)。
# 他の物理系総合科目の主流としては、解析力学や統計力学が存在します。統計力学はよく知りませんが、解析力学は友達が受講してたのをチラ見しました。加藤先生の解析力学でしたが、パッと見「あっ物理ガチ勢だこわちかっ」って思う程度の難易度でした。4学期余裕があれば受講してみようかな……。あ、それと、一般相対性理論についてですが、心配しなくても理物に進まれる方は専門で習います。逆に物理系に進まない方はもしかすると今後相対論に触れない可能性も残されているわけで、専門課程の講義もチラ見しつつ受講を決めればいいんじゃないかと思いました。






[水曜日]


水1:化学平衡と反応速度 佐藤健先生 E系列

同名の科目が3コマありますが、僕は他科目の履修で他の2コマが埋まってしまった等の理由から水1の「化学平衡と反応速度」を選びました。この科目、先生によって習う内容が少し違うようです。佐藤先生の「化学平衡」は、特に酵素反応に力を入れた生物寄りの授業でした。とはいえばっきばきの生物寄りというわけでもなかったです。1学期科目の熱力学/化学熱力学と関係があります。講義形式は黒板のみで、評価は期末試験一本です。後から知ったのですが、佐藤先生はそれなりに評価が厳しい先生のようです。とはいえ試験は講義をきちんと受けていれば点がとれる程度の難易度で、気を付けるのは計算ミスかなぁと思います。


水4:振動・波動論 井上純一先生 E系列

物理系の準必修です。「振動・波動」というとなんだかふんわりしていてどの科目なのか分からないですが、実際色んな科目からのアソートみたいな面もあるので、ふんわりしています。高校物理や1学期「力学」で習う単振動等の振動から発展させて色々な振動を習い、それを波動に発展させていきます。先生によっては、これを力学や量子力学等の具体的問題に応用する所までやるみたいですが、井上先生はそうではなく、もっと理論寄りの講義な感触でした。今年が井上先生の初「振動・波動論」なので過去問はないです。講義は黒板のみで、評価は期末試験のみでした。質問にとてもきちんと答えてくださる先生でした。振動・波動論はなかなか参考書が見つからないです。僕は買いませんでした。裳華房の参考書が良さげな気がして図書館で借りてみたりしたのですが、あまり使いませんでした←






[木曜日]


木2:情報科学 千葉滋先生 F系列

情報系の準必修です。Rubyという言語を用いて主にアルゴリズムの基礎論をやります。昔は言語の仕様についての話もしていたようですが、今はアルゴリズムに注力している感触です。講義はPDFで内容を配布して、先生が言葉で付け加えつつ毎時間課題をこなしていく形式でした。評価は課題と期末試験です。期末試験は共通問題です。情報系に明るくない方にとっては「アルゴリズムの基礎論」と言われても分かりにくいかもしれないのでもう少し詳しく書きます。1学期の「情報」科目で少しプログラミングに触れた方も多いと思いますが、日本語を英訳する時に色々な言い方があるように、同じ計算をさせるにも色々なプログラムの記述方法が存在します。しかも記述の方法によって計算にかかる時間が大きく変わるのです。これは理学・工学系の研究において数値計算をさせる時について致命的です。またたとえば「小数を含んだ計算をさせる時に注意すること」「乱数を使うときに注意すること」なども習いますが、これも使い方を間違えれば研究結果に影響を及ぼしかねない重要な基礎論です。そういうわけで、僕がシケ対してた科目の宣伝でした 笑


木5:日本国憲法 渋谷秀樹先生 C系列

教職を取るために必要な科目です。夏学期にも開講されていますが、冬学期にもあります。文系、特に法学部志望と戦うことになるので優を取るのは理系には難しいかもしれませんが、良は取れました。講義はパワポを使いながらノートを取らせるタイプで、パワポの配布はありません。評価は期末試験1本です。期末試験は穴埋め問題と記述問題で、特に理系は慣れない記述問題をすることになります。ただ日本国憲法の講義自体はそれなりに面白かったです。慣れない文系科目に触れる良い機会でした(法学なんて触れたことなかったので)。






金4:英語二列R ミルズ先生 基礎科目 既習外国語 英語

基礎科目ですが、英語二列Rはある程度選択肢があるので書いておきます。この講義では前半で"The Curious Incident of the Dog in the Night-Time"という本を基に自閉症について理解を深めました。本の読解と言いますが、出てきた単語を用いたクロスワードをしたりとかいうのだったので新鮮でした。後半ではRainmanの映画を見たり、色々と自閉症に関する映像を見たりしました。全体的にふわっとした講義で楽しかったです。評定は出席点等と、一番最後の講義で書くラストエッセイで決まるようです。内容がかたいように見えますが、そこまでかたくなかったです。


金5:わかる電子回路 三田吉郎先生 F系列 数理・情報一般

夏学期に受講した集中講義で勧められたので受講しましたが、満足しています。アナログ回路の基礎を習い、最後の方の講義では自由に回路を組ませてくれます。講義は型破りな感じで、黒板を用いつつざっくり解説なさります。評価は出席点と簡単なレポート、及び最終課題です。最終課題は自分で回路を組むかレポートを提出するかの二択です。回路を組むために工学部の一般電子実験室を開放してもらえました。僕はそこでイチからプリント基板を設計・作成することができました。初めての体験でしたが楽しかった。1年生の内からここまで自由に実験室を使える講義はそうないと思います。電気系に興味がある方、回路に興味がある方にはおすすめです。ここらへんが講義HPです。






今学期は集中講義を取りませんでした。総コマ数は21でした。

以上です。質問等あればこの記事にコメントをしていただくか、@nekketsuuuまで。

UT-S1-2ndの僕が受けた夏学期科目一覧

$
0
0
どうも熱血です。

2年夏学期も無事終了しました。毎学期恒例の講義感想録を書きましたのでアップします。

2年生になると進振りが間近な関係上、いくらか履修もピリピリしてきます。また、全然コマを取らない人からいつも通り取る人まで様々で、人によって生活が結構違うものになるのも特徴かと思います。あと、理一は基礎科目が物性化学、英語二列、基礎実験しかなくなるのでクラスの交わりも必然減ってしまいます。悲しいものです。

例によって基礎科目以外の科目について感想を書きます。僕が2年夏学期(3学期)に受けた基礎科目は、物性化学、英語二列C(Germain先生)、基礎化学実験です。


あ、そうそう、2年夏学期は履修の幅も広がり色々分かりにくくなる時期かと思います。一番最後に数理科学I~Vと、教職科目についての簡単な説明を付記しておきます。

また、とても重要なことですが、2015年度から東大は4学期制に移行するようなので、もしかすると講義内容や講義方式がここに書かれているものとは全く違うものになる可能性があります。この記事に書かれていることはあくまで僕の今学期の感想であり、将来的な恒等性を保証するものではありません。自己責任でお願いします。







[月曜日]


月2:量子論 加藤光裕先生 E系列

物理学系の主流な総合科目の1つ、量子論です。加藤量子論ではまず前半をかけて解析力学と統計物理学の勉強を少ししました。解析力学は少しずつ飛ばしながら、ラグランジュ形式やハミルトン形式のさわりまでを学び、統計物理学では黒体放射についてのPlanckの式を理解できる程度まで学びました。その後前期量子論(古典論における量子論的な展開)を学び、その流れで量子力学に入りました。シュレディンガー方程式について、時間依存しないシュレディンガー方程式を見ながらどんな感じか概観して、行列力学(いわゆる<φ|φ>みたいなやつとか)や水素原子のシュレディンガー方程式の解を見て終了でした。「量子論」という名前どおり、量子力学のシュレディンガー方程式をただ見つめるのではなく、なぜそのような方程式に至ったのかまで含めて詳しく学べます。シュレディンガー方程式のより詳しい解法については専門課程で、という感を覚えました。レポートは無し、板書のみ。期末試験一本です。内容的に少し1年生にはキツイかもしれませんが、できないことは無いと思います(前提として必要な知識がそこまで無いため。ニュートン力学をかじっていれば2年生とそこまで変わらないはず。ただ、冬学期に開講される解析力学を受講していた人は強いと思います)。なお、量子論は他の先生が開講されている場合もあります。清水明先生が開講されていることもあります(清水量子論教科書を読む限り、シュレディンガー方程式からはじまり理論の構築を行う授業のように思えます)。個人的には、1年夏学期の力学Aで加藤先生にお世話になっており、良い先生だということは知っていたため受講しました。良かったです。


月5:教育の方法 藤江康彦先生 教職科目

教職科目の1つです。この講義では、学校で行われる教育について、いくらかの分析をしてみようという趣旨の話をしました。具体的には、まず学校教育の特質、特に、教室における特質を詳しく見ました。その後、ではそのような状況の上でどのように教育を行えばよいのかという議論を行いました。講義は配布プリント+パワーポイント+時々ビデオ教材、で進行していき、毎講義B5一枚のプリントで数問の問題に答え、講義の感想を書きくわえて提出しました。問題自体はそこまで難しいものではなく、どちらかというとその講義において考えたことを書いたり、講義の内容をまとめたりする程度のものでした。1~3回に1回、数人のグループで話し合いをする場があり、何人かが先生にあてられて発表することがありましたが、そこまで厳しいグループワークではなくゆるふわでした。評価は毎授業で提出するプリントによる点と、最終レポート(大問2つ。各2400文字程度)の提出(今年は、7/28締切)で行われたようです。期末テストはありませんでした。


月6:実践的プログラミング 金子知適先生 全学自由研究ゼミナール

これで3学期連続の受講になります。趣味です。月6には教職科目もありましたが、やはりこっちの方が好きだったのでこっちを受講しました。尚月6の教職科目「教師論」ですが、毎回それおれ各地の先生を呼んでお話を聞く、という授業だったと聞いています。さて実践的プログラミングですが、今学期も今学期で同じように毎週1つ問題を解いていくというものでした。もうこれ書くのも3回目なので省略しますね。今学期は一度金子先生にICPCに出ないかと誘われたのですが、流石にこれ以上タスクを積むと無理そうだったので残念ながら断念させていただきました。プロの人は今年も世界大会で活躍されてましたね。強いです。






[火曜日]


火1:超高速ロボットをつくる 石川正俊先生など 全学自由研究ゼミナール

集中講義と普通講義の間みたいな全学ゼミです。3,4週火曜1限での講義を受けた後、週末の午後を2日分使って本郷での講義+研究室見学に参加するという講義形式でした。具体的には、工学部計数工学科の石川渡辺研究室および篠田牧野研究室の研究成果をひたすら見て、その基本にある知識を少し学ぶ、という感じの講義です。ここにある動画は何回も見ました。評価は毎講義への出席と、最終レポート(A4 2枚、見学の感想と機械システムの将来性について)の提出で行われました。僕としては、東大入学前から知っていたじゃんけんロボットBFS-Autoなどのシステムを実際に見れるのが魅力で、ただそれだけの理由で受講しました。実際に色々体験できたので面白かったです。発見としては、この2次元通信システムを知れたのが大きかったです。非接触給電には去年あたりから興味が強くなっているので、色々と考える所がありました。


火2:数理科学I 松尾厚先生 F系列

聴講しました。数理科学Iは、2次元の数学について学ぶ講義で、陰関数定理、未定乗数法、線積分などを触りました。3次元のベクトル解析を行う数理科学IIIと関連があり、また微積分を行うという点で1年の数学IA・IBと関連があります。授業形式は板書のみ。時々演習問題が配られました。


火3:反応化学 山田徹先生 E系列

準必修です。反応化学は有機化学の各種化学反応についての理論を学びました。高校化学の有機分野をより難しくした感じです。もし1年冬学期に基礎化学実験を行っていたのなら、その時に出てきたニトロ化反応やグリニャール反応は反応化学の範囲内です。割と暗記事項が多い科目でした。評価は試験と、一応の出席点(毎授業ごとに1問指定された問題を解いて提出)。講義は配布プリントと板書。割とどんどん自習していった方が捗りそうな講義でした。教科書について、ウォーレンだのジョーンズだのありますね。お高いので買いたい場合は進学したい学部でどれを使うのかも考慮しつつ、という感じだと思います。試験問題はそれなりに難しいので、しっかり勉強しないとアレです。ちなみに2014年度の試験ではIUPAC名の問題は出ませんでした。尚山田先生は毎年「試験講評」なるものを発行されているらしく、試験後に山田先生にメールすればその年の問題の講評と平均点と分散を教えていただけるそうです。友人曰く山田先生はこの講評がWeb上に落ちていると思ってらっしゃるそうですが、あんまり落ちてません。


火4:図形科学II 奈尾信英先生 F系列

準必修です。1年の冬学期に受講できる図形科学Iは手書きの作図についてでしたが、図形科学IIではその発展としてCGを使った立体の取り扱い方と図形幾何学の応用について学びました。尚手書きの作図についてもっと詳しく知りたい人のために図形科学演習Iという授業もあります(僕は受講していません)。さてこの講義では、Inventorや3ds Maxといったソフトウェアを使ってコンピュータを使った作図(CAD)の扱い方と、それを用いてレンダリングして映像を作る手法のお勉強をしました。毎時間ソフトの使い方をちょっとずつ学んでいき、最後の3週間+αを使って何か1つ最終課題を作って提出、という形の授業です。評価は毎週の成果物の提出(よくできているものについてのみ追加加点)+最終課題+期末テスト(+出席?)という感じでした。期末テストは教科書の丸暗記で解けます。厄介なのは最終課題で、約1か月使って何かしら3Dレンダリングした動画を作成します。具体例はコチラ。尚左に載ってるのは教科書に載ってる例そのままで、オリジナルのものを作成してもOK。年々クオリティが上がっているそうな。レンダリングという作業に無茶苦茶時間がかかる(最低でも数時間。凝ったものを作りたいなら数日間はかかるかも)ので、コマを多くとっている人(僕)は注意が必要です。JK棟でちくちくレンダリングしながら物性化学の勉強するのはもう嫌です。尚この講義で使うソフトウェアのInventorと3ds Maxは共にこの、Autodesk Educational Communityから無料ダウンロードできます。学生ならば.ac.jpドメインのメールアドレス(Mail Suiteのやつ。@email.ecc.u-tokyo.ac.jpなど)を使って登録することで、ダウンロードから数年間だけ無料になるライセンス付きのAutodesk商品をゲットすることができます。尚、2014年度使ったソフトのバージョンはInventor Professional 2012と3ds Max 2012です(注意なのですが、実は先のページからInventorをダウンロードしようとするとpart1だけダウンロードされて、part2がダウンロードされない時があります。chromeだとダウンロードがうまくいきません。Internet Explorerを使ってください。あるいはchromeでもpart2ファイルに直接アタックすればDLできたような気がします。あとInventorも3ds Maxもどちらも[.NET再頒布可能パッケージとか入ってるため]数GBの容量を誇る.exeとなっておりますのでダウンロード時間に余裕をもったダウンロードが期待されます)。バージョンはおそらくECCSに入ってるものと同じやつを使うはずです。Windowsで動作するソフトなので、ECCSのWindowsでログインし、スタートメニュー→すべてのプログラム→Autodeskの中にソフトが入ってます。どんな感じか触ってみたい人はそこからどうぞ。ちなみに最終課題のためには自分のPCにもソフトをダウンロードしてやることが効率のために必要な気がします。あ、あと、実は教科書は学生会館委員会の委員会室(学生会館の上の階にある)で割と安く買えます。


火5:道徳教育の理論と実践 西野真由美先生 教職科目

道徳系の教職はほぼ選択肢が無いのでこれを受講した方がよいと思い受講しました。講義形式は配布プリント+板書。評価は出席点+レポート1回(毎講義に講義と関連する参考図書が数冊挙げられるので、それらの中から1冊選び考察する)+期末テスト(繰り上げ)、です。講義1回目に詳しい説明がありました。詳しい講義内容としては、道徳とは一体何か、という所から始まり、道徳性の発達についての研究、日本における道徳教育の歴史の概観、そして具体的な道徳教育の方法についての考察などを行いました。ほぼ毎回グループワークがあり、何かしらの方法(毎回変わる)を使って集団の意見決定を行いました。そうそう後、結局指定されていた教科書一回も使わなかったです(むー……)






[水曜日]


水1:統計物理学 吉岡大二郎先生 E系列

今学期受けた科目の中で一番好きになれた科目かもしれません。とても僕と波長が合った気がします。統計物理は、ニュートン力学などのミクロな物理と熱力学のマクロな物理をつなげようという分野です。2年生向けの講義ですが、1年生も受講できます。(先生からの情報によると、暫定ですが2014年度の1年生の受講生は9名で、内6名が優だった模様です) 講義はパワーポイントで、適宜印刷してくることが必要です(しかしそれだけの価値があります)。所々量子論を必要としますが、適宜説明が入るので大丈夫です。それよりどちらかというと数学的操作に慣れている必要があると思われます。毎講義最後に質問+感想等を書いた紙を提出しました(成績には関係なかったはずです)。集められた質問はその次の講義で回答がありました。個人的には、最後2.5回分くらいの講義を使って説明のあった、強磁性体のIsing模型による解釈がとても面白かったです(強磁性体がなぜキュリー温度で常磁性体に相転移するのか、なぜ磁化するのか、などを考察)。残念ながら吉岡先生が今年でご退官なさるらしく、来年からはどうなるのか分かりません。同様に、和田純夫先生、風間洋一先生もご退官だそうで、来年からの「相対論」は一体どうなるのだろうかなぁという感じです。教科書指定はありませんでしたが、吉岡先生は2冊統計物理の本を書いていらっしゃいます。『マクロな体系の論理』(もうあんまり売っていないので古書を探すしかない)とSpringerの"Statistical Physics"です。


水2:数理科学II 今井直毅先生 F系列

数理科学IIは、全微分方程式の授業です。微積分を扱うという点で数学IA・IBの発展ですが、実は途中で行列を扱う所がちょっとだけあるのでそこは数学IIの発展となっています。今井先生はかなり凄いお方で、僕は個人的にとても尊敬しています。講義形式は板書のみ。講義2回に1回、任意提出のレポート問題が出ました(成績に影響はなく、提出者のみに解答付きで採点が返ってくる)。評価は期末試験のみでした。最初の講義が新規事項が多くちょっとたじろぎましたが、一旦乗り越えると楽でした。教科書指定アリでした。レポート課題(任意提出)が割と教科書に似た問題だったので買って良いと思います。結構期末試験のために演習問題を解きたくなると思うので……。


水5:教育課程 岩田一正先生 教職科目

教職科目です。その名の通り、カリキュラムについてのひきこもごもを学習しました。具体的には、日本のカリキュラムの歴史を概観したのち、カリキュラム研究についての一般事項、たとえばヒドゥン・カリキュラムと呼ばれるものについて学び、その後各国のカリキュラム事情について俯瞰して終わりました。岩田先生はとても教養のあるお方で、毎回の講義で話される知識の豊富さ、論理の堅実さに正直びっくりしました。とても面白かったです。講義形式はパワーポイント(任意で印刷してくる)。評価は期末試験のみ(繰り上げ、持ち込みA4両面2枚まで可)でした。


水6:精密工学メカトロニクス入門 山本晃生先生 全学体験ゼミナール

工学部精密工学科の開講している全学ゼミです。工学部合同ゼミで説明が受けられるゼミの1つです。履修のためにはガイダンスに参加する必要があります。講義内容としては、駒場で2回制御論の基礎を学ぶ座学をしたあと、本郷で週末の2日全日を使って磁気力を使った非接触浮上(マグレブ)の制作実習をしました。制御論の学習というのは、簡単な電気回路の知識(抵抗、コンデンサ、トランジスタ、OPアンプの基礎)と、それを使った制御の理論的扱い(古典制御論と現代制御論)について俯瞰し、古典制御論のPID制御について学びました。今回使った制御方法はPID制御です。実習では1日かけてアナログ回路を用いて小さいマグレブ装置を1人1つ作り、磁気浮上させました。1日目でマグレブできてしまったので、2日目はマイコンを使ったデジタル制御によるマグレブをしました。mbedを1人1つ使って、Cで適当なプログラムを書いて制御しました。簡単でした。制御論を学んだのは初めてだったので面白かったです。今学期受けた講義の中で最も早く単位確定しました。






[木曜日]


木1:図形科学演習II 山口泰先生 F系列

図形科学IIはInventor/3ds Maxを使った授業でしたが、こちらはJava + OpenGLを使ったプログラミングの演習授業となっています。内容的には最終的には図形科学IIに若干関係あるものになりますが、正直あまり図形科学IIとの関連は無いと思った方が良いかと思いました。どちらもCGを扱うという点では共通です。Javaは情報科学で扱うRubyと似たようなオブジェクト指向言語であり、情報科学を履修していればそれなりに扱えると思います。授業内容としては、Javaの使い方(いくつかの文法、クラス、継承についての解説)を少し学んだあとCanvasを使った2D描画について学び、そしてOpenGL(JOGL)を使った3D描画について学びます。図形科学IIで扱うようなCGソフトが概略的にはどのように作られているのか分かって面白かったです。授業はJK棟で毎週講義+実習の形で進み、教科書を約1章ずつ進めていくような感じです。毎週課題の提出があり、期末テストはありませんでした。個人的に山口先生には何度もお世話になっているので、お勧めの講義です。あと実は、図形科学IIと同様に、教科書を学生会館委員会室でちょっとだけ安売りしてます。


木5:教育原理 下地秀樹先生 教職科目

教職科目です。この講義では「そもそも"人間"とは何か?」みたいな人間論から入り、学力観について再考し、そして改めて教育とは何か考える、というようなことをしました。哲学チックなにおいもする講義でした。僕は好きです。講義内容としては毎回、座学+小課題筆記+ピアレビューみたいな形でした。この小課題がかなり面白い問題ばかりで、考え応えがありました。評価はこの小課題の出席点と、期末テスト(繰り上げ、小課題の発展みたいな大課題が4,5問、持ち込み可、終了後にやっぱりピアレビューをした)でした。






[金曜日]


金1:数理科学IV 松田茂樹先生 F系列

数理科学IVはジョルダン標準形についての講義です。つまりは1年生のときの数学IIの続きです。対角化できない正方行列に対してどう処理するかを目標に色々学びます。数理科学IIの微分方程式にもチラリと関わってきますし、理学・工学では色んな分野で重要になってくる概念(らしい)です。授業形式は板書のみ。ときどき演習問題が配られました。評価は期末一本でした。「「「準同型定理は麦」」」


金5:教育心理I 市川伸一先生、植阪友理先生 教職科目

教職科目です。教育心理ではその名の通り教育学に有効な心理学を学びます。特にこの市川・植坂両先生の講義は心理学の理論というよりかはその実践に興味があるらしく、実践について両先生の実体験も交えながらの講義、となりました。講義形式は、少し説明しづらいのでざっくりと説明しますが、まずほとんどの回を植坂先生が担当されました。植坂先生が市川研に所属している、という形みたいです。で、2,3回市川先生の講義がありました。植坂先生の講義ではゞ飢塀颪了慊蠅気譴疹呂鰺十してくる⊆箸呂犬瓩4人グループで予習の確認をする先生の主に口話、時々板書による講義ず討咼哀襦璽廚覇睛討粒稜Лト展、という、(この講義で習う形の)講義形式でした。市川先生もこれに似ていましたが、パワーポイントを用いていた点で差がありました。授業形式として、配布プリント有、毎授業で質問+感想を書いた紙を提出、でした。評価はレポート2回+期末試験(繰り上げ)(+出席?)でした。2回目のレポートの提出締切が8/11まで、という謎な感じなのですが、専門課程の講義ではこのようなことも多いのでしょうか。教職科目は進振りには関係ないのでそこまで早く評価を出さなくても良いのかもしれませんが……。植坂先生の講義では毎回4人のペアを作ることが必要でした。その意味で、3-4限が基礎化学実験だったため少しキツかったですが、講義後半になると先生が徐々に基礎実験について理解を示していただけるようになり、また同クラ受講生が割と多かったこともあり、乗り切れました(ちなみに一応基礎物理実験には5限のために一旦実験を抜けてまた戻ってこられるというシステムが有るとか無いとか)。






[集中講義]


# 夏休みに集中講義を1つ取っていたのですが、その名簿が公開されている関係上、ある方法を使うと僕の本名が特定できてしまうことに気づいたので、この項目は削除しました。申し訳ありません。 #


(※火1:超高速ロボットをつくる、水6:精密工学メカトロニクス入門もほぼ集中講義でした)






[数理科学について]

数理科学I~Vは、2年生のみが受講することのできる数学の科目です。5つもあって「全部受講しなきゃいけないの?」とか色々あると思います。まず、それぞれの科目が主に何をする科目なのかの解説を書きます。

数理科学機2次元における微積分を主に扱いました。陰関数定理、未定乗数法、線積分など。
数理科学供Ь鑒方程式を扱いました。
数理科学掘3次元におけるベクトル解析を主に扱うそうです。ストークスの定理、微分形式など。
数理科学検Jordan標準形を主に扱いました。行列の話です。
数理科学后Е-δ論法について主に扱うそうです。

並べてみると、1年生のときの数学IA・IBの発展として数理科学機Ν掘Ν后⊃学IIの発展として数理科学犬あることがわかります。尚数理科学IIは微積を扱うという点で数学IA・IBの発展ですがそこまで強いものではなく、また行列を扱う話もある、という点で数学IIの発展にもなっていました。

ちなみに、1年生の冬学期最後の数学の講義において、先生から「進学学部別の『受講してほしい数理科学』一覧」のリストをもらいました。数理科学の履修については、このリストや行きたい学科の要望科目等の情報を参考にしつつ決めればよいのではないかと思います。聴講という選択肢もあります。


[教職科目について]

2年生では、教職免許を取得するために必要な単位の内のいくつかを先行して受講することができます。詳しくは1年生の夏に開かれる任意参加の「教職免許ガイダンス」に譲るとして、進学の手引きなどをよく読めば、それなりの単位数が教職に必要なことがわかります。教育学部が開講しているそれらの科目の内いくつかは駒場で先行開講されているため、受講できます。今学期は月曜~金曜の5限と、月曜6限に開講されました。尚、それら全てを受講しなければいけないわけではありませんでした(とれば専門課程進学後楽になるというだけ)。

尚、進みたい学科によっては学部時代中の教職免許取得が絶望的になりますので、そこらへんをよく考慮しつつ自分で計画することになります。ちなみに僕は進振りガイダンスで教授直々に「教職免許取るなら修士だと思うけど~」という趣旨のことを言われガビーンってなりました。

教職科目は教育学部の科目なので教養学部の日程で試験が行えず、試験がある科目については全て繰り上げ試験という形になりました。また、先生が毎年変わっている科目もあるらしく、ここに書いたことが参考になるのは数年後かもしれません。


[4学期制(4ターム制)について]

来年から東大も4学期制になります。上でも述べましたが、それに伴い色々とカリキュラムも変わるでしょうし、どうなるか分かりません。理系と文系で学期が変わるようなので、もしかすると理系が教職科目受講することがより大変になるのでは……?とか思ってます。闇なことにならないとよいのですが。

まだ各学部学科ごとの具体案が分からないのでどうもこうも言えないのですが、繰り返しますように、もし4学期制になって制度が変わるとここに書いてあることは全く参考にならない可能性がありますのでご承知おきください。






今学期の履修は基礎科目2コマ+実験1つ(2コマ)+総合7コマ+教職5コマ+ゼミ1コマ+集中講義3つ(+聴講1コマ)でした。

以上です。質問等あればこの記事にコメントをしていただくか、@nekketsuuuまで。

UT-S1-2ndの僕が受けた冬学期科目一覧

$
0
0
熱血です。

急かされたので、2年後期の講義感想録をつけたいと思います。

今学期も所属は教養学部理科一類なのですが、進振りで僕は理学部情報科学科(以下ISと略記)に内定したので、専門科目の受講がほぼ全てとなっています。

以下「4学期科目」と書いた場合、その学科が教養学部2年冬学期に開講していた専門科目のことを指すこととします。

IS内定者はIS4学期科目が全て必修で、他にいくつか取らなければいけない感じでした。

夏学期の講義感想録を見ると「クラスとの交わりが減ってしまい悲しい」とか書いてますが、今学期はクラスメイトと一緒に受ける講義は0でした。コンパはしたし、駒場で何回も会うので交流はありますけどね。これからも交流を続けたい所です。






[月曜日]


月2:生物情報学基礎論I 高木利久先生他 理学部生物情報科学科4学期科目

ISは必修の他に何個か単位を取らなければいけないので取りました。この科目は高木利久先生, 笠原雅弘先生, 浅井潔先生, 津田宏治先生, 岩崎渉先生によるオムニバス形式の講義でした。生物情報学に必要な技術・知識を学べる科目で、どちらかというと情報科学寄りの話題が多かったです。基礎論IIの方は生物寄りの話題が多いらしいですが受講していません。準必修科目「情報科学」の内容にも含まれていたアラインメントのアルゴリズムの話やその応用の話、ベイズ統計と統計モデル選択の話、グラフ理論の基礎とグラフのデータ構造の話、並列計算を用いた高速計算の話、進化樹形図の描き方の話、などなどが話題でした。どの話も根源的には、生物のゲノムやRNAの配列を解析し分類・解析しようとした時に必要となってくるものでしょう。生物情報学は急伸している分野であり、最新の研究結果もどんどん変わるので、講義内容は毎年ちょっとずつ違うらしいです。参考書も(一応指定はありますが)まだ確立したものは無いらしい。指定された参考書は、昔の生物情報科学科の何らかの講義の講義ノートを学生がまとめて本にしたものらしいです。個人的には、「数え上げお姉さん」プロジェクトにも関わっていらっしゃったらしい津田先生のグラフアルゴリズムの話が一番面白かったのですが、それは多分僕が情報科学畑の人間だからだと思います。講義はスライド(先生によっては配布有)、評価は出席+期末試験でした。


月3:計算機システム 吉本芳英先生 IS4学期科目

計算機のハードウェア的な面からソフトウェア的な面までを総ざらいする科目です。月4のHW構成法と並んで、ISの3年生科目に繋がる科目となっているそうです。また、情報科学基礎実験とも繋がっています。習った内容が多岐にわたるのでまとめにくいですが、計算機の発展の歴史、業界標準な計算機でのデータの表し方、CPUの内部構造、アセンブリ、RISC/CISCの話ができる程度の設計基礎知識、OSの基礎、ソフトウェア実行の仕組み、ネットワーク階層の基礎、セキュリティーのお話などをやりました。昨年度まで平木先生が講義なさっていたらしいのですが、今年度は吉本先生の講義でした。講義は全てスライドで配布無し、評価は出席+中間試験+期末試験でした。IS4学期科目には繰り上げ試験が多いのですが、これとHW構成法期末試験だけ繰り上げじゃなかったです。習う内容が多く、また基礎知識未満の知識が少ない箇所は自分で細かい所を調べていかないとちゃんと理解はできないと思います。とはいえそこまで講義で説明していたらどれだけ時間があっても足りないので、生徒の自主性に任せているのかなあという感じです。


月4:ハードウェア構成法 小林芳直先生 IS4学期科目

個人的に今学期ベスト科目です(冗談です)。この講義はNOT/AND/OR/XOR等を使って論理回路を組み、色々作ってみる講義です。作ってみるといっても紙面の上ですが。そして論理素子を使うといったのは半分嘘で、実際によく使うのはもっと大きな単位だったりします。「計算機システム」と共に3年生の専門科目に繋がる講義で、特に3年後期のCPU実験と強い関係があります。今年はISerしか受講していませんでしたが、正直ISerくらいしか受講する意欲が湧かない科目かもしれません(単に他の必修と被っていただけかもしれませんが)。僕の場合、講義初回から聞いたこともない「ラッチ」という言葉を既知にされて、ラッチをどうやって論理素子で作るかという話から始まったのでものすごい困惑したものですが、半年頑張ってみるとちゃんとわかるようになっているので不思議です。小林先生はその道のプロ中のプロで、ハードウェアに対する知識量が半端ないです。CPU実験をやっていた1つ上の先輩が「今HW構成法を受講したい」というツイートをしていた気がするので、2年生の内に負けずに頑張ることが大事なのかなあと思って頑張りました。今年度は毎年使っていた教科書が学期開始時絶版になっていたのですが、先生の力で増刷となりました。来年度以降も同じ教科書が使われるのか知りません。後、今年度は「ハードウェア記述言語」という分類のプログラミング言語であるVHDLを使って提出できるレポート課題があり、しかも学科民が結構普通に提出できてしまったので、もしかしたら来年からはVHDLがかなり早目に導入されるかもしれません。尚、VHDLの文法とかは自習しました。講義は板書+喋りで、評価は有るのか無いのかよく分からない出席+中間レポート+冬休み特訓レポート+期末試験です。期末試験は繰り上げじゃなく、任意のウェポンの持ち込みが許可されていました(ただ通信機器の持ち込みが可能かどうか結局最後まで微妙でした。1つ上の代の人はPC持ち込んだ人がいるらしいのですが)。


月5:進路指導・生徒指導 大野道夫先生 教職科目

大野先生の関心が「青年期の日本人」にあるらしく、そればっかりします。あと毎時間ロックを1曲程度聴きます(ロック史を追うことで青年期について学ぶという趣旨)。講義は板書で、評価は期末レポートのみでした。


月6:実践的プログラミング 金子知適先生 全学自由研究ゼミナール

4学期連続の受講となります。これで単位がもらえる受講は終わりですね。来学期からエア受講するか迷う所です。この講義については過去の講義感想録で語り切った気がするのでもう書くことはないです。去年の冬学期の内容に少しアップデートがかかっていて新しい内容も含まれていたので、連続受講しても暇にはなりませんでした。





[火曜日]

火4:教育と社会 西島央先生 教職科目

理学部・工学部の多くの方は全休となる火曜日ですが、教職科目を取るとそうはなりません。この科目は社会学的見地から見た教育学がメインでした。西島先生が「常識を疑う」ことを講義の1つの軸にされていたらしく、教育に関わるいくつかのテーマの上で「それがなぜそうなのか」を考えることを良くやりました。学期の後半で、能力の高い者が社会を統治しているのだ、というメリトクラシーという社会学の概念にまつわる話がいくつか出てきて、興味深かったです。講義はプリント等による先生の講義と、生徒間での議論とが半々くらい交互で行われる感じでした。評価は出席(?)+期末レポートです。


火5:特別活動論 滝充先生 教職科目

今学期受けた教職科目の中で個人的に一番面白かったのがこの科目です。特別活動とは、たとえば中学校では学級活動・生徒会活動・学校行事の総称であり、ちゃんと初等・中等教育の指導要領に定められているものです。この講義ではこの指導要領をよく読みながら、学生個々人の体験なども交えつつ、指導要領で述べられている「特別活動」において必要な「望ましい集団活動」とは何か、や、「特別活動」として具体的にどんなことをすれば良いのか、どういったやり方が今あるのか、などといったことを学びました。指導要領が教科書に指定されていますが、100円位しかしないので早目に買った方が良いです。一応webに文科省がpdfで上げてくれているのですが僕は本の方が便利でした。講義は開始直後に小テストがあり、その後スライドを用いて先生が問題提起しながら、先生の促しに応じて学生がどんどん発表していくというスタイルです。評価が出席+小テスト+発表点で、完全に点数化されています。学期中に何回かその点数を確認しました。はじめの方の講義で発表点を稼げれば非常に旨いので、初回や第2回の講義でビビらず発表すると後々嬉しいと思いました。





[水曜日]

水1,2:代数と幾何 志甫淳先生 理学部数学科4学期科目

4学期に数学科の専門科目は講義が3種類×2コマ、演習が3種類×1コマで全部で9コマ存在しました。僕は講義を3種類全部取ったのでそれぞれについても感想を書いておこうと思います。「代数と幾何」は線形代数の続きで、教科書の節名をそのまま持ってくると、線形空間、線形写像、自己準同型(Jordan標準形)、双対線形空間、双線形形式、商空間、テンソル積について学びました。Jordan標準形くらいまでは2nd夏学期の数理科学IVでやった内容とほぼ同じで、準同型定理とかもやりました。講義は板書、評価は中間テスト+期末テストでした。演習問題は演習の時間に配られていたので数学科の友達に見せてもらったのですが、教科書の演習問題まとめと、いくらかオリジナルな問題があった感じでした。


水4:アルゴリズムとデータ構造 五十嵐健夫先生 IS4学期科目

アルゴリズムとデータ構造の基礎をやる科目です。グラフの探索、配列データのソート、動的計画法とかのアルゴリズムの基礎と、その計算量の基礎をやりました。講義中のアルゴリズムの説明には仮想言語を使いました。その関係で、プログラミングをしたことが無い人は自習が必要と思います。五十嵐先生の手による自習用教材がかなり丁寧に作られていて、学生としてはとても嬉しく感謝の念しかありません。CとJavaによる実装が教材になっているのですが、特にJavaの方はグラフの探索やソートなどの様子が、1ステップ進む度にGUIで分かるようになっていて初心者向けだと感じました(ただCとJavaそのものに対する解説は無いので、やはりそこは自習)。講義は電子黒板的なモノによる板書(!)で、評価は出席+期末試験(繰り上げ)でした。あ、あと一応講義の内容が情報科学基礎実験に関連します。


水5,金5:情報科学基礎実験 萩谷昌己先生 IS4学期科目

Twitterで #情報科学基礎実験 と検索すればいくらか雰囲気が分かるかと思いますが、いくつかの言語について学んで実装してみるという講義です。自然科学系の学科から見れば「実験」という名前がついていることが奇妙に思われるかもしれませんが、計算機に入力してその出力を見るという意味で実験、だそうです。毎時間2~10個ほどの実験課題が出て、それを各自実装して提出する形でした。やった言語はC / Scheme / PowerPCアセンブラの3つです。講義は大きく4つの内容に分けられ、(1) C言語の基礎から発展。変数のポインタやメモリの動的確保などまで。 (2) 関数型言語Schemeの基礎。SICPが参考書になってました。最終的にScheme処理系をSchemeで作ります(丁寧な解説がつくので思っていたよりは簡単でした)。 (3) アルゴリズムとデータ構造演習。同名の講義で習ったものの内のいくつかをCやSchemeで実装します。 (4) アセンブラ演習。PowerPCというアーキテクチャのアセンブラを学びました。「計算機システム」で扱うアセンブラはPowerPCをモデルにしてそうな部分が多数あり、関連が強かったです。評価は提出した課題によります。





[木曜日]

木1,2:集合と位相 二木昭人先生 理学部数学科4学期科目

学期の前半は素朴集合論における集合の取り扱いについて学び、後半で距離空間、位相空間、位相的性質、完備性について学びました。集合論の方は集合の元とか包含関係とか基礎の基礎から始まって選択公理とかZornの補題とかそこらへんまで。位相論の方は位相の基礎をやった後、連続写像とかHausdorff空間とか完備化とか、色々飛ばしている気もしますがそこらへんをやりました。昨年度までは松尾先生が担当なさっていたのですが、今年から二木先生に。ただし「集合と位相演習」は今年度も松尾先生でした(参考: Twitter #ほのぼの集合と位相演習 )。講義は板書。毎時間レポートが出て次の週の講義で提出でした。評価はレポート+中間試験+期末試験。


木4:基礎教育学概論 小国喜弘先生他 教職科目

6人×2時間のオムニバスでした。毎時間出席点があり、僕は初回の講義出席しなかったのでそこだけ逃しました。出席点で最大40点くらい稼げた気がします。先生によって全然話す内容が違い、また文系科目の素養が無い僕には少し苦しい話もいくつかありました。一応概要を書いておきます。(0)僕が出席していない初回の講義。Hannah Arendtについてやったらしい。(1) 片山勝茂先生。現代社会における道徳教育とシティズンシップ教育について。講義はプリント。(2) 金森修先生。Pierre BoundienとÉmile Durkheimについて。再生産理論、文化資本、社会分業論。講義は喋り続ける感じでした。(3) 川本隆史先生。「社会」「人権」について。講義はプリント。(4) 小国喜弘先生。大阪市立大空小学校の実例を教育学的に分析し、学校とはどんなものであるか考えた。講義1回目はビデオを見て、2回目はプリント。(5) 田中智志先生。教育臨床学について。講義はプリント。(0)~(5)までで1つずつ期末試験の問題が前バラシされ、期末試験では6題中1題に解答するという形だった。期末試験は繰り上げで、ノートや資料の持ち込み可。





[金曜日]

金1,2:複素解析学I 平地健吾先生 理学部数学科4学期科目

複素数の構成から始まって、正則関数、Cauchy-Riemann方程式、リーマン球面、1次変換、Cauchyの定理、Cauchyの積分公式、留数計算、ローラン展開、無限積展開などをやりました。僕にとって数学科三大必修の内一番難しかったです。演習も平地先生でしたが演習の問題はWeb上で公開されていました(提出の義務があるのは演習を受講している人のみでした)。学期はじめの方、毎週の演習をあまりしなかったことをとても後悔しています。そのせいで大幅に出遅れました。講義は板書。評価は中間試験+期末試験でした。


金3:情報数学 須田礼仁先生 IS4学期科目

情報科学にまつわる数学的基礎を広く扱う科目です。数学的な議論は若干ラフでした(少なくとも数学科必修よりは楽でした)。情報科学科(学年で30人くらい)の必修科目なのに履修者は173人もいたようです。理学部の数学、化学、物理科などでは定番の他学科科目となっているみたいです。内容としては素朴集合論の基礎(元とか包含関係とか)、群・環・体などの基本的な代数構造、暗号論、確率や情報エントロピーなどの理論、符号理論です。指定された教科書が4つあって、それぞれがそれぞれで微妙にカバーしている範囲が違いました。講義の1回目に説明があったので買うのはそれまで待っても良いかもしれません。講義は板書で、評価は出席+期末試験(繰り上げ)+レポートでした。レポートは毎回出題され、学期中に講義6回分ずつ提出するもので、救済の意味しかなかったようです。


金4:形式言語理論 蓮尾一郎先生 IS4学期科目

決定性有限オートマトンの話から非決定性有限オートマトンの話に入り、オートマトンのpumping lemmaや計算能力の差についてやった後、正規表現、文脈自由文法、文脈自由文法のpumping lemma、Pushdownオートマトン、Turing機械などをやりました。講義は板書、評価は大体毎週出題されるレポート+期末試験、でした。教科書が(東大内からのアクセス限定で)講義ページにpdfでアップされています。計算論の知識やアルゴリズムの知識がいくらかあるとより楽しめる授業だと思います。


金5,水5:情報科学基礎実験 ⇒ 水5を参照






今学期は集中講義等は取りませんでした。
IS必修7コマ + 理学部他学科科目7コマ + 教職4コマ + 全学ゼミ1コマでした。


以上です。質問等あればこの記事にコメントしていただくか、@nekketsuuuまで。

Markdown -> PDF on Ubuntu 14.04 LTS

$
0
0
MarkdownからPDF作りたいですよね。やりましょう。

この記事では、.mdファイルをpandocで.pdfにする過程を自分用メモします。

環境はUbuntu 14.04 LTSです。

最終更新: 2015/11/23


https://github.com/jgm/pandoc/releases/1.15.1<----- バージョンによってURLが変わります

sudo apt-get install pandocで入れても良いのですがバージョンが古いのでdebian packageから入れましょう。上の1つ目のリンクから最新バージョンの.debファイルが置いてあるGitHubまで行けます。

$ sudo dpkg -i pandoc-1.15.1-1-amd64.deb

また、多少時間がかかりますがビルドすることもできます。

pandocはHaskellで書かれているのでHaskellを入れていない人は入れましょう。

Haskellアプリのパッケージマネージャであるcabalを使ってインストールします。

$ sudo apt-get install haskell-platform
$ cabal update
$ sudo cabal install --global cabal-install
$ sudo cabal install --global pandoc

LaTeX

pandocは内部的にMarkdown ->* LaTeX -> PDFという変換をしているのでLaTeXが必要です。今ならTeX Live 2015が良いです。数年前まで日本語フォント周りが面倒臭かったですが最近は楽です。

TeX Wikiを参考に、install-tl-ubuntuを使うのが良いでしょう。



$ git clone https://github.com/scottkosty/install-tl-ubuntu.git
$ cd install-tl-ubuntu
$ sudo ./install-tl-ubuntu

gitが無いならwgetでもいいです

$ wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/install-tl-ubuntu && chmod +x ./install-tl-ubuntu

そのまま運用してると、忘れてsudo apt-get install texliveしたときなんかに/usr/binに同名の(あんまり設定がされていない)TeX Liveが入ることがあるので、それが嫌な人はapt-getに/usr/local/texliveにTeX Liveがあることを教えてあげます(dummyパッケージを作ります)。

$ sudo apt-get install equivs
$ wget http://www.tug.org/texlive/files/debian-equivs-2015-ex.txt
$ equivs-build debian-equivs-2015-ex.txt
$ sudo dpkg -i texlive-local_2015-1_all.deb

エディタ


適当なMarkdownファイルを作ります。

Emacsでもvimでもウェブエディタでも良いですが、Markdownに特化するならAtom.ioが使い勝手良いです。まだUbuntu用だとアップデートが自動ではないですが、そんなには気になりません。



Ubuntu用には上のページに書いてあるようにatom-amd64.debをダウンロードして

$ sudo dpkg --install atom-amd64.deb

が良いです。

バージョンによっては日本語の入ったMarkdownのプレビューが豆腐になることがあるので、設定で調整します。これはフォントの問題です。

Atomを起動後Ctrl+,でSettingsを開いて、左のカラムから"Open Config Folder"を開きます。

そして以下のCSSをコピペしてstyles.lessという名前で出てきたフォルダ(デフォルトは~/.atom)に保存します。

* {
    font-family: Source Han Code JP;
}

.markdown-preview {
    h1,h2,h3,h4,h5,h6 {
      font-family: Source Han Code JP;
    }
}

atom.ioの解説記事では無いのでこれ以上説明しませんが、色々面白いパッケージがあるのでググってみてください。

Node.js

単に変換するだけなら今までのだけでできるんですが、使いたいフィルターがあるのでNode.jsを使えるようにします。sudo apt-get install nodeだと違うのが/usr/sbin/に入ってしまうので注意してください。

同時にNode.jsアプリのパッケージマネージャーであるnpmも入れます。

$ sudo apt-get install nodejs
$ sudo apt-get install npm

Node.jsのバージョン問題が気になる人はnvmでバージョン管理する方法があるようです。


このままだとnodeというコマンド名でNode.jsが起動できないので、

$ sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

としてやってnodeでも起動できるようにするか、すぐ下でダウンロードするimport.jsのnodeをnodejsに書き換える必要があります。特に拘りがないなら上のコマンドを使うのが速いです。

import.js

@azu_re さんのimport.jsが便利なので使ってみたい人はgit cloneします。

pandocでは内部的にMarkdown -> JSON -> filtered JSON -> PDFみたいな感じに、変換途中に自前のフィルタースクリプトを噛ませることができます。

import.jsは、Markdownのコードブロック(プログラムのコードを書く部分)に外部ファイルをインポートできるようにするフィルターです。

後々楽なので~/.pandoc以下にダウンロードするようにしていますが、好みで変えても構いません。

$ cd ~
$ mkdir .pandoc
$ cd .pandoc
$ git clone https://github.com/azu/pandoc_import_code_filter.git
$ cd pandoc_import_code
$ npm install

試してみる


たとえばこんなMarkdownファイルで試してみます。


Markdownの文法はググればすぐでてきます。AtomだとCtrl+Shit+MでMarkdown previewをトグルできます。

今回使っている文法は、GitHub Markdownにpandoc拡張のpandoc_title_blockheader-attributeを入れたものです。

LaTeXの数式モードが若干分かりにくいので付記しておくと、tex_math_dollarsでは$ ... $がインライン数式モードとして使えます。tex_math_single_backslashでは\[ ... \]が行立てする数式モード(ディスプレイ数式モード)として使えます。マニュアルによるとこれで\( ... \;)も使えるようになるはずなのですが何故か使えませんでした。

このような文法の細かい設定は、pandocの実行時フラグで設定できます。

たとえばこのファイルを以下のコマンドでpdfに変換できます。

$ ls
example.md  hello.c
$ pandoc example.md -s --self-contained -f markdown_github+pandoc_title_block+header_attributes -o example.pdf -V documentclass=ltjarticle --latex-engine=lualatex -V geometry:a4paper -V geometry:margin=2.5cm -V geometry:nohead --filter ~/.pandoc/pandoc_import_code_filter/import.js
$ ls
example.md  example.pdf  hello.c

今回の設定は基本的にGitHub Markdownの指定にしたがっていますが、以下の拡張がなされています。

・ pandoc_title_block : 最初の%で始まる行がタイトル扱いされる。デフォルトだとタイトル・著者名・日付の順番。これを自分好みに変えるためにはYAMLメタデータとテンプレートが必要です。たとえばこのissueや、このissueなんかが参考になります。

・ header_attributes : 各sectionには#section_nameでinternal link(内部リンク)が貼れるのですが、日本語セクション名だと自動生成のidになってしまい直感的なリンクが貼れません。header_attributes拡張を入れると、セクション名の後に {#section_name}と書くとそれがidになります。

・ --filter import.js : コードブロックの中で$importすることで外部ファイルを読み込むことができるようになります

他にも便利な拡張がたくさんあります。implicit_header_referencesとか。Pandocユーザーズガイドの日本語訳を読むと勉強になります。

Makefile


毎回この長いコマンドを打つのは面倒なので、aliasしてあげたり(-t フラグを使うと出力フォーマットを指定でき、-o を省略できます)、Makefileを作ることを思いつきます。

たとえば僕は下のようなMakefileを使っています。

https://gist.github.com/nekketsuuu/5f49279090b7d1301376
PANDOC = pandoc
IMPORT_JS = $(HOME)/.pandoc/pandoc_import_code_filter/import.js
MD = example
TOC =

# 入力はGitHub Markdown + タイトルブロック
# http://sky-y.github.io/site-pandoc-jp/users-guide/#title-block
FLAGS = -f markdown_github+pandoc_title_block

# standalone: 適切なヘッダ・フッタをつける(実は出力がpdfなら勝手にこのモードになる)
# http://sky-y.github.io/site-pandoc-jp/users-guide/#general-writer-options
FLAGS += -s

# 出力ファイルは1つにまとめる
FLAGS += --self-contained

# 日本語でLaTeXを使うための設定
# pandocだとpdfLaTeXで日本語がうまくいかないのでLuaLaTeXを使う
# Tex Live 2015で成功
# デフォルト設定だと余白が広いので調整する
FLAGS += -V documentclass=ltjarticle \
--latex-engine=lualatex \
-V geometry:a4paper \
-V geometry:margin=2.5cm \
-V geometry:nohead

# import.jsをフィルターに入れる
# http://efcl.info/2014/0301/res3692/
# https://github.com/azu/pandoc_import_code_filter
FLAGS += --filter $(IMPORT_JS)

# TOCフラグが立ってるなら目次も入れる
# usage: make TOC=1
ifdef TOC
	FLAGS += --toc
endif

$(MD).pdf: $(MD).md
	$(PANDOC) $(FLAGS) $< -o $@

.PHONY: clean
clean:
	rm -f $(MD).pdf

atom.io再び


markdown-preview-plusというパッケージとmathjax-wrapperというパッケージを入れて、markdown-previewをdisableし、markdown-preview-plusの設定で色々弄るといちいちpandocでコンパイルしなくてもそれなりの出来上がり見本がCtrl+Shift+Mで見られるようになります。便利。

pandocパーサーで数式表示させるためにはPandoc Options: Markdown Flavorにtex_math_dollarsを入れましょう。


まだ僕にはよくわかっていないこと


Markdownには標準で中央寄せ、右寄せがありません(表のセル内alignならあるのですが、<div align="right">に相当するものがありません。

HTMLやLaTeXを直接打つことで解決することもできるらしいのですが、あまりスマートでないのでスマートなやり方を探しています。それこそfilter作るとか。

このStackOverFlowが参考になりそう


テンプレートについてはたとえば http://pandoc.org/demo/example9/templates.html

さいごに


MarkdownからPDFを作れると、

・作ったはいいものの詳細に仕様をまとめるほどではないプログラムの簡単な説明を書いたり

・適当に書いた説明書を体裁よくして印刷できたりします。

綺麗なPDFを手早く作って楽しましょう。

追記.1. (2015/11/12)

「動作が遅い」という感想をもらいました。確かにMarkdown -> pdfはちょっと遅いです。これはpandocが重いというよりか、lualatexが重いのではないかと考えています。試しに同じ入力でMarkdown -> latexをしてみると超速いです。

対応策として、pandocでMarkdown -> htmlしてからブラウザでpdfに印刷する、という方法を@dmingnがしていましたが、これする位ならはじめからMarkdown -> pdfした方が速いのではないかと思う熱血です。

追記.2. (2015/11/12)

LaTeXの数式モードの中でボールドイタリック体を出したいという意見をもらったのでやってみました。LaTeXの数式モードでは太字\mathbfとイタリック\mathitがありますが、ボールドイタリックはありません。\mathbf{\mathit{x}}では片方の性質が打ち消されてしまいます。

LaTeXそのものでは、以下のサイトに書かれているように、\newcommandする方法や\usepackageする方法が知られています。


以下では下のように\newcommandしてやることでボールドイタリックを使えるようにします。上のページに記載されている他の方法も同じようにして使えます。

\newcommand{\mathbi}[1]{\mbox{\boldmath $#1$}}

これをpandocで使える形にするにはいくつか方法がありますが、一番手早いのはYAMLメタデータブロックを使う方法だと思います。

たとえばこのサンプルファイルを見て下さい。このMarkdownをpandocに変換させると、確かにボールドイタリックとして出力されます。

ただしいくつかエクステンションを増やさないと駄目です。YAMLメタデータブロックを使うためのyaml_metadata_block、LaTeXの\newcommandや\renewcommandを使えるようにするlatex_macrosが必要です。僕はしばらくlatex_macrosの存在を知らなくて、バックスラッシュが\textbackslashに変換されてしまってエラーが出ていました。

上のMakefileに追加すればそれで大丈夫なのですが、一応最終的なコマンドをコピペしておきます。

pandoc -f markdown_github+tex_math_dollars+yaml_metadata_block+latex_macros -s --self-contained -V documentclass=ltjarticle --latex-engine=lualatex -V geometry:a4paper -V geometry:margin=2.5cm -V geometry:nohead --filter /home/itak/.pandoc/pandoc_import_code_filter/import.js  example.yaml.md -o example.yaml.pdf

YAMLメタデータのheader-includesにはLaTeX以外にも色々書けて便利です。リファレンスこのStackExchangeが参考になります。

この方法は手軽なのですぐできますが、こういうヘッダーが増えてくると同じようなヘッダーを複数ファイルに何回も書くことになって面倒くさいです。そういう状況にはYAMLメタデータではなくて、LaTeXテンプレートファイルの方が適していると思います。

これはあらかじめ~/.pandocなどに置かれたテンプレートファイルを実行時にテンプレートとして指定することでヘッダーファイルとしてインクルードできるという機能です。詳しくはリファレンスをば

参考


Pandoc ユーザーズガイド 日本語版
http://sky-y.github.io/site-pandoc-jp/users-guide/


多様なフォーマットに対応!ドキュメント変換ツールPandocを知ろう : Qiita
http://qiita.com/sky_y/items/80bcd0f353ef5b8980ee

Pandoc: オプション「--data-dir=DIRECTORY」の利用(4)途中だが、進化! : いわにぃのブログ
http://blog.livedoor.jp/ti5942/archives/7332808.html

pandocでMarkdownを拡張しコードをインポート出来るfilterを書く
http://efcl.info/2014/0301/res3692/


atomのmarkdown-previewで日本語が豆腐になる(Ubuntu) : Qiita
http://qiita.com/Mokkeee/items/cca4ba3a6bf334fa7934

Ubuntu でapt を使用してNode.js をインストールする3 つの方法(Ubuntu 15.04, Ubuntu 14.04.2 LTS) : Qiita
http://qiita.com/TsutomuNakamura/items/7a8362efefde6bc3c68b

Adding headers and footers using Pandoc - TeX - LaTeX StachExchange
http://tex.stackexchange.com/questions/139139/adding-headers-and-footers-using-pandoc
Viewing all 107 articles
Browse latest View live