2008年2月アーカイブ



ITmedia Biz.IDの『Weekly Top10』にて、『ねみんぐ!』に関して取材を受けた際の発言が取り上げられていた。



「初めてのお遣いに行ってこい。でもそこの角、曲がったら怖い犬がたくさんいるとさんざん脅して、誰がお遣いに行きたいと思いますか」


 これは15歳の草野翔さん、17歳の安野貴博さん、同じく倉世古恭平さんのインタビューに同行した筆者にとって、とりわけ印象的に残った発言だ。終始、和気あいあいとインタビューが進むなか、唯一シリアスになった場面だったと記憶している。


Biz.ID Weekly Top10:つい初心を忘れがちなあなたに贈る言葉 - ITmedia Biz.ID

これはid:rosylillyによる発言。同様の主張は『初心者いじめもほどほどにしてください。 - ばらゆりてちよう』や続く数日間のエントリのうちいくつかでも述べられている。仲間内で集まって話しているときにも、たびたびこのことを話題にする。彼にとってのテーマみたいなものになっているようだ。


この意見については僕も同意。セキュリティの観点からみて脆弱なシステムは確かに良くないけど、初心者がその実力を磨くためであれば許容されてしかるべきことだと思う。実際のところそうしたシステムは(ねみんぐを例に挙げるまでもなく)数限りなく存在するし、ある程度問題なく稼働しているはずだ。


そして、そういったシステムを構築するプロセスで開発者が得た経験値たるや、机上の学習で得られるそれとは指数の桁が違う。


「何かひとつ、動くものを発表できた」という事実は、主観的に見ても客観的に見ても大きな功績だ。それがいかになんの役に立たないものであっても(というと少々自己弁護が含まれるけど)。


だから経験値を得ることを目的とするなら、そういった「穴のある」システムを作り上げることに罪はない。


そしてここからが重要なので、ここまで読んだのであればぜひご一読いただきたい。というのは、上記記事での記述のみを考えれば、ただの甘えにしかならないからだ。


確認したわけじゃないけど、id:rosylillyid:lonlon2007も、同じ見解を持っていると思う。違えばお知らせください。


つまり、経験値を目的とするなら、あらゆる点について叩かれて然るべき――ということ。


セキュリティでも、実装や性能、なんならコンセプト自体についてでもいい。どこかしらの点で突っ込みを受けることは仕方ない。当たり前のことだ。


そのとき、初心者は怖気づいたり、ひるんだり、ヘコんだりしないでほしい。上記記事でも述べられているけど、その指摘はあなたを思ってのことであるはずだ。もしそうじゃなかったとして、悪意のある言葉だったとしても、たいていのことは自分のこれからの行動に活かすことができる。言葉の形は違っても、指摘や意見というのはすべてアドバイスを考えられる。


「才能ないよ」とか「やめちまえよ」とか言われても、そんなことさせる権利なんて誰にもない。どれだけ技術を磨いてもそんな権利は手に入らないはずだ。だからあらゆる言葉は、ちょっと変わった形の自分へのエールだと思ってほしい。そしてその内容をぜひ省みて欲しい。


そうすることで、一歩先を走る未来の自分の背中に少しでも追いつけたら、そんなに幸せなことはないんじゃないかな。


自戒も込めて。




id:amachangが、デブサミ2008で行ったプレゼンでのJavaScriptについてのスライドをブログで公開していた。


その中で、JavaScriptの持つ僕のまったく知らない側面が取り上げられていて、驚いたというか、感動に近いものがあった。昔の女子高生さながらに「ありえない」という単語が思い浮かぶばかり。


Developers Summit 2008 の資料を公開します。 - IT戦記


興味を惹かれた部分を引用させていただくと、以下のとおり。



言語としてのJavaScript


  • 初心者向け言語

  • オブジェクト指向言語

  • プロトタイプベース言語

  • 関数指向言語


no title

さらに特定すると、



  • オブジェクト指向言語

  • 関数指向言語


の部分。


JavaScirptがオブジェクト指向機能を備えた言語だというのは知っていたのだけど、これほど徹底されたものであるとは思いもしなかった。たぶん、俺の中でのJavaScriptのイメージは最初に触った頃から変わってなくて、その最初に触ったタイミングというのが悪かったのだろう(独自拡張的な意味で)。ときどき耳にしてJavaScriptのことが気になることが度々あったけど、今回のことでガラッとイメージが変わったと思う。好きになった。


特に驚いたのは次の部分。




document
[ 'getElementsByTagName' ]
( 'a' )
[ 0 ]
[ 'appendChild' ]
( document
[ 'createTextNode' ]
( 'リンク' ) )

no title


このコードを見て「まるでLispみたい!」という感想を持つ人は少なくないはず。これがまったく問題なく動作するという。きれいな括弧してるだろ...JavaScriptなんだぜ、これ...


そして、ちょっと本題と逸れた興味の惹き方をされたのが、JavaScriptの関数型言語的側面についての記述。


色んな人から関数型言語をやってみたほうがいいと言われたことをうけて、Scheme, Erlang, Haskellをちょっとずつやってみてる。id:amachangもHaskellをやってることに最近気づいたのだけど、もしかしたら彼がHaskellする理由はここにもあるのかも?


jQueryについても興味を感じるのがわかった。今までJavaScriptにライブラリがあることすら知らなかったのだけど、こんなに快適そうなものがあるならぜひ使ってみたい。



口頭で説明した個所も多い


Developers Summit 2008 の資料を公開します。 - IT戦記

という。当たり前といえば当たり前だけど...プレゼン観たかったなあ。


とか悔やんでもしかたないな。来年はしっかり予定立てて、デブサミ行きたい!それができるように、今年精一杯がんばらないと。




id:rosylilly, id:lonlon2007ともに既に取り上げているみたいですが、3人でITmediaさんの取材を受けてまいりました。先日東京ではてな、サイボウズ両者にお邪魔したのも、この機会を利用してのものです。



「あ、そういえば、あれ言わなくていいの?」。取材も終盤にさしかかるころ、草野さんが安野さんをつつく。「え? あ……あ、彼女募集中です!」。続けて草野さんは、涼しげな顔をした倉世古さんを指さして言った。「あ、こいつは”リア充”ですから。関係ないです」。なんとも(笑)、高校生だなぁ……。


ひとりで作るネットサービス:【番外編】「高校生がもっと出てきてほしい」――「ねみんぐ!」を作った現役高校生3人組からのエール (3/3) - ITmedia Biz.ID

なんだかリア充扱いされてしまった俺ですが、そうでもないのでよろしくお願いします(ぇ


記事の最後に、みんなの持ってるアイテムの写真が掲載されています。その中にケータイも含まれているのですが、ウサギが異常に浮いてしまって恥ずかしいです。外しておけばよかった……


あと、もし今回の記事で僕(たち)に興味を抱いてくださった方で、「いっしょにやろうよ!」的な気分になった方は気軽にメールでもメッセでも声をおかけいただけると幸いです。基本的に暇な子で友だちも少ないので、たいてい喜ぶと思います。




前々から関数型言語が気になっていたので、Erlangを使いはじめてみる。


関数型言語はまったく経験がなく(xyzzy lispをちょっと書いたことがある程度)、勝手がわからないので、



新しく言語を覚えるときはこの練習問題をしましょうね


新しくプログラミング言語を覚えたいときに行うべき10の練習問題 - IDEA*IDEA ? 百式管理人のライフハックブログ

ということなので、とりあえず前半5問やってみました。6問目以降は来週のプログラミングの授業でやろうと思います。


1. なんらかのカウントアップメッセージを1から100まで出すけど、3のときだけアホになる!(例:1万円!2万円!しゃ~ん万円!とか)



-module( tutorial).
-export( [countup/1]).

%% 誰もいないとき
countup( N)
when( N == 0) ->
false;
%% 3人なのでアホになる
countup( N)
when( N == 3) ->
countup( N - 1),
io:format( "~p人だね!こっちおいで!~n", [N]);

%% 平常時
countup( N)
when( N > 0) ->
countup( N - 1),
io:format( "~p名様ですね、こちらへどうぞ!~n", [N]).

アホになったというか、くだけた感じになっただけになっちゃいました。本物のアホはアホを演じることはできないようです('A`


最初のクローズの、Nが0であるときの処理はこんな感じで良いのでしょうか。出力しないのでfalseを返しましたが、よりよい形式がありそうなので教えて頂けると嬉しいです。


2. 現在時刻にあわせてやる気のでるメッセージを出力(例:もうすぐランチ!がんばれ!)。



what_time() ->what_time() ->
{_, Time} = erlang:universaltime_to_localtime( erlang:universaltime()),
{Hour, _, _} = Time,
good_message_of_hour( Hour).

good_message_of_hour( Hour) when( Hour < 4) -> io:format( "深夜だよ!夜更かしは体に悪いよ。~n");
good_message_of_hour( Hour) when( Hour < 8) -> io:format( "おはよう!早起きだね、もしかして寝てないでしょ?~n");
good_message_of_hour( Hour) when( Hour < 12) -> io:format( "もうすぐランチ!がんばれ!~n");
good_message_of_hour( Hour) when( Hour < 16) -> io:format( "おやつの時間までもう少しだよ!~n");
good_message_of_hour( Hour) when( Hour < 20) -> io:format( "そろそろ仕事も終わりだよ!お疲れさま!~n");
good_message_of_hour( _) -> io:format( "ぼくはもうねるよ!おやすみなさい。~n").

かなり適当な感じ。毎時間ごとに書きたかったけど、コード量が肥大化しそうだったので3時間ごとで済ませた。8時の時点でランチを見据えるのは少々気が早いか。


出題の意図どおり、時間を取得するAPIを探すにあたってErlang付属のドキュメントを調べ、だいたいそこを探せばなんとかなりそうなことがわかった。


3. 複数の数値を入力させ、昇順に並び替え、最大値と最小値を出す(例:同僚の体重を入力して計算)。



how_long( List) ->
lists:sort( List),
io:format( "最大身長: ~pcm~n最小身長: ~pcm~n", [max( List), min( List)]).

max( [X])
when is_integer( X) ->
X;
max( [X|List]) ->
case X > max( List) of
true -> X;
false -> max( List)
end.

min( [X])
when is_integer( X) ->
X;
min( [X|List]) ->
case X < min( List) of
true -> X;
false -> min( List)
end.

これはむしろソートを書かせる問題だったかも?それはそれで、改めてそのうちErlangでの実装に挑戦してみようと思う。


最大値・最小値の取得ももっとキレイで簡潔な書き方があるはず。精進します。


4. 簡易電卓。0で割ったときの処理を自分なりに作りこむ。



calc( Stat)->
Statment = lists:reverse( Stat),
exec( Statment).

exec( [Opc,Opr|List]) ->
case Opc of
ad -> exec( List) + Opr;
sb -> exec( List) - Opr;
ml -> exec( List) * Opr;
dv -> exec( List) / Opr
end;
exec( [X]) ->
X.

逆ポーランド記法のリストを渡すと動作する。演算子は文字で入力できるようにしたかったけど、ASCII値と被るのでアトムにした。古いアセンブラっぽくなった。0で割ったときのエラー処理は処理系まかせに。


5. キーワードを入れてYahoo!の検索結果を出力。



web_search( Word) ->
inets:start(),
{ ok, { _, _, Body}} = http:request( lists:append( "http://search.yahoo.co.jp/search?p=", Word)),
io:format( "~s~n", [Body]).

http:requestが動かず、ファイアヲール辺りが悪さしてるのかなーと思ってたら、以下のような記事が。


erlang - ghidenの日記


上記事のコメントに解決策を発見。inet:start()を実行してからでないとダメらしい。「『関数型には副作用がない』は幻想」とは聞き知ってたけど、ちょっと夢を壊された気分です(なんとまあ


……これはさすがに、HTTPリクエストを書かせる問題というわけではないですよね?(・ω・`




というわけで、東京で楽しく過ごしてまいりました!


id:rosylillyに倣って



  • はてな社見学

  • サイボウズ社見学


な感じの順で、2日に分けて書こうと思います。


まずははてな。


はてな社にお邪魔するに至るいきさつなどは『はてなに遊びにいかせて頂きました - 大学生超奮闘記』にあるとおり。Lillyによる突然のメールにも関わらず快く許可してくださいました。id:lonlon2007の言葉を借りれば「どこの馬の骨ともわからない」高校生3人組に対して、驚くほど広い懐を以って対応してくれたこと感謝します。


リハーサル


10分ほどの時間を使ってプレゼンをさせて頂けることになっていたのですが、この貴重な機会にトチったらあまりにも残念なのでリハーサルをすることにしました。Lillyと僕の宿泊しているホテルに、朝7:30にlonlonさんがやってきて、餃子のことについて雑談してからリハーサルを開始することに。


とりあえず手っ取り早く緊張感を出そうということで、カメラでの撮影を敢行。聴衆を再現した形になったと思います。僕がひとりで緊張してただけかもしれません(笑


構成をいくらか変更して、喋る順番の決定、スライド変更タイミングの打ち合わせなど。


時間が10分にまったく収まらなかったのがちょっと不安でしたが、「なんとかなるだろう」と10:30頃に撮影を停止し、はてなへの移動を開始。


近藤社長、川崎副社長とのお話


XNAとかXbox360とかな話をしながら、はてなに到着。


会議室に通されて、id:jkondo社長・id:kawasaki副社長とお話させていただきました。


はてなを起業した当時に人手が足りなかったこと、IT企業の代表的なスタイルのこと、複数人で動くなら2,3人に分割したほうがスムーズであることなどや、『はてなに遊びにいかせて頂きました - 大学生超奮闘記』にもあるはてなハイクが生まれるまでの経緯などをお話いただきました。社長と副社長の喋るタイミングがすごく絶妙で驚いたのですが、打ち合わせとかしてるんでしょうか。


あと、個人的に部活のことで悩みがあったので、この機会に相談しておいた。


例えば誰か(立場的に上の人)に「こういうの作って」とお願いされて、でもそれが自分の作りたいものと違うときはどうしたらいいのか。別にどうしても断われないわけじゃないけど、実行すればメリットがあるし、そうでなければデメリットがある。それでも自分の作りたいものとは違う。


僕はこれに対する答えを見つけられずにいたのですが、近藤社長の答えはこう。



「こういうの作って」の「こういうの」にはその人が達成したい目的が何かある。提案された「こういうの」が気に食わなかったら、目的のほうを捉えて、それを満たすもっとスマートなものを作って持っていけばいいはず。



そうすれば僕も提案者もどちらも幸せになれる。確かにそうだ。僕がバカなだけかもしれないけど、こういう発想はいつもすごいと思って感動してしまう。


また、そのときに重要なのは「さっさと作ってしまう」ことだそうだ。


アイデアは言葉だけでは伝わりにくいという。言葉は自分の脳を走る電気の一側面しか伝えてくれない。


それに対して実際にできたものは、目に見えるし、触って動かせる。アイデアを手っ取り早く、かつ確実に伝えようと思ったら、プロトタイプを作ってしまうといいそうだ。(あと、改めて考えると僕が元々の提案の真価を理解できていないだけかもしれない)


「プレゼン始まるよー!」


感動でほぐれた緊張は、はてなオフィスに足を踏み入れると同時に戻ってきた。リハーサルはしたものの、失敗したらどうしようと思うと自然と汗が出る。でもその緊張も長く続くことはなかった。


ディスプレイにLillyのノートを接続して、プレゼンの準備が終わった頃、オフィスに呼びかけがかかった。


「プレゼン始まるよー!」


本当に一字一句違わず印象的に覚えている。はてなはアットホームな雰囲気の会社だ、ということをよく耳にするけど、このときにそれを最も強く感じた。どう言葉で表現していいのかわからないけど、プレゼンテーションがまもなく開始であるという情報をこれほどイイカンジで通達できる言い回しはないだろう。僕も将来使おうと思います。


プレゼンの間もずっとテンポのいいツッコミを入れてもらえたり、面白いリアクションを頂けたり、プレゼンってこんなに気持ちいいものだったのかとちょっと驚きました。


プレゼンが終わったあと、「人前で喋るのに慣れてる感じがするね。イマドキの高校生ってみんなそうなの?」と嬉しい言葉をいただきましたが、たぶんとんでもない、はてなの雰囲気のおかげです。


炊き込みご飯と豚汁


プレゼンが終わったあと、お昼ご飯に炊き込みご飯と豚汁をごちそうしていただきました。噂(?)どおりすごい美味しかったです。


ご存知の方も多いと思われますが、はてなでは毎週水曜日にお昼ご飯を支給していっしょに食べているそうです。ディスプレイに向かって数時間喋らないなんてザラな仕事柄、無理にでも喋る機会を持とうという試みとのこと。


ちなみに今回伺ったのは火曜日でした。特にそのようなことは伺えなかったのですが、たぶんわざわざ一日ズラして頂いたのだと思います。ありがとうございました!


最後に、緊張から解放された反動でしょうか、プレゼン中に「ランチのときに答えを伺いたいです」って言った話を訊くのを完全に失念してましたorz




東京に遊びに行ってて、今さっき帰ってきました。


全篇オールナイトな感じですごい楽しかったです!


色々スキトキメキトキスなことがたくさんあったので、とりあえず一日経って落ち着いたら詳しく書こうと思います!


p.s.


帰ってきたらタイピング速度がものすごい遅くなってたんですが、東京っていうのはそういう場所なんでしょうか




このところ、一日に一冊本を読むという俺にとっては無謀な試みを実行していて、ときどき書評じみたものを書いたりしてる。


してるんだけど、この書評を書くという行為がえらく時間がかかる。時間がかかるわりには面白くなくて、かつ書きあがった書評も大して面白くない。たぶん文章を書くのは好きなだけで得意じゃないんだろう。


というわけで、書評を文章で書くという考えを捨てようと思う。


文章以外に書評というコンテンツを表現する方法として、以下の3つを考えた。



  1. グラフ化

  2. プレゼン

  3. 4コマ漫画


id:rosylillyに相談したところ、4コマ漫画はない、とのこと。明らかに体力が続かない。自分でもそう思う。毎日描ける気がしない。文章で書くよりひどいだろう。


曰く、プレゼンが良さそうとのこと。


そしてプレゼンであればグラフ化との併用もできる。というかプレゼンはグラフ化を含む。


そういうわけでこれから書評をプレゼンという形で作ろうと思う。


プレゼンを作るにあたって、S6を使うかGoogleドキュメントを使うか悩んでるところ。


このアーカイブについて

このページには、2008年2月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年1月です。

次のアーカイブは2008年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.32-ja