第2回関西アンカンファレンスで zsh の記号プログラミングについて発表した

2010年1月8日に神戸で第2回関西アンカンファレンスが開催された(告知ページ)。僕は zsh が大好きなので「zsh で記号プログラミング」というタイトルで発表した。

発表内容

内容は zshHello world をアルファベット、数字を使わずに記号だけで書くというもの。資料は slidesahre で公開してる

動画もとってもらった。
http://youtube.com/watch?v=BBLFVkTCq6Q
動画の撮影、編集をしてくれた @ さん、ありがとうございました。

ソースコード

ソースコードはこんな感じ。

:
__=$?
((___=!__))
((____=___+___))
((_____=____+___))
((______=_____+___))
((_______=______+___))
((________=____*_____))
((_________=________+___))
((__________=____*______))
((___________=_____*_____))
____________=$(% |& >& $___)
$____________[-$______]$____________[-$____$____]$____________[-$_______]$____________[-$___$_________] "\\$__$___$___$__\\$__$___$______$_______\\$__$___$_______$______\\$__$___$_______$______\\$__$___$_______$_________, \\$__$___$________$_________\\$__$___$_______$_________\\$__$___$________$____\\$__$___$_______$______\\$__$___$______$______!"

こいつを実行すると ...

% zsh hello.zsh
Hello, world!

無事 Hello world が出力された。

コメントを入れて読みやすくするとこんな感じ。

# 0から9までの数字を作る
:
__=$?                       # 0
((___=!__))                 # 1
((____=___+___))            # 2
((_____=____+___))          # 3
((______=_____+___))        # 4
((_______=______+___))      # 5
((________=____*_____))     # 6
((_________=________+___))  # 7
((__________=____*______))  # 8
((___________=_____*_____)) # 9


# 以下のエラーメッセージを変数に代入する
#   kigou.zsh:fg:1: no job control in this shell.
____________=$(% |& >& $___)
# 省略せずに書くと以下の通り
# ____________=$(% 2>&1 | cat >& 1)

# 末尾から 4, 22, 5, 17 文字目をつなげると echo になる
# $____________[-4]$____________[-22]$____________[-5]$____________[-17]

# "Hello, world!" の文字列は
# \0NNN 形式の8進数 ascii コードで表現する
# echo "\\0110\\0145\\0154\\0154\\0157, \\0167\\0157\\0162\\0154\\0144!"
# , スペース ! は記号なのでそのまま書く

# 数字を $__ など最初に作った変数に置き換える
$____________[-$______]$____________[-$____$____]$____________[-$_______]$____________[-$___$_________] "\\$__$___$___$__\\$__$___$______$_______\\$__$___$_______$______\\$__$___$_______$______\\$__$___$_______$_________, \\$__$___$________$_________\\$__$___$_______$_________\\$__$___$________$____\\$__$___$_______$______\\$__$___$______$______!"

zsh らしいスクリプトになったと思う。

感想

僕以外の発表一覧は 第2回関西アンカンファレンス セッション一覧 にまとめられてる。

おもしろい発表がいっぱいあったけど、特によかったのは以下。

非デザイナーがデザイナーっぽい思考をするためのツボ
デザインの話大好き
Googleで始めた風評調査
生々しい
Gmailはショートカットでサクサク使おう
快適そう
美味しそうな写真の撮り方
おいしそう

JavaScript とかのプログラミングの話ももちろんいいんだけど、デザインとか写真とか他の勉強会ではなかなかない話が聞けるところがアンカンファレンスの魅力だと思ってる。

僕も好き勝手に話できるので発表するのを楽しんでます。

最後に

今回の関西アンカンファレンスはいろんな人の協力のもと成り立ってる。

  • 会場を提供してくれた兵庫県立大学神戸キャンパスの皆様
  • 僕のマシントラブルの際に Mac を貸してくれた @msng さん
  • スタッフの皆様
  • 発表してくれた皆様
  • 参加者の皆様
  • 今回の発表のきっかけを作ってくれた 記号プログラミング Advent Calendar の皆様

楽しいイベントになりました。ありがとうございました。