Genesis Lightning Talks vol.16 に参加してきた

毎度参加させていただきありがとうございます。
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でした。