2007-07-03
■ [event] びわこで開発合宿をしました
先週末に、びわこの西岸にある研修施設で開発合宿を行いました。
開催理由は単に「やりたかったから」というだけなんですが、共同主催者のはこべさん以下10人も 集まっていただけました。ありがとうございました。
自分のプロジェクトは公開できるところまで行けなかったのがちょっと残念ですが、
合宿が無かったら自宅で塔を守ってた放置したままだっただろうことを考えれば十分な成果かなと。
詳細(KPTとか)はあとで書く。
2007-07-05
■ [scheme] 今週末はGaucheFestらしい
何かやりたいなぁ。リモート参加で。
Gaucheのリファレンスはところどころ [R5RS] とか [srfi-13] としか書いてないところがあるので、 そこのリファレンスを埋めるというのはどうだろう。
2007-07-14
■ [ruby] Ruby勉強会@関西-17
木曜にWikiを見たらオープンセッションの数が半端(3つ)だったので、突発的にHpricotのデモをしてきた。ちょっと時間オーバーした。反省。
資料はあとで。
懇親会のあとは喫茶店でのスタッフミーティングに参加した。 小波先生から「最近、内容がどれも難しすぎる」という意見が。小波先生の意見というより、 京女のゼミ生*1の感想だそうだが。
Ruby勉強会@関西は上級者同士の交流はもちろんだけど、それ以上に全くの初心者にRubyを触れてもらうという 目的を担っているので、少なくとも1つは初心者にわかる講座がないといけない。 その他に、内容は理解できなくても「Rubyでこんなこともできるんだー」という雰囲気を味わってもらえるものがあるといい。
現状では初心者枠はokkezさんの「Ruby初心者レッスン」に頼りきりなので、それ以外にも初心者枠の 講座があってもいいかもなぁ、とかいう話をした。
体験重要。
- Railsでなんかつくる講座。慣れた人が5分でできるくらいの内容が丁度良いらしい。
- Ruby/SDL(というかMyGame)でなんかつくる講座。本も出たことだし良いタイミング?
- Hpricotでなんか解析する講座。もしくはMechanizeでGoogle検索とかそういう。
- RubyでWaveファイルを作って音を鳴らす講座 (KMCの春合宿でやった。)
「慣れた人で5分」を考えると最後のはちょっと重いな。るびまの記事にできるかなぁ。
えーと、何が書きたかったかというと、初心者向けの講座は難しいということ。 普通の発表(今日みたいなライブラリの紹介とか)なら自分の知ってること(調べたこと)をそのまま話せば良いけど、 初心者向けにしようと思ったらRubyそのものの基礎知識から話さないといけないので。 普通のプレゼンとは別物と考えた方が良さそうだ。
あとオープンセッションはなかなか良かった。注目度が半分になるので発表側としても気が楽だし。 新しく発表にチャレンジする人が増えると良いな。
*1 自主参加、Rubyはほとんどはじめて
2007-07-15
■ [tDiary] hatena_star.rb
http://s.hatena.ne.jp/essa/ を見てようやくどういうものか分かったので、tDiaryに はてなスタープラグインを入れてみた。
ルール
- ★を付けられるのははてなユーザーのみ
- 「これは良いエントリですね」と思ったものに★を付ける
- ★を付けたエントリは http://s.hatena.jp/(自分のアカウント)/ に載る
- あとメッセージを送ったりもできるとかなんとか
2007-07-16
■ [scheme] ちょwwwGooglewww
LingrのGaucheのチャットルームには、ときどき何の部屋か分からずに迷い込んでくる外人さんがいらっしゃるんですが…。
http://www.lingr.com/room/gauche/archives/2007/07/17
7/17 2:31am : ritus : Hi, I work with Google and looking for Japanese individual interested in working with Google in Tokyo. I am looking for someone with consulting/marketing background and programming/scripting skills. The location of the Google office is in Tokyo's Shibuya business area. If you know of anyone please feel free to forward my contact information. 7/17 2:31am : ritus : Ritu Singh 7/17 2:31am : ritus : ritus@googe.com 7/17 2:31am : ritus : sorry the email is ritus@google.com 7/17 2:56am : shiro : ritus, add this to your company policy: Do not spam.
ネタなのかガチなのか分からんが、shiroさんの冷静な対応にワロタ。
あと、わざわざGaucheの部屋に来てマーケティング担当を探すのはどうかと思った(なんでソフトウェアエンジニアじゃないんだ)。
2007-07-18
■ [haskell] モナドについてなんか分かった気がした
モナドって「結局何なの?」ってのがいまいち分からずにもやもやしてたんだが、なんか分かった気がしたのでメモ。
関数型言語では値が関数から関数へと流れていくことで計算が行われる。 このプロセスに「一皮被せる」ことで、計算の本筋とは別にいろいろな「仕掛け」を組み込むのがモナド。
値 a をただ流すんじゃなくて、Maybe a のようにモナドという箱に入れて、箱に入ったものどうしの演算を定義することで仕掛けを作る。 Haskellでは、モナドを「returnとbind(>>=)というメソッドが定義されている型」で表す。returnは値を箱に入れる関数。>>=は値を流す関数。
class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a
returnの型は「a -> m a」のようになっている。生の値(a)を取って、箱に入った値(m a)を返すことが分かる。 (mはMaybeとかStateとか、モナドの種類を表す) >>=の型は「m a -> (a -> m b) -> m b」なので、箱に入った値(m a)を適当な関数(a -> m b)に食わせて結果を箱に入れる(m b)ということが 分かる。>>=に渡す関数の型は(a -> m b)なので、引数は生の値だけど返り値は箱に入れないといけないことが分かる。
箱に入れられた値がベルトコンベアを流れていて、それを監視員の人がチェックして 処分したり入れ替えたり整理するようなイメージ。
/ \ / _ノ ヽ、_ \ / o゜⌒ ⌒゜o \ (また明日からモナドの値をチェックする仕事がはじまるお…) | (__人__) | \ ` ⌒´ /
でもって、これを複数の値を同時に扱えるように拡張したのがArrow。
ということで合ってるんでしょうか先生。
残りの疑問:
- なんで箱に入れる関数がreturnという名前なんだろう
- モナドと副作用(IOとか)の関係
- 「圏」ってやつとモナドの関係 (「群」までは授業で習ったんだが、それ以上は…。)
モナドのすべて - Enjoy Programming を読みつつもう少し考えてみよう。
■ [haskell] ちなみになんで唐突にモナドの話をするかというと
id:r-westさんの日記に触発された。
モナドの解説といえばモナドのすべてが一番有名だと思うのだけど、 これは難しい。読もうとしてもう3回くらい挫折している。 で、これの読解ログが こちらのWikiに 書かれてて、これは読みやすい。とても有難い。[☆+]ボタンがあったら連打してたところだ。
あと、「MonadやArrow=値を流すための機構」と考えたら、HaskellでのReactive Programming(FRP)にArrowを使うのがすごく納得できた。 FRPの仕組みを実装するためには「この値が変化したらこいつらに通知する」という連鎖反応のグラフ構造みたいなもんを 用意しないといけなくて、じゃあArrowがぴったりだろ?という。
2007-07-24
■ [prog] ICFP Contest 2007
絶望した!関数型言語の学会なのに副作用バリバリの設問に絶望した!
というかHaskellに不利な設問にしたかったとしか思えない。もちろん真のHaskell使いはこれくらいものともしないと思うけど、 そもそも速度のチューニングを要求される点で上級でないHaskellerは苦労したんじゃないかな。と勝手に想像。
僕はdnaのインタプリタをSchemeで作りかけたんだけど、別の用事で参戦が遅かったこともあってどうみても時間が足りませんありがとうございました。 てか問題文が長すぎるというか入口までがどんだけ遠いんだと。
あと俺は設計で迷ってる間にまず最後まで実装してみるべきだと思った。
■ [event] 夏のプログラミング・シンポジウム2007
いきたかったなー。
というか応援演説で応募するつもりだったのだが、締切前に急性やる気失調症候群に罹患して諦めざるを得なかった。
まぁ、応募したとしてもBefungeとかを選ぶ予定だったんで、通ってたかどうかは疑問だけど(笑)。
Befungeとは別にWierdというもの凄く(Brainf**kの8倍くらい)シンプルな言語があって、それとBefungeとどっちにしようか迷った。
このへんのいわゆるesoteric languageに関するWikiとか立ち上げようかなと思ったこともあるんだけど、需要あるんだろうか。
■ [prog] ICFPの感想リンク集を作りました
どうぞご利用ください。
上から順に読んでいくだけで参加したような気分になれること請け合い(嘘)。
しかし読めば読むほど「どんだけギミック仕込まれてるんだ!」という思いが深まりますな。 「横幅 16 カラムで DNA を見るとアスキーアートで文字が」とか。 ドイツ語になるやつが面白かった。
全てのネタが解析されるまでにどれくらいかかるんだろう。
2007-07-31
■ [prog] 50音から始まるプログラミング言語
プログラミング言語の名前を五十音順に並べてみました。びわこ開発合宿のときに作ったのを忘れてた。
聞いたことねーよ!っていうのが結構あるかと思いますが、その辺は http://99-bottles-of-beer.net/ から拝借しました。
あと「が」「ぎ」「ご」「ざ」「ず」「つ」「ぬ」「へ」「を」「ん」が埋まってないので、夏休みの自由研究で自作言語を作ろうと思ってる人はぜひ これらから始まる言語名にしてみてください。
■ [softs] Firemacs
firefoxをemacsキーバインドにする拡張。
C-aもC-eもC-pもC-bも使えるよ!すげえ!
C-space (Mark set)も普通に使える。
以下コメント欄より:
firevimとかもあるのかなぁ…
Vimperatorというのがあるようです(試してないですが)。
C-v でペースト出来ないことに違和感を感じて外してしまいました
確かに。設定でなんとかできないのかな。
Windows なら XKeymacs なんてのも
Windowsは窓使いの憂鬱を使ってます。
□ dan5 [初心者向け興味あります!ってどこに言えばいいんだろう……]
□ yhara [おおっ!? もしも関西にいらして頂けるのであれば講座枠は確保できますよ(「あのRubyゲーム本の著者来たる!」みた..]
□ dan5 [スケジュールのあう日があれば是非参加させていただきたいです]