2013/07/22

オープンキャンパスな話

2013/07/20 に オープンキャンパス があったので参加するなど。

午後の部の体験ツアーなるもので Programming III の成果物を発表してきました。
内容は Open Source Conference な感じなので詳細は来た人のみってことで。

基本的に高校生に話す、ってことだったのだけれど、どういった風に話をしたら良いのか謎でした。

例えば、プロトコルの名前をそのまま出すのはダメな気がしたので、ざっくり話したり。
それでも「ログ」とか口走っちゃうと「対数関数ですか?」とか言われたり。
だからと言ってぼかせば「そんな単語分かってるよ」って人がいたりとか。
後半は、どのくらいの感じで話せば良いのか調べるためにも「どうやってると思う?」的な逆に質問を投げてみるとかしました。いくらかマシにはなったかと思う。
オチとしては「詳細は大学で学べますよ」とか言っておいた。オープンキャンパス的にも。
しかし、相手のバックグラウンドが分からないと言葉選べないなー、とか思いました。
(んで、前の打ち上げの時に黙ってた自分を思い出してかなしみにくれる。次からどういう背景があるのか言った方が良さげだな、とか思いつつ、実際そんな時は忘れてそう……)
ある程度の共通認識が存在する空間に居続けて麻痺してるのがあるのかもしれない。
麻痺する前からアレだった説も否めませんが。ががが。

そんな話はともかく、最後は @morobororo さんの感動的なプレゼンと「1飯テロ1質問」の話。
あと @sister_clown さんが一日で機能増強してたりしててすげーなー、とかとか。

あとは、先輩方と戦闘しかけたりとかなんだかんだありましたが終了。単に私の勘違い。
「自宅にルータ2台置いてプライベートAS番号振ってBGPルーティング。ただし端末は普通のMacBookPro1台」とか笑ってしまった。

なにはともあれ、皆様方お疲れさまでございました。

2013/07/15

すごいHaskellたのしく学ぼう! を読み終えた

いわゆる「すごいH本」を一応読み終えました。一応。

実を言うとゴールデンウィークくらいから読み始めて、しばらく読んだあとに時間が取れなくなって放置、そして今さっき最後まで読み終える、みたいな流れでした。
ながいごーるでんうぃーくだったなー。

Haskell の入門書として良い感じ、という評判に漏れず、いろいろとさらえた感じ。
実際 Haskell 使ってるわけじゃないので、まだまだ入口にも辿りついてない可能性もありますが。
とりあえず内容としては基本的な構文から関数定義に始まり、再帰関数の話や型定義、くらいまでが他言語から聞いたことあるような話。
んで、 IO, Functor, Applicative Functor, Monad, Zipper くらいから Haskell 特有な感じかなー、と。

こうやって書いてると Haskell 特有なところ、理解度低い感じしてかなしい。
とりあえず、Haskell書くなら手元に置いておきたい一冊かなー、と思う。


んで、Haskell そのものについてコメントるのは以下くらい。
  • pattern match
  • guard
  • where
  • data type
  • Functor, Applicative Functor
  • Monad


pattern match

Haskell では関数定義の時にパターンマッチって構文があるみたいです。
こんなん。
fib 0 = 0
fib 1 = 1
fib n = fib(n-1) + fib(n-2)
フィボナッチ数列を計算する fib 関数。
fib に渡す値が 0 ならー、みたいな if を書かずに書ける、って感じみたいです。
0ならこう、って直接書ける。
あと、 pattern match を使えば 強制的に早期 return になるのも良いなー、と


guard

pattern match の条件版みたいなやつ。
こんなん。
isPlus n
    | n > 0     = True
    | otherwise = False

これは0より大きかったら True を、それ以外は False を返す関数。
条件にあったらここ実行して、みたいなやつをこう書ける。
もちろん条件は複数書いて良い。
otherwise が case の default というか else というか。
pattern match もだけれど、上から調べていくので、 Haskell は巨大な switch 、とかって言ってる方もいたよーな。
これも早期 return っぽくなるし、良いんじゃないかなー、とか


where

これも関数定義。
関数のみ有効なスコープの関数を定義できる。
lambda 以上 定義した関数以下、って気分。
スコープを汚さずに、繰り返し処理を書かなくて良い感じ。
let でも同じことができるっぽい。 let は上に書いて where は下に書く。個人的には where 派かも。
こんなん。
squareMinNumber x
    | square x > 100 = x
    | otherwise      = square x
    where square x = x * x
2乗して100以上ならそのままの数値、100以下なら2乗する、って関数。
x * x を2回書かなくて良い、みたいな。

data, class

この辺からあやしい。
とりあえず、型変数が無い型は enum みたいだなー、とか思ったり。
型変数があるやつは class 的に扱えば良いのかな、とか思うけれど自作する場面がふと思いつかない。
木構造とか、リストとか、自分でデータ型を定義とかしないと恩恵や実感湧かなさそう。むむ。
class は なんか Java の Interface チック。
この型 class に所属するものはこの関数が使える、みたいな。


Functor, Applicative Functor

この辺までくると言われたことをやってる感じ。
Functor で包む利点ってなんなのかなー、とか思い始める。
リストは非決定性演算に使えるっぽいけれど、発想が未だArrayなので追いついてない感。


Monad

よー分かんない感じになってくる。
とりえあずいろんな記事とか見てて「プログラマブルなセミコロン」とかあったので、自分なりにMonadを作ってみようとしたけれど ghc に怒られてる。
個人的には、>>= を使って Monad な演算をする分には「モナドに包まれた値に対する演算時に、モナドに付属する値(Maybeとか?)にも演算が同時にできる」ものだと思ってるけれど。
実際謎っぽい。ぐーぬ。
とりあえずもしちゃんと書けたら記事を書こうとは思っている。
もしかしたら「書けませんでした」記事になるやもしれない。
あ、でも Maybe Monad 便利そうだなー、とは思った。使えるかどうかはアレ。


まとめ

Haskell分かってない。

2013/07/09

オープンソースカンファレンス 2013 Okinawa に行ってきた

2013/07/06 に オープンソースカンファレンス2013 Okinawa があったので行ってきました。

ちなみに発表もするなど。A会場で 11:00 から。
ちょっと内容が学科向けのものだったので詳しくは書けませんが。
「ちゃんとデータベースバックアップしてる? 大事なデータなら日時レベルでやっとかないと」みたいなツッコミも頂けました。ありがとうございます。

そしてブースをぐるぐる周る。
  • Apache Camel
  • NetBSD
  • はごー勉強会
  • PostgreSQL
  • さくらのクラウド
  • NetCommons
とかとか見ました。
他にも、「働いたら負け」Tシャツが置いてあるけれど、見に行った時には人がいなかったブースとかありました。あれはなんだったんだろ。

話を長めに聞いたのは Apache Camel と NetBSD。
Apache Camel はプロトコルが違うサーバとかの真ん中に置いてプロトコルを相互変換してくれるやつみたいでした。なんか fluentd っぽい匂い。

NetBSDは携帯端末でNetBSD祭りしましたー、って感じでした。
Zaurusとかそーいうの。 WillCom 多し。
あと、mikutterが動いてたので「ておい人いるんですか」と聞いたらそうでも無いとのこと。
話を聞くと、mikutterは結構リソースを食うし、X上げないといけないし、Ruby動かさないといけない(= C Compilerを動かさないといけない)ので、「ここまでやったぜ」みたいな指標なんだとか。へー。
他にもNetBSDなSocket昔話とか、GPL汚染の話とか聞きました。
あとぺんぎんさんスタンプ。

あと声優さんいらっしゃってた様子。なんかめうめうの中の人らしい。某人物がサインゲットしてました。

ってなわけで戦利品はこんな。

あとセミナーは同じ時間のやつと Haskell による Web Service 構築入門 見てきました。
同じ時間は Unity によるゲーム入門。 ローグしようぜ状態。
Haskell は途中参加だったので、「型便利」みたいな感じでした。
コンパイル通れば割と良い感じだし、関数とかの意味も型を見たら分かるよ、みたいな。

最後に懇親会。
個人的に技術的な裏話とか期待してたら皆様方おっさけー、だったので私だけ真顔。
そんなんで続けてたら「それ打ち上げに期待するもんじゃない」って言われるなどして少々ヘコむ。
それでも色々語ってくれる人はいて、それを聞いてた感じ。
なんかすみません感。おさけこわい。