毎度参加させていただきありがとうございます。
Vol.11 に初参加だったGenesis Lightning Talks。いつの間にかもうVol.16にまでなっていたのですね。
今回のお題は「笑い」。
とはいえ自分的にはそれにマッチする話題はなくて、ただそろそろワンライナーについて語ってみたい、という想いがあったので、「まぁ少し笑いどころを仕込んでおけばあとは好きなように語っていいかな」ということで半ば無理矢理な形でワンライナーのネタを喋らせていただきました。
発表資料はGenesis Lightning TalksのWikiページにUPさせていただきました。
http://wiki.somethingnew2.com/lt/index.php?plugin=attach&pcmd=open&file=Genesis200905.txt&refer=Events%2F2009%2F05
文字コードはEUC-JPです。
今回、初の試みで「ターミナルでのプレゼン」に挑戦してみました。
ターミナルでプレゼンをするためのモジュール「Term::Presentation」については、以下のブログで紹介されています。
livedoor Techブログ : ターミナルでプレゼンテーション
/lang/perl/Term-Presentation – CodeRepos::Share – Trac
CodeReposからチェックアウトしてインストールして、発表資料のあるディレクトリで
perl -MTerm::Presentation -e 'Term::Presentation->new("Genesis200905.txt")->presentation'
と実行。プレゼンテーションが始まります。
普通のTerminal.appで、フォントをMonaco 64 pt.にし、32×8のサイズで実行しました。それ以外の環境でどうなるのかは確かめていないので知りませんw
一応発表した内容をそのままコピペすると。
よいこの たのしいワンライナー Genesis Lightning Talks 2009/05/23 id:sugyan -----key 自己紹介 -----key すぎゃーん sugyan -----key (たぶん) プログラマー -----key 今日のテーマ: -----key ワンライナー -----key ワンライナーとは (別名:一行野郎) -----key 一行で書くプログラム -----key perl -e 'print "Hello World!\n"' -----key コマンドラインでプログラムを実行 -----key 一行で色々なことができる! -----key PerlたのしいよPerl -----key Perlワンライナー -----key Perlワンライナー -様々な文法が柔軟に使える -----key Perlワンライナー -様々な文法が柔軟に使える -モジュールが豊富 -----key Perlワンライナー -様々な文法が柔軟に使える -モジュールが豊富 -Ruby知らない(ごめんなさい) -----key ワンライナーの紹介 -----key 素因数分解ワンライナー perl -e'print$b,($a/=$b)-1?"*":$/while$b=(grep!($a%$_),1..($a||=pop))[1]' -----key シェルピンスキーのギャスケット ワンライナー perl -le '$x=2**pop;print$"x--$x,map$x&$_?$"x2:"/\\",0..$y++while$x' -----key 美人画像取得ワンライナー wget -w5 --random-wait http://****/{00..23}{00..59}.jpg -----key 16進数ワンライナー perl -e'@s=("%02X")x16;printf"@s\n"x16,0..255' -----key 順列生成ワンライナー perl -le'sub p{my($m,$e,@r);$m=shift||return[];$e=$_,push@r,map[$e,@$_],p($m-1,grep!/^$e$/,@_)for@_;@r}print join"",@$_ for p(shift,@ARGV)' -----key フィボナッチ数ワンライナー perl -le'print$"=($a+=$")-$"for++$a..pop' -----key 17歳教ワンライナー perl -MDate::Calc=:all -e'$ARGV[0]+=17;printf"17歳と%d日$/",Delta_Days@ARGV,Today' -----key wwwワンライナー perl -le 'print "w"x(1+rand 24) while <>' -----key 人生、宇宙、すべての答え ワンライナー perl -le 'print 42' -----key 続きはwebで http://d.hatena.ne.jp/sugyan/ searchdiary?word=*[OneLiner] -----key -----key ところで -----key これって ワンライナーでやる必要あるの? -----key ない -----key 普通にスクリプト書けば いいと思います! >< -----key ワンライナーを書くべき たった3つの理由 -----key ワンライナーの利点 その1 -----key ソースコードを ファイル保存する必要が無い -----key エディタで開く -----key エディタで開く ソースコード編集 -----key エディタで開く ソースコード編集 ファイル保存 -----key 全部不要! -----key 気軽にプログラミングできる -----key ワンライナーの利点 その2 -----key 頭の体操になる -----key かも -----key ワンライナーの利点 その3 -----key Twitterに晒せる -----key -----key 結論 -----key ワンライナーで くだらないプログラムを 書こう -----key enjoy one-liner !! -----key
資料を作りながら考えていたこと。
「なぜワンライナーを書いているのか?」
「ワンライナーを書くメリットは何?」
ということ。
プレゼンでは
- ファイル保存する必要が無い
- 頭の体操になる
- Twitterに晒せる
という3点を挙げてみたけど、まぁ大した利点じゃないっすよね。
そもそも自分がワンライナーを書き出したきっかけは何だったんだろう、と思い返してみると、おそらく最初は「焼肉屋選択ワンライナー」かな。
焼肉に行こうと思ったものの優柔不断でお店を選べなかったので、ランダムでお店を選ぶワンライナーを作ってWassrに晒してみた、というのがきっかけだった気がする。
「伝説の焼肉」の作り方 - すぎゃーんメモ
その後、「素因数分解ワンライナーってどこかにあるのかな」とふと思って調べたら見つからなかったので自分で作ってみてTwitterとかで晒してみたりしてみて、
そんなことしているうちに少し興味を持って下さった方が出てきて、なんだか面白くなってついついハマってしまった、というカンジだったはず。
あとは何だろう。「ワンライナーを自分のアイデンティティにしよう」という想いもやっぱり強いのかな。
Perlは面白いと思いつつも全然すごいプログラムが書けるわけでもなく、でも何か書きたい、と思って、じゃあワンライナーだ、みたいな。
大したことないプログラムは、普通に書けば書けるヒトなんていくらでもいるので、普通に書いていては面白くない。
ワンライナーならそれほど書いているヒトいないから差別化が図れるかな、的な。
まぁあとは純粋にワンライナーが楽しいから、というのが。
いかに短く書いて目的を達成するか、というのを考えていると色々工夫したり考えたりするし、言語の仕様に対する理解もある程度は深まったと思うし。
でもまぁやっぱり結論としてはワンライナーなんかじゃなくてマトモなプログラムを書けるようになるべきなんだよな、と。
そんなことを思った今回のLTでした。