YAPC::Okinawa 2018 ONNASONの記録

2018/03/03に沖縄県恩納村で開催されたYAPCに参加してきた。
yapcjapan.org

今回はなんと、スピーカーとしての参加。
http://yapcjapan.org/2018okinawa/timetable.html#/detail/10

初めはこの一連の出来事を時系列にまとめようと思っていたのだけど、あまりにもトピックや感想が多すぎて、ちゃんと書こうと思ったら完全に「仕事」になりそうだったので、頭に浮かんだ順に即興的に書いていくことにした。

スライドができるまで

今回、ぼくが発表したスライドは以下。

speakerdeck.com

ただし、当日の発表ではDEMOを多用しているので、このスライドに載っているのは全体の半分からせいぜい3分の2程度。

それは今回のスライドを作るときに強く意識していたことで、発表時にただスライドを読み上げるだけみたいな、紙芝居のように「スライドをめくりながらそれを見て喋る」みたいにはしたくなかった。

理想としては、スライドには見出しだけを列記する。そしてその一つ一つについて、画像なりDEMOなり、あるいは身ぶり手ぶりで説明してく、みたいにしたかった。

だから、スライドだけを見ても面白くもなんともない、現場にいないと(あるいは動画などで発表の様子を見ないと)意味がわからない、そんな感じにしたかったし、それで良いと思っていた。

(実際には、スライドだけを見てもある程度内容を想像できるようになっているとは思うのだけど。ただ事前の方針として、「後からスライドを見る人のために現場では不要な説明を加えたりしないようにしよう」と思っていたということ)

なにしろ今回一番大事にしたかったのは、わざわざ40分もの間ぼくの発表に付き合ってくれる人たちで、その人たちが「うひー、退屈だな」と思わないようにする、というのがほとんど最大のミッションでもあった。

スライドに書かれた文字が読み上げられるだけ、というのはなかなかツライ。大学の授業でもそういう先生が時々いた。
逆に、「その場にいないと得られない情報がどんどん飛んでくる」というのはスリリングで面白い。

だから、構想を練って項目を立てている最中もスライド化のことはなるべく考えず、Keynoteを立ち上げるのも可能なかぎり後に回した。

シャドープレゼンテーション

構想の練り方としては、だからスライドを作りながら考えるのではなく、かといってメモ帳やノート系のアプリを使うのでもなく、とにかく実際に喋ってみた。

頭の中にあるネタを喋りきって、それをすべて録音して、それを自動音声入力でテキスト化して、それをtextlintでざっくり表記統一して、それをプリントアウトして、それを眺めながら紙のノートにパラパラと見出しを書き出して、それを見ながらまた喋る。

これをたぶん3〜4周やった。

とにかく喋る&録音する、というのはシャドーボクシングならぬシャドープレゼンテーションみたいな感じ。

話を聞いている人たちのことを思い浮かべながら(その人たちは皆ぼくの発表に好意的だと設定しつつ)、その人たちに語りかける。

これはちょっとラジオにも近い。目の前にはいない、でもたしかに存在するはずの人々を想像しながら喋っていく。

だからこれは、「ポッドキャスト風ブレスト」とも言える方法で、それをやりながらどんどん構想を煮詰めていった。

ノートにプロットを書き出しつつ構成する、というのも試してはみたのだけど、プロポーザルを見てもわかる通り、ネタがあまりにも多すぎて、まともに精査していたら時間がいくらあっても足りないし、単純にもの凄く疲れそうだった。

その点、とりあえず思うままに喋るだけなら、頭の中はほとんど無意識というか、自動操縦のような感じになって、あまりくたびれずに膨大なアイディアを吐き出せたと思う。

加えて、喋りながら構想を練ると、60分も90分も喋っているうちにどんどん体が疲れてきて、また気分的にも飽きてくるので、この段階でネタの淘汰も進んでいく。

この話、そんなに無理してまで言わなくてもいいな・・みたいなストッパーが自然にかかるというか。

先にスライドを作り込んでからそれを実践するという順番だと、頭で考えた計画に体を従わせる感じになるが、この方法だと先に体の限界を設定しておいて、その条件を考慮しながら構想を作っていく感じになって、より現実的というか、結果的にではあるが、案外効率的だったように思っている。

ミニマルなスライドのメリット/デメリット

初めにブレスト的に、一旦最後まで喋ったときには90分ぐらいかかった。

理想としては、40分の持ち時間のうち、最後に5分の質疑応答を入れるとしたら発表自体は35分に収める必要があるから、ほとんど1時間オーバーしてる。

さすがにこれはまずい、と見出しのメモを見ながらあれこれ削って、やがて70分になり、50分になり、「ここから先は同じ方法では削れないな」と判断したところで、ようやくスライドを作りはじめた。

この時点で全体の構成はほとんど頭に入っていたから、スライドの初稿は1時間もかからずできたのではなかったか。
かなりあっさり最後まで行って、びっくりした。

とはいえ、この段階では上記のとおり、見出し中心の簡素な内容だったから、枚数も少ない。たぶんその時点では20枚ちょっと。

スライドの枚数が少ないと、短時間で作れるし、修正もラクだし、1枚あたりのクオリティも上げられるから、そういう意味ではメリットが大きい。

ただし、そのぶん本番ではスライドをカンペ的に使うことができないから、当日のプレッシャーや負担が大きくなる。
これはトレードオフで、実際ぼくも発表直前まで、本番で内容を全部忘れてしまったらどうしよう? という不安がつきまとった。

スライドの言葉

初稿ができた後は、少しずつ画像を足したり、説明文を補足したりして推敲を重ねた。
これにより、スライドの枚数も、1枚あたりの文字数も増えていった。

その作業をしていて気づいたが、スライドを作りながら物を考えると、「スライドの中の言葉」で思考するようになっていく。
言い換えると、その「スライドの言葉」を使わなければ論理が進まなくなっていく。

「スライドの言葉」とは、普段ぼくらが誰かに直接話しかけるときの「言葉」とはちょっと違って、スライドの中の世界だけで鳴り響く言葉だ。
これを使い始めると、スライド上の文字は加速度的に増殖していく。

その言葉を使うこと自体は悪いことでないけれど、文字数が増えるのは良いことではない。
単純に見づらくなるし、何より前述の「スライド読み上げプレゼン」まで一直線だ。

それはまずい、ということで、そこからまた文字を削ったり、枚数を減らしたり、最大限の抵抗はしたけれど、やはり終盤のまとめに至るあたりでは、そういった説明的な言葉が優勢になってしまった感がある。

いらすとや回避

スライドに文字をなるべく載せない方策としては、DEMOやスクリーンショットを使うこともそうだが、イラストを活用することも考えた。

この点、いらすとやさんに行けば大抵のフィーリングはイラスト化されていて、これはたしかに依存しやすいというか、めちゃくちゃ便利なツールだなと思わされた。

ただ、各所でいらすとやさんのイラストを使ったものを見ていると、中にはハイコンテクストにうまく活用している事例もあるものの、あまり多用すると誰の発表なのかわからなくなるというか、そもそもいらすとやさんのイラストというのはけっこう記名性が高いように感じられるので(匿名的ではないというか)、発表を乗っとられてしまうような危惧があった。

そこで2番めの案として、自分で手書きしてみることを考えた。

具体的には、以前にきしだなおきさんのブログで見た、こちらのような感じ。
d.hatena.ne.jp

さらさらっとルーズリーフのような紙に絵を描いて、そのままポンとプレゼンしている。スゴイ。

しかしどうも簡単には真似できない。ざっと描いてみることまでは出来ても、ぼくだったらその後の推敲であーでもないこーでもないとかえって時間をかけてしまいそうで、今回はそれだけの時間はないな、と思い直して諦めた。

それでふと「あー、これしかないか」と思ったのがGitHubやSlackでもおなじみのemojiを使うことで、ためしにKeynoteに入れていったら、思いのほか効果的だった。🤗

主張しすぎることもなく、かといって地味すぎることもなく、また微妙なフィーリングもそこそこ表現できて、何より簡単に入れたり外したりできる。

おかげで、文字ばっかりの状態に比べて少し楽しげな感じになって、おそらくはそれが奏功してウケた部分もあって*1、ホッとした。

客層とテーマのマッチング

沖縄までわざわざITカンファレンスに行くような人といったら、その時点で大半がエンジニア/プログラマーだろう、とはぼくも思っていた。

にもかかわらず、ぼくの発表は「ノンプログラマーがどうやってプログラミングを役立てているか」というものだったから、客層とマッチしないのでは? という懸念があった。

普通に考えたら、そのテーマから想定される客層というのは、「これからプログラミングを始めてみたいノンプログラマー」であり、その関心はと言えば、「自分がプログラミングを導入したら普段の仕事がどれだけ捗るのか?」みたいなことだろう。

しかし一方で、ぼくの今回の発表の価値というのはそういうところだけにあったのではなく、これはプロポーザルにも書いたことだが、「大半のプログラミング技術に関する情報はプログラマーが発信しているが、ここではノンプログラマーの私がそれを発信する」という点に意味があった。

通常、プログラミングに触れるノンプログラマーは、つねに「教わる側」であり、教わる側は言葉を持たない。

「わからないな」と思ったとき、それは「わからない自分が悪いのだ」と思ってしまいがちだ。

しかし実際には、ノンプログラマーがプログラミングに触れるとき、そこではいろいろなことが起こっている。
わからないのは、「教科書が間違っているから」かもしれないし、「教え方が悪いから」かもしれないし、「カリキュラム(勉強の仕方)が合ってないから」かもしれない。

ぼくはプログラミングを始めたのが38才を過ぎてからで、今では43才になろうとしているから、まあこれは年齢のせいというよりも性格のせいかもしれないが、いずれにせよ、自分の考えを伝えるための言葉を少しは持っている。

だから、変だなと思ったら「変だ」と言うし、しょうもない成果物でも「できた!」と言うし、YAPCトークにも応募する(それも今回で2回め)。

結果的に、普段あまり人々が聞く機会のない発表が実現したわけで、これは誰が聞いても新鮮であるには違いない。

残る問題は、ぼくがそこでどれだけ「純度の高い情報」を提供できるかということで、だからその点には神経を費やした。

もしそこで、ノンプログラマーにも背景がわかるように・・と終始基礎的な話をしていたら(ターミナルの立ち上げ方とか 、Vimの初期設定の手順とか)、一緒に聞いているプログラマーには退屈な時間になってしまうだろうし、かといって専門的な話をしようとしても中途半端になるだけだろう。

だから、とことん「自分が面白いと思ってる話」だけを取り上げることにした。

枝葉的な解説は最小限にとどめ、自分自身がエキサイトするような事象を集めて、そのことだけを話そう、と。

その純度が高ければ高いほど、つまりぼく自身が「この話、面白い!」と思えれば思えるほど、発表はきちんと聞き手に届くはずだと思って、そうした。

懇親会の終わりに話したこと

入門書のジレンマ

発表が終わり、懇親会になり、その終盤、朝からつづいた雨も上がり、会場から一人また一人と夜の庭へ出ていくのが見えた。

それにつられるように、ぼくも会場からフラフラと出ていったところで、ぼくの発表を見たという人から声をかけられた。

その人は、自分もプログラマーではなく、今回スポンサーをしている会社のひとつに勤めているのだと言った。

それからしばらく、いろいろと嬉しい感想をもらいながら、上に書いた「ノンプログラマー発の技術情報であることに意味がある」みたいな話をした。

ぼくらノンプログラマーが技術情報に触れようとしたとき、それを書いているのはつねにプログラマーなのだと。

その人は、プログラマーが書いた入門書などを読んでもわからないことがあると言い、ぼくは「それは自然なことだ」と言った。

プログラマーはノンプログラマーではないがゆえに、ノンプログラマーがどこでつまづくのかをわからないのだと。

もちろん、中には例外的な人もいて、結城浩さんなどはその例にはあたらない。

結城さんはつねに、読者が「今どこにいるのか」を考えながら書いているから、相手がプログラマーであろうとノンプログラマーであろうと、読者を置いてけぼりにはしない。

逆に言えば、わかりづらい入門書とは、読者が「今どこにいるのか」を想像できていないのだ。

何であれ、情報を整理して他人に伝えるときには、膨大な、かつ茫漠とした情報の海の中から、必要と思える要素を取捨選択しなければならず、それはつまり不要な部分を省略しなければならないということだ。

わかりづらい入門書というのは、そのとき、省略してはいけない部分を省略してしまっている。

ビルの上の階まで上がろうというとき、適切な高さの階段が均等に積まれていれば誰でも上がっていけるが、所々に異様に高い段差があったら、上がれない人が出てくる。

入門書を書くような人というのは、すでに専門家として何年もキャリアを積んでいる人だから、「どの階段を省略したら入門者がついてこれなくなるのか」を想像しながら書いていくのが難しいのかもしれない。

だからこそ、自分のようなノンプログラマーが技術情報を発信することには何らかの価値があるだろうと思うし、そのときもたぶんそういう話をした。

プログラマーとノンプログラマーを分けるもの

そのときに話したことをもう一つ書いておくと、これは本来、今回の発表にも入れたいと思っていたのだけど、とても時間が足りなくてカットしたもので、「プログラマーとノンプログラマーの違いは何か?」という話。

また喩え話になるが、ノンプログラマーによるプログラミングが「趣味の魚釣り」だとしたら、プログラマーによるプログラミングは「漁業」である。

趣味の魚釣りと漁業との違いは、「誰のために魚を獲るのか?」ということで、言い換えれば、「獲った魚を食べるのは誰か?」ということだ。

漁師は自分たちの食べ物を確保するために漁をしているのではなく、不特定多数の他人が食べる魚を獲っている。

一方で、趣味の釣り人は自分が楽しむために魚を釣っている。

どちらが偉いわけでもないが、他人の口に入るものを扱う以上、責任は漁師の方が遥かに重い。
それゆえ、面倒なこともたくさんしなければならないし、多くの技術を身につける必要もある。

どれだけ多くの魚を獲れるかという意味で、趣味の釣り人が漁師に勝てる日は来ない。やっていることのケタが違うのだ。

くり返すが、これはべつにプログラマーがノンプログラマーより偉いという話ではない。

視点を変えて、たとえばぼくは今編集を生業にしているけれど、その分野で言ったらぼくの方が漁師ということになる。

だから考えるべきは、趣味の釣り人が魚を釣るように、ノンプログラマーのぼくがプログラミングをかじったところでそれが何になるのか? ということだ。

その答えはある。

ぼくにとってのプログラミングはどこまでも趣味に過ぎず、その技術が毎日大量のトラフィックを重い責任のもとにさばいているプログラマーのそれを超える日は永遠に来ないが、それでもプログラミングを通してぼくの本業の生産性が高まったら、それはめぐりめぐって、プログラマーを含む社会への貢献を果たすことになるだろう。

何もプログラミングの世界で職業プログラマーに勝つ必要などなく、自分の生産性を上げたり、あるいは自分の人生を豊かにしたりできれば、それだけでも充分意味のあることなのだ。

ジェロニモと私

最後にもうひとつ、これを書いてこの記事を終わるが、その会話の最後の方で、「結局、ノンプログラマーがプログラミングを習得する方法としては、やっぱり仕事に取り込むっていうのが効果的なのでしょうか?」みたいな質問をもらって、それについてあらためて考えられたのもよかった。

ぼく自身がなぜプログラミングを続けてこれたのかと考えたら、それは「仕事に役立つから」というより、プログラマーの人たちがいつもなんだか楽しそうで、「あんな風になりたいな〜・・」と思ったからだった。

これは以前、吉祥寺.pmというイベントで発表したとき、そのスライドに入れるつもりだったものの結局時間がなくて削った話なのだけど、『キン肉マン』という漫画に出てくるジェロニモというキャラクターがいて、彼は本当は人間なんだけど、超人のテリーマンたちに憧れて正義超人の仲間に入って、しかしその後悪魔超人たちと闘ってメタメタにやられてしまう。

そこで出てくる名ゼリフに、「だってオラは人間だから」というのがあって、ノンプログラマーでプログラミングなんてやってると、そんなのばっかり。

プログラマーと自分とではまったくいる場所が違うというか、素地が違うというか、土台が違いすぎるので相手にならない。ツライ。

だけど、大事なのは勝つとか負けるとか、誇らしいとかみっともないとかではなくて、そのジェロニモテリーマンとかキン肉マンとかに対して抱いたような「憧れ」があるかどうかなのだと思う。

プログラミングをやる理由が「仕事に役立つ!」というだけだとちょっと弱くて、それだけだと「だって人間だから・・」みたいな感じでつぶれちゃう。くじけてしまう。そんな気がする。

だけどそこに、「憧れ」が残っていたら続けられる。というか勝手に続いていく。

それはべつに特定の誰かに対するものでなくても、ぼくだったらテクノロジーを味方につけることで稀に体験する、「それまで100日かかっていた作業が5分で終わった」みたいな劇的な変化への憧れというか、希求がいつもある。

ぼく自身が経験的に責任をもって言えるのはそこまでなんだけど・・と、そういう話をした。

その他のトピック

上記の機会では、相手の方からのコメントが本当にどれもクリエイティブ&丁寧なものだったので、普段考えていることをどんどん話すことができて、他にもたくさん面白い会話をしたのだけど、ひとまずここまで。

YAPC::Okinawaについては、前夜祭やイベント翌日のハッカソン、その後のお土産屋めぐりや、そもそものプロポーザルに至る話など、まだまだトピックはあるのだけど、その辺はまた時間ができたら、続編として書いてみたい。

*1:P19.「Finderは疲れる」というあたりなど。

tigの車輪の再発明

複数ファイルが立ち並ぶディレクトリにおいて、1つまたはいくつかの限られたファイルだけを`git add`したいという場合、いちいちそのファイル名を打ち込んでいくのがメンドイ。

https://i.gyazo.com/2ea3f4f42a20f00f66837cef4191a00e.gif

こういう時、peco的なものでバッとリストを出して、インクリメントに対象を絞り込みつつ直感的に選択できないものか? と思っていた。

で、こういうのを作った。(コマンドは`ga`)

https://i.gyazo.com/b41528b638db51e86643b50d41c2f6c1.gif

Perl製。
とくにリポジトリを公開したりしていないので、生コードはこんな感じで。
(.bashrcと組み合わせる)

# .bashrc
function gi {
    local arg="$@"
    local pick=$(perl /path/to/gi.pl)  #パスは任意の場所で

    if [ -z "$pick" ]; then
        echo Canceled.
    elif [ -z "$arg" ]; then
        echo Input a command.
    elif [ ! -z "$pick" ]; then
        git $arg $pick
        if [[ "$arg" == add ]]; then
            echo Add $pick
        fi
    fi
}
alias ga="gi add"
alias gr="gi reset HEAD"
#!/usr/bin/env perl
#
# gi.pl
use strict;
use warnings;
use feature 'say';

my $status = `git status`;
my @msg = split /\n/, $status;

my $msg;
my %msg;
my $marker = '';

for (@msg) {
    if ($_ =~ /\AChanges to be committed:/) {
        $marker = 'staged';
    }
    elsif ($_ =~ /\AChanges not staged for commit:/) {
        $marker = 'not staged';
    }
    elsif ($_ =~ /\AUntracked files:/) {
        $marker = 'untracked';
    }

    if ($_ =~ /\A\t(.+)\z/) {
        $msg = $1;
        if ($marker eq 'staged') {
            if ($msg =~ /\A(.+):\s+(.+)\z/) {
                $msg{$2} = 'staged';
            }
        }
        elsif ($marker eq 'not staged') {
            if ($msg =~ /\A(.+):\s+(.+)\z/) {
                $msg{$2} = $1;
            }
        }
        elsif ($marker eq 'untracked') {
            if ($msg =~ /(.+)\z/) {
                $msg{$1} = 'untracked';
            }
        }
    }
}

my @result = ();

while (1) {
    my @list = ();
    my $list = '';

    for (sort keys %msg) {
        push @list, "$msg{$_}:\t$_";
    }
    $list = join "\n", 'OK', @list;

    my $selected_line = `echo "$list" | peco`;
    chomp $selected_line;

    my $selected_status;
    my $selected_file = '';

    if ($selected_line =~ /\* (.+):\t(.+)\z/) {
        $selected_status = $1;
        $selected_file = $2;
        shift @result;
    }
    elsif ($selected_line =~ /(.+):\t(.+)\z/) {
        $selected_status = '* '.$1;
        $selected_file = $2;
        push @result, $selected_file;
    }
    delete $msg{$selected_file};
    $msg{$selected_file} = $selected_status;

    if ($selected_line =~ /\A(OK|)\z/) {
        if ($selected_line eq '' || ($selected_line eq 'OK' && scalar(@result) == 0)) {
            @result = ();
        }
        last;
    }
}

print "@result";

`gi`の後に何らかのgitコマンドを入れれば、選択したファイルに対してそれをする。

ここでは事前にエイリアスを設定して、`ga`と打てば`git add`、`gr`と打てば`git reset HEAD`になるようにしている。

何度も試しながら、結局半日ぐらいかかった気がするが、ひとまず「ん〜、いいじゃん、こういうのが欲しかったのだよ」と満足できる感じにはなった。

が、そこまで来てからふと、「しかし普通のプログラマーたちが毎日そんなメンドイことをしてるはずがないな……皆どうしてるんだろう?」と思った。
まあIDEや各種エディタ、あるいはGUIツールを使っている人なども少なくはないだろうけど、ターミナル操作で済ませている人も多いだろうしなあ、と。

そこでようやく、時々耳にするtigというツールを使えば似たようなことが出来るかも? と思い至り、簡単に調べてみた。

qiita.com

上記でほぼ把握。自分の手元でもやってみた。

https://i.gyazo.com/0d10e3b193ff13468148dca7ca2da9a9.gif

最初に`tig`と打つと、`git log --oneline`的な画面が出てきて、そこで`S`(Shift+s)を打つと`git status`の情報が出てくる。

そこでjk(上下)移動しつつ目当てのファイルの上で`u`を押すと、さくさくステージ/アンステージしてくれる。
めっちゃお手軽!

Vimとほぼ同じ動かし方なので、直感的に使える。
pecoのようなインクリメントな絞り込みはできないけど、必要十分とは言えるだろう。

何より、上記ではaddだけやっているけど、このtigにはその他のgit系機能も盛りだくさんである。
先ほど`git blame`を試してみたけど、これもけっこう目覚ましい体験だった。

これがあるとわかっていれば、わざわざ冒頭のようなコードも書かなかったなあ……と一瞬思ったが、でもどうだろう。

初めからtigを使っていたら、tigの「使い方」には詳しくなったかもしれないけど、コードを書く技術は上がらなかっただろう。

ぼくが望むのは確かに「直感的に`git add`すること」だったけど、同時に「コードをより上手に書けること」も求めていて、言い換えると、ぼくが最終的に求めているのは道具の「使い方」ではなくて「作り方」を知ることなのだと思える。

最新のガジェットやそれらを「使いこなす」ことにあまり興味を持てないのもそのことと関係している気がする。

さらに突き詰めて考えるなら、ぼくが欲してるのは「自由」なのだとも思う。

最新のガジェットに興味がないとは書いたが、そうは言ってもiPhoneが初めて日本で発売されたとき(2008年の6月とかだった)、ぼくはまだソフトバンクで機種変更してから半年ぐらいしか経っていなかったけど、迷わずiPhoneを予約してすぐ交換した。

じゃあなんだ、新しいガジェットに興味あるじゃないか、とも言えるが、それを買ったのは「絶対的に未知の体験を死ぬ前に味わっておかなくてはならない」と思ったからで、それは「現在という束縛からの逃避・逸脱・自由」を求めてのことだったと思える。

他人が作った道具を使うというのは、結局どこまで行っても作り手の想定の範疇から抜け出せない行為のように感じられて、あまり強い欲求が生じないのかもしれない。

たとえば作り手がその大元のルールを変えてしまったら、せっかく覚えた使い方も無効になってしまう。その不自由さがいやなのだ。

それよりは、シンプルで小さな道具を自分なりに組み合わせて、他の誰も使わないかもしれないが自分に最適化された、自分にとって最高の道具を作り、それまでの人生で味わったことのない体験をしたい、という気持ちがある。

プログラミングにはそういう欲求を駆り立てるものがあるようで、「作ること」と「それを使って体験すること」とのバランスが絶妙に感じられる。

[PR] YAPC::Okinawa で発表します

その話と直接の関係はありませんが&次にいつブログ書けるかわからないのでこのまま書いてしまいますが、3/3に沖縄で開催されるYAPC::Okinawa 2018 ONNASON で登壇することになりました。

yapcjapan.org
http://yapcjapan.org/2018okinawa/talks.html#/detail/10

チケットは完売とのことですが(おめでとうございます!>各位)現地に行かれる皆さんにおきましては、ご興味ありましたらぜひお越しください!

私のYAPC::Asia TOKYO 2015(2) 〜2日目〜

しばらく間が空きましたが、他の書きかけ記事も落ち着いたのでこちらに戻ります。
YAPC::Asia 2015 最終日(DAY2)の感想です。

前夜祭&1日目の記事はこちら。note103.hateblo.jp

承前: DAY1の懇親会

DAY1の最後は懇親会で、これはこれでとても楽しみにしていたのだけど、どうも疲れていたのか、緊張していたのか、遅れて到着したわりにすぐ満腹になってしまい、アルコールももういいや、という感じになったので、早々に退散。閉会する前にホテルへ戻った。

前夜祭の日はちょっと飲み過ぎて、帰ったら即ダウンしてしまったのだけど、この日は体力がまだ残っていたようで(というかあまり飲んでなかったから意識が残っていたというか)、シャワーを浴びてから現在勉強中の簿記の復習と、進行中の仕事の続きを少しずつ進めてしまった。勤勉!

手元のメモによると、22時過ぎから各20分程度は粘った模様(と、書いてみると大したことない)。そして疲れて寝た模様(やはり大したことない)。

DAY2

二日酔いもなく快調な目覚め。しかし例のごとく遅刻ペース。なぜ……。

それでも2日目最初は@kazeburoさんの「ISUCONの勝ち方」を見たかったので、頑張って移動。やはり国際展示場駅から展示場までの道のり、永遠に近く感じられる遠さ。何とかギリギリ間に合ったが。
ISUCONの勝ち方 - YAPC::Asia Tokyo 2015

以前にも何度か書いたように、サーバーの勉強をむりくり始めたのはISUCONへの憧れがあったからで、しかし結局それが何なのかよくわかっていなかったから、その内実を垣間見たいと思っていた。

サマリーには「レギュラー向け」とあったけど、聞いてみればとくに難しいとか意味不明とか思う部分はなかった。これも@kazuhoさんや@tokuhiromさんと同じ現象で、内容をよくわかってる人の話は本来易しいのだ。

果たして、何をどうするのがISUCONというイベントなのか、今までに比べたらだいぶ感触がわかったような気がする。とりあえず「インフラエンジニアの教科書」的な何かをもとに、自分で何か作ってみながらさらにその辺に近づいてみたい。

忘れ物でパニック(再)

次は迷わずリカルド(@rjbs)さんの「Perl 5.22 and You」へ。
Perl 5.22 and You - YAPC::Asia Tokyo 2015

よさ気な席をゲットして、余裕をもってスタンバイOK! で、今回のイベントで頻用しているメモ帳を肩にかけていたミニトートから出そうと思ったら……ナイ。え〜、いやいや、ずっと肌身離さず持ってるやつなのでナイってことはさすがにない……はずなのだけど、トートにもリュックにもやはりない。というか、その時に初めて気づいたけどついさっきまで持ち歩いていたはずの水のペットボトルもない。ということは、それらを一式どこかに置いてきたと考えるほうが自然。

リカルドさんはすでにマシンのセッティングを終えて、マイクチェックも完了。あとはスタートするだけ、という感じだったので、今部屋を出れば最初の方を聞き逃すことは明らかだったけど、仕方ないのでさっきまで@kazeburoさんの発表を聴いていたトラックEへ戻る。

水はともかく、メモ帳は無いとけっこう困る。見られて困るようなことは書いていないはずだけど、外付けHDDのごとく自分の思念をあてどなくダラダラつづっていたから、後で思い出したかったいろいろなことにアクセスできなくなる! というのがつらかった。

トラックEへ戻ると、やはりというか幸運にもというか、さっきまで座っていた場所にそれらは一式置きっぱなしで、落し物コーナーにすら持っていかれてはいなかった。他の参加者さんやボランティア・スタッフの方には迷惑をかけてしまったに違いなく、本当に申し訳なかった。

前日のiPhoneもそうだけど、普通に考えたらそうそう忘れるはずがないものを、簡単に忘れてしまう現象。これってようは、慣れない場に飲まれてテンパっているから普段とは違う行動をしてしまう、ということだろう。
会場ではしょっちゅう落とし物や忘れ物についてアナウンスしていたけど、こういう機会だとそれはむしろ日常的に起こるのだと身にしみて思った。

use v5.22

トラックAに戻って、あらためてリカルドさんの話を同時通訳で聴く。昨日も感じたが、通訳さん、最高体験だった。

とはいえ、通訳さんの話だけを追って内容の理解に努めるか、それともせっかく会場にいるのだからと、英語での生の話も合わせて聞くか、という態度がどっちつかずになると、なかなか話に集中できなくなる。
つまり話者の英語と通訳さんの日本語、どちらをメインで聞くかという態度をある程度カチっと決めておかないと大変だなと何度か思った。

その上でしかし、やっぱりそのように生の英語とプロの同時通訳を一緒に聴ける機会自体そうそうないわけなので、その不安定さ(自分の)もあわせて楽しんだ。

リカルドさんの話はサンプルコードも織り交ぜながらだったせいか、あるいは元々初級者のオーディエンスを念頭に作ってくれたのか、何を説明しているのか、けっこうわかった気がした。去年の牧さんの発表にあったサブルーチンシグネチャの話もあって、それが結局どういうものなのか、この発表を通してあらためて(とはいえあくまでボンヤリではあるけど)わかった気がする。

あとから件のメモ帳を見ると、「リカルドにPerlを習う」という一節が書きつけられていた。願望なのか宣言なのかわからないが、まあ、そんな感じだった。

ランチセッション

2年前に初めてYAPC::Asiaに来たときはランチセッションが両日あって、ぼくはほぼ完全にボッチだったから、やることもなくてその2日ともランチセッションに参加した気がする。そのときはシックス・アパートが2日とも出ていて、マイクロソフト(Azure)とLINEが1日ずつ出ていたはず。

今回はランチセッションは2日目のみで、かつ2社が別々の部屋に分かれていたから、見られるプレゼンは1社分だけだったけど、集中して話を聞けてよかったと思う。

僕が行ったのはFusicさんで、社内ツールを自分たちで作っている、その意味と効用、みたいな話だった。
ランチセッションA - YAPC::Asia Tokyo 2015

必ずしもPerlやコードに限ったことではなかったので、プログラマにかぎらずいろんな業務に応用しやすい話だったと思う。

開発に失敗しても損害の範囲が限られている社内ツールだから新人に任せられるとか、出来合いのツールだと不要な機能にも料金を支払う必要が生じがちだけど、社内ツールならばそれを避けやすい、といった話は納得度が高い。

質疑応答で、「頻繁に変わる使用ツールに社内の人がついてきてくれなかったらどうするのか?」みたいな質問があって、個人的にはグッド・クエスチョンだと思ったけど、回答は「いや、そもそもそういうことは余り起こらない」みたいな感じで、質問の意図がちゃんと伝わっていないような気がした。

たとえば、初期はIRCメインだったのがSkype&idobata体制になって、でもしばらくして今度はSlackに統一しましょう、なんて風にあちこちに変えていたら、非エンジニアの人なんかはけっこう、「え〜せっかくSkypeの使い方に馴染んだところだったのに」と思うものではないか? そういう軋轢というかコンフリクトにどう対処するの? みたいな質問だったんじゃないかと思う。

全員がエンジニアですら、そういうツールに対する相性というのは人によって異なるはずで、ましてや非エンジニア職の人も巻き込んでそういうツール運用をしているのであれば、その質問にあるような問題にどう普段対応しているのか? というのは他人事ならざる問題として気になるところだったのだけど。(でも、それでもとくにそういうことはない、ということだったのかもしれないが)

Adventures in Refactoring

トラックAに戻って、Ben Lavenderさんによるリファクタリング話。
Adventures in Refactoring - YAPC::Asia Tokyo 2015

このトークもヒットだった。とても面白かった。通訳さんも素晴らしいパフォーマンス。

個人的には、前日のCasey Westさんによる「Conway's Law of Distributed Work」と繋がるところがあると思った。やっていることはいわばプログラミング、コーディングなのだが、それを通してライフ全体を良くしようという意志を感じる。
あるいは、ライフ全体を良くすることによってプログラミングも改善していこう、というような。

トークの中で、何度も「Confidence」という言葉が出てくるのが印象に残った。
なぜリファクタリングするのか? 自信を得るためだ。みたいな。

グッド・トーク。

復唱

今年のYAPC::Asiaで印象深かったことの一つは同時通訳さんのパワーアップぶりだったけど(個人の感想です)、もう一つ、質疑応答で毎回発表者が質問の概要を復唱する、というのがあって、よかった。

どこかの誰かの発表で、「記録のために復唱します」と言っていたけど、たしかに会場からの質問って、後から動画などで見るときに聞こえづらいことが多く、しかしそのまま発表者が回答してしまうと結局なんの話かわからない、ということになりがちなので、それ対策かなと思った。これは昨年まではなかった慣習という気がするがどうだろう。

ほとんど全員が全員、質疑応答でこれをやっていたので、もしかすると事前にトーク採択者への依頼としてそうするように言われていたのかもしれないけど、記録の目的だけでなく、事前に「今からこれについて答えるよ」と回答の対象を明示することによって、「同じことについて話しているようで実は別々の対象について話していて、でもそれに気づかないから延々と話がズレていく」みたいなつらい状況に陥りづらくなる、いい方法だと思った。

記録をしていない場でも、けっこう有効かもしれない。

I met Mr. Larry Wall

Benさんのトークが終わって、さてどうしようかな……と思ってメールを見ると、数件返したほうがよさそうな仕事の案件があったので、ベンチを見つけてしばらくメール。

その後、Slackに繋げてチームメンバーとチャットして、自分が作業していない間の進捗を共有したり。僕が使ってるMBA-11inchはもう何年も前の64GBのマシンだけど、とりあえず必要充分なだけは動いてくれる。ほんとにありがたい。

ちょうど30分のトークを一つスキップしたぐらいの時間になったので、Etourneau Gwennさんの「Run containerized workloads with Lattice」を聞きに行った。
Run containerized workloads with Lattice - YAPC::Asia Tokyo 2015

自分のまったく知らない分野の話だったけど、そういうのをフラッと聞けるのが楽しい。最後までよくわからなかったが、次に同じツールの話を聞いたら、まったく前知識がないよりはわかるだろう。

さっきのメールやSlack対応で、なんだか中途半端に仕事モードに戻ってしまった感覚があって、トーク行脚を再開しようという気も薄れ、無限コーヒーや物販コーナーあたりをフラフラした。

そういえば前夜の懇親会で、Perl6 のタオルやワッペンが配られてるって話を聞いたな……と思い出してそれを取りにいったり。(ゲットできた)

そのままぼんやりしていると、近くでLarry Wallさんが知り合いと話しているような、でも話してるわけでもなくただ遠目に聞いているだけでもあるような、いずれにしてもすぐそこにいた。昨日の懇親会でも話せなかったし、この機会を逃したらもう話せないかもな、と思って、話しかけた。

あのー、僕、プログラマではないんですけど。編集者です。音楽の本を作っています。CDブックなんですけど、主には。それで、僕はビギナーなんです。その、プログラミングの。趣味です。それで、最初に触ったのがPerlなんです。すごく何ていうか、楽しいです。Perlが。
ぼくはPerlが好きで、なんでかって言うと、自由を感じるんです。やってると。それから、コミュニティがあたたかいです。それはたぶん、Larryさんがあたたかい人だからだと思うんですけど。(笑い)
あなたがPerlを作ってくれて、それで日本の素晴らしいコミュニティが僕にPerlを教えてくれて、だから僕はとてもハッピーです。だからあなたに感謝しています。ありがとう。

とかなんとか。写真を撮ったりはしなかったんだけど、でも何というか、もう満足だった。

Hallway Track?

さっきまでいたベンチに戻って、そこは前日から『雅なPerl入門』や『Acme大全』を頒布していた物販コーナーの裏手のようなところだったのだけど、もうイベントも最終盤で、同人誌も完売していて(すごい)、ちょっとまったりした時間が流れていた。

Perl入学式を通じて知り合った人たちが何か言ったり、それに対してケラケラ笑ったりしているのを夢の中のようにぼんやり聴いていたら、不意に猫トーストラボまかまかさんが、「門松さんもやりますか? やりましょうよ」と何かに誘ってくれているようで、聞くとPerlをモチーフにした「Parumon(パルモン)」というカードゲームだった。

よくわからないけど、たぶんこんな風に誘われることもそうそうあるまい、と思って「やります!(よくわからないけど)」と参加した。

その時の模様。

右のほうでピンクのストラップを首に巻いて神妙な面持ちでルールを聞いている……。

このゲーム、すごくPerlの勉強になるというか、Perlに熟知している(光と闇を知っている)人ほど楽しめそうな内容で、途中であれこれレクチャーを受けながら(ゲームのルールとPerlモジュールの)、緊張感を持って真剣にやってしまった。

Parumonについて、帰ってから何か説明がないか検索してみたら、しっかりマニュアルページが作られていた。さすがまかまかさん。
Parumon

迫り来る納期の攻撃に耐えながら、CPANモジュールを駆使してプロジェクトを完遂させよう!
楽しく遊びながらCPANモジュールを勉強できる画期的なTraining Card Game 登場!

とのこと。いやほんと、最高でした。

f:id:note103:20151010015907j:plain

ようやくルールもつかめてちょっと表情に余裕が見えてきた頃。(真ん中にいます)

(写真はいずれも撮影された@trappleさんからお借りしました。@trappleさん、ありがとうございます!)

そうこうしている内に、いつの間にか最後のLT&閉会の時間になってしまった。どんだけ集中してたのか(笑)。

LT & 閉会

Lightning Talks Day 2 - YAPC::Asia Tokyo 2015

LTではトップのyoku0825さんとyappoさんが印象深かった。yokuさんのMySQLトークは前日のLTを見て自分もやっぱりやろう、という感じで応募&準備されたらしいのだけど、すごい完成度(笑)。軽やかにすごい内容をやる、という意味ではLTの王道なのかも。

yappoさんのLT、オチのない余韻みたいのも含めて共感した。

牧さんの閉会トーク、ベストトーク賞の発表も挟みつつ、スマートにエンターテインしていて良かった。
牧さん&スタッフの皆さんがYAPC::Asiaの運営を通して得られた知恵とスキルと経験、ぜひまた新たな場所で発揮して頂きたい。そしてそれに参加したい。

Aftershow

ホテルは前夜までしか取っていなくて、その日のうちに千葉まで帰らなくてはならず、そもそも仕事も普通にピークだったので、翌日のハッカソンまで視野に入れつつ五反田の後夜祭へ向かうPerl入学式ファミリーの面々とは途中までわいわい一緒に歩きながら、しかし途中で離脱。
またお会いしましょう、もっと寒くなった頃に……。

YAPC::Asiaはひとまず最終回。ということですが、個人的に思ったのはもう大規模なものを誰かが引き継ぐ、といったことではなく、今ある地方.pmや他言語カンファレンスを着実に、それぞれの個性や目的に沿ってより洗練させていくことが今後は価値を持っていくのかな、と。

いろんな集まりが、それぞれの方針を先鋭化させながら他に類のないものを多く生み出していければ面白いし、そういう中の一つとして自分もまた何か作っていきたいと思ってる。

過去回も含めて運営サイドの皆さん、参加された皆さん、おつかれさまでした。ありがとうございました!

Reject Conf に行ってきた #yapcasiareject

YAPC::Asia Tokyo 2014 の非公式イベント「Reject Conf*1」(リジェクトコン)に行ってきました。

開催概要によりますと、こんな感じです。

2014年7月16日. YAPC::Asia 2014に応募された100を越えるトークの中から, 本編で発表の時間が与えられる, 採択されたトークの一覧が発表されました.
採択されたトークは, 約50個. その裏には, 同じ数だけ落選(reject)されてしまったトークがあります: http://yapcasia.org/2014/talk/list?status=rejected
折角, YAPC::Asiaに向けて練りに練ったトークを, ここで終わらせてしまうのは勿体無い!
ということで, rejectされてしまったトークを披露するイベント, 「Reject con」を開催することになりました!
美味しい食事とドリンク, そしてビールと共に, Rejectされてしまったトークを供養しましょう!

大元のYAPCが前週土曜の8/31までやっていて、このリジェクトコンが9/3水曜なのでほとんど間を空けずの開催でしたね。

結果的には翌週末とかにならなくて良かったなあと思っていて、もしそうだったらまだしばらく夏の夢から覚められなくて仕事に重大な支障をきたしていただろうと思います。(いやほんとに)(すでにきたしてるけど)

ちなみに前回書いたYAPC自体のレポートというかブログ記事はこちらです。

それを書き終えた時点でぼく自身はすでに仕事モードに戻りつつあったのですが、このリジェクトコン前日にpapixさんから「LT募集してるので応募してくれてもいいんですよ?」という玉虫色の呼び水をもらったので「じゃあ応募してみるかも?」と玉虫色に返したところ採択され、発表できる運びとなりました。

仕事への影響はもちろん気にかかりましたが、上記のzusaarを見たらそうそうたる面々が参加されるようなので、そういうところで発表できる機会なんて自分から望んだところでそうそうないだろうということでまたDive to hell的なことをしてみた自覚です。

App::revealup

とはいえそれが決まったのはもう午後6時頃で、しかしその時はまだ仕事中だったのでいろいろ片付けてようやく資料を作り始めたはいいけど、考えてみたら自分が以前にプレゼン用のスライドを作ったのって今年3月のPerl入学式修了式のLTで、ようはもう半年近くKeynoteにさわっておらず、かつKeynote自体それを含めて人生で二度しか使ったことがないので、とりあえずアプリ立ち上げてみたものの基本的な機能を思い出すだけでも大変な労力と時間がかかることがわかり、さらにはそもそも何を発表するかという構想・構成もイチから練っていく必要があったので(お題自体は別途で素晴らしい提案を頂いていたのですが内容を一連の流れに落とし込んでかつ5分に組むのがまた永遠を思わせる長い道のりというか)いわゆる詰んだ状態というか、「・・これ間に合うのか?」って一気に嫌な汗かいたりして。

その時にふと、最近手伝ってるPerl入学式の裏側でスライド資料の作成工程を見てたら、あれはKeynoteとかじゃなくて最近ゆーすけべーさんが作ったツールを使っていたような? とおぼろげに思い出して、とにかく藁にもすがる思いで一度それを見てみるかあと思ってググってチェックしたら大ヒットで。

後者の記事は昨日UPされたばかりの最新情報が載っていて、光栄なことにぼくのツイートも入れて頂いていますが、これってつまりぼくが前者の記事を読んでいろいろ試した末の思いの丈を後者に拾って頂いているということでした。

そのツイートにも書いたようにこれが本当に素晴らしいツールで、なにしろ1本のMarkdownファイルに頭からザラーって内容を書いていったらそれがそのままスライドになる。
なんという簡単さ&合理性!
元になっているreveal.jsもすごいんですが(あまりよく分かってないけど)、それだけだったら数時間でスライド完成なんて絶対できなかったので、それを超絶シンプルにしつつ新たな価値を生み出してくれたyusukebeさんには大感謝です。

さてこのツールのおかげで、ひとまずKeynoteの使い方をイチから調べる、という皮膚から涙が吹き出すような苦行からは解放され、Keynoteアプリも即終了、そこからはひたすらMarkdownでテキストを書いては手元で実行して反映を確認して・・というのを何度もくり返し、あるいは画像の入れ方なども直感で試しつつ「うわ、出来てるやん」と驚きつつ、「いや驚いてる場合じゃない・・」とかいって続きを作って。なんてやっていたら朝チュン、あれ? なんか鳥の鳴き声がやかましくなってきたような・・と思ってカーテン開けたらもう朝で、うわカーテン開けた方が明るいぐらいじゃんってザーってカーテンざーって開けてわーって残りやってとりあえず終わった〜・・みたいになって。

それから数時間寝て昼は普通に仕事して午後5時頃に一旦作業とめて家を出て、一路株式会社フリークアウトさんへ。

フリークアウトさんはこのような会社。

ヘンゼルとグレーテルはお菓子の家に惹かれたそうですが、今のぼくにとってフリークアウト社はまさにお菓子の家のような最高の場所でした。
あらためまして会場をご提供くださったフリークアウトさん、ありがとうございました。

道中の電車ではiPhoneからDropbox上に置いておいたそのMarkdownを開いて脳内で発表の練習をしながら資料のタイポとか意味のわかりづらいところを見つけては紙の端切れにメモしておいて、会場に到着早々MacBook Airを取り出してそれらチェック箇所をひたすら修正しては紙のメモに取り消し線を引く・・ってこれ普通に普段の仕事でやってるフローだと今気づきましたが、20箇所あまりを修正したところでイベント開始数分前、「もうこれ以上はできません!」と言えるぐらいまでは仕上がりました。

発表内容

そんな今回の発表内容は以下です。

余談ですが(というか基本全部余談ですが)、今回は久しぶりにSpeaker DeckにUPしました。
どのぐらい久しぶりか、と言ったら昨年末のChiba.pmに参加したとき以来だから9ヶ月ぶりですか。

Speaker Deckはクールな雰囲気に惹かれるものの、スライド内のリンクが効かないので普段はあまり使わないのですが、今回はPDFの段階でリンクが効かなかったのでこれでいいかなと。(なんでPDFの段階でリンクが効かないのか、ということは後述)

それから、上記のスライドは実際に発表した内容にちょっと手を入れていますが、大筋の印象はそんなに変わらないと思います。
何しろかなり勢いで作りきったので、ゆっくり見るには見づらいかな、というところがいくつかあって、それを調整したという。

一点大きめの変更として、発表時には後半の方で、先のYAPCレポートにも登場して頂きましたmoznionさんのビビッドな写真を入れていて、それはたぶん今回のぼくの発表で一番ウケた箇所だと思うのですが、それは外していて。

というのは、第一には会場にご本人がおられたにもかかわらず無断でそれを使ってしまったので申し訳なく思って、ということがあり(すみません)、第二には結局それがウケたのは会場のコンテキストがほぼ共通していたからであって、不特定の人に見られることになればまた別のコンテキスト(文脈・前提)が発生し、もう同じ作用は期待できないので(というかそのスライドはあくまでその会場に居る人たちを想定して作ったので)そこは公開用に変えました。

内容全般について言うと、「はじまりのPerl」というタイトルだとコレ看板に偽りありではないか、と思う程度にはPerlじたいへの言及が少ないので、タイトルもスライド公開に際して変えようかな〜・・とも思ったのですが、現状以上にフィットするものがちょっと思いつかなかったのでそのままにしています。

理想を言えば後半の方で、もっとPerl基礎の学びの場面でどういうミスや発見やその他のあれこれがあったか、ということも盛り込みたかったのですが、時間がなかったということ(作るのも発表するのも)もそうだし、単純にその辺、まだあまり整理できてないので、ということでこれが今回の条件下では最大限でした。

また会場にはまかまかさん(こちらも一つ前のレポートに少し書きましたが)も来られるということで、またその他にも上述のとおり様々な著名Mongerが来られるとわかっていたのでこりゃちょっとやそっとの内容じゃ生きて帰れないぞ・・と自分内ハードルを相当上げて、それを越えられるようにと思って作りましたが、その気負いが枚数の多さにあらわれて本来5分のところ、8分以上しゃべりまして関係各位には本当にご迷惑をおかけしました。

とくに最後の部分、「Aftershow」とした部分以降はそこではナシにして、このUPした段階で見せれば良かったなあ、と後から気づいたのですが(そうした方がずっとスマートだった)、そのときには「まあ帰りの電車で死ぬかもしれないし」ぐらいの一期一会感もあって突っ走ってしまいました。よい経験になったのでこれを糧に次の機会があれば時間守ります。

会場ステージのセッティング、最高でした。巨大なスクリーンがYAPCメインホールみたいな上の方ではなくて、登壇者が立っている場所と同じぐらいの低い場所にあるので、自分でスクリーンを指さしながら進めることが可能でしたし、またスピーカーの場所が首をぐるっと後ろにひねったりしなくてもオーディエンスの方を見ながらスクリーンも目に入れることができるという絶妙な位置&角度に設定されていて、ものすごく喋りやすかったです。
事前の会場設営をしてくださったみなさん、ありがとうございました。

他の方の発表

さてぼくの出番は終盤のLTコーナーの2人めで(午後10時ちょっと前とか)、その前の本編に5名(組)の発表がありましたが、最初の@ytnobody&@tsucchi両氏による「これはORMですか? いいえOtogiriです」と、@xtetsujiさんの 「今に伝えるメールの技術」が印象に深く残りました。

前者の発表はO/Rマッパーというものを車輪の再発明&はしか的に作ったよ的な話だったのですが、そしてこれまでも時々その存在を見聞きしてはいたけど今回の発表&後から読んだ資料でものすごい興味を持ちました。

というのも、ぼくは今「次の勉強はDBだな」と思っていて、その教材のような意味でもとても良いのではないかと。コードの行数も少ないという事なのでエッセンスを掴むのにも良さそうだし、かついわゆる教材用的な机上のサンプルというよりは作者以外の人が使っていくことも考慮してきちんと作られているようなので、今後詳しく見ていきたいなと。

てつじさんの発表は「うわーすごい勢いだ」と思って聞いていましたが(コール&レスポンス感とか)、実はというかその後の発表資料のブクマなどのバズり方、盛り上がり方がまたすごいことになってますね。
http://b.hatena.ne.jp/entry/www.slideshare.net/xtetsuji/yapcasia-yapcasiareject

ぼく自身はメールはまだまだいろんな場で有用だと思うので、たしかに「何でもかんでもメール」は困るけど、かと言って宗教上の理由ぐらいの勢いでメール忌避されても困るというか、結局は適材適所で使うのがいいよなーと思っていて。

その意味でも「そもそもここで言うメールとは何か」という定義(前提共有)をきっちりしながらこの発表のように話していければ不毛な宗教戦争に巻き込まれることもなく面白い話をしたり聞いたりしていけるのかなあ、と思ったりました。

LTではぼくの前が@malaさんで、ぼくの後が@karupaneruraさんだったんですが、malaさんはぼくがLTに立候補する直前にTwitterで立候補されて、ぼくはそれを眼前で(というかTLで)見てまるで甲子園の対戦相手を決めるクジで一回戦の相手に前回優勝チームを引き当ててしまったキャプテンのような気持ちというか、うわーmalaさんの後って順番厳しすぎるだろーと一時は立候補やめた方がいいのではとすら思いましたが、でもコレやれば確実にmalaさんにお会いできるしそっちを取ろうということで普通に立候補して、実際malaさんとは少しお話しできて、ぼくはLDRほとんど毎日使っているのでその旨をお伝えできて満足でした。

それから@karupaneruraさんも以前から界隈でお見かけする方だったのでようやく少しお話できて嬉しかったです。(一番しゃべれたのは二次会に向かう道中でしたが)

二次会にて

何しろ本編が平日夜の8時スタート、終了はすでに10時半を回っており、さらには場所が六本木ということで、その後の帰途も考えたら二次会参加無理だろ〜と思っていたのですが、幸い家と六本木の間ぐらいに安めの宿が取れたので少しだけ残れる感じになって、とはいえまあせいぜい30分ぐらいの参加でまともには喋れないよなあ、などと思っていましたが、思いのほか実りの多い時間を過ごすことができました。

印象に(というか記憶に)残っている話としては、「Mojolicousのmorboをモルボというかモーボというか」みたいなことで、音声学的にどう、ということは言えるけど基本的には相手や文脈に沿ってその状況下での最適なものを使えばいいのでは、みたいな話が聞けておお〜、となったり。
それを聞いてまた「miyagawaさんのRebuild.fm聞いてるとその辺の発音の例が聞けるから、あれはそういう面でも役立ちますよ。SHA-1とかVagrantとか」と言ってみたり。(これは本当にそう思う)(YAPCの読み方、という例も出た)

あとは書籍の話もちょっとできて、技術書の出来の良し悪しを左右するのは何か、とか電子書籍の出版って何がメリットなのか、とかいろいろ。
この辺もまたあらためて整理して書いてみたいところですが。

発表資料をUPするまで&css設定

さてイベントは無事終了し、上記のような次第でApp::revealupを使って発表できたまでは良かったのですが(ほんとに)、ではその資料をこのブログで紹介する方法、一体どうすればいいの・・というのが本件最後の難題で、ちょこちょこ調べたんだけど全然わからず。

たとえば上記のOtogiriの発表資料などは以下にありまして。
http://ytnobody.net/impress/yapc-rejectcon-2014/#/

このようにサイト外部へのリンクを貼って紹介するだけでも全然良かったんだけど(というか初めはそうしたかった)その方法もわからず(ytnobadyさんに聞けば済むかもしれないんだけどちょっと余裕なくて・・というかこれPerl Beginnersとかで聞けばいいのか? ちょうど今日次回予告されてたし->LINK)、んー、これもしかして、reveal.jsの勉強イチからやる流れかな・・(reveal.jsのサイト見たらPDF書き出しの方法がレクチャーされてたので->LINK)と思ったんだけど、いやいや(笑)そんな時間ないないと思って行き着いたアイディアが

ブラウザで全画面表示して1枚ごとに全画面スクリーンショットを撮る

で、そうしました。

これもうウルトラアナログなバッドノウハウというかたぶんエンジニアの人だったら選択肢として普通にNGじゃないかと思うんですが、僕的にはそれ以外に選択肢が(さしあたっては)なかったので、という。

この方法の問題点としては、上記のSpeaker Deckのところで書いたようにPDF内のURLにリンクが効かなくなるっていうのがひとつあって、あとはMacで普通にスクショ撮るとpngファイルになるので、それをまとめて(100枚以上)PDFにする方法もわからなくてとりあえず検索して調べたり・・で、それは以下を見てわかったんですけど、
http://inforati.jp/apple/mac-tips-techniques/multimedia-hints/how-to-change-a-image-format-with-mac-preview-app.html

まあ面倒は面倒なので、もしかしたらApp:revealupの新機能としてMarkdownファイルからpdfを生成する、というのがあったら良いのかなあ、とか思ったりしました。って簡単に言っていますが、何しろオリジナルのcssをgenerateするのも一発で出来てしまうのでそれもつい期待してしまうという。

cssと言えば今回ぼくが使ったテーマ(デザイン)はserifをちょっと変えたやつで、

1)フォントをRicty
2)ソースコードを見やすく(フォント大や行間調整)

というカスタマイズだけしています。
最初はsolarized&Rictyというテーマが好きなので(MacVimでもそれにしてる)それをベースにしていたんですが、背景の方はもうちょっと「はじめてのPerl」なやや爽やかな雰囲気に倒したいなあ、と思ってserifベースにしました。(爽やかになっているかは不明)

それからtransition(ページ変遷時の特殊効果みたいなやつ)もいろいろ選べるんだけど、けっこう試した結果今回は効果ナシの「none」にして。
どうもめくるスピードが速い(短時間で大量のページを見せる)場合は、効果があると邪魔になるというか見てて目が疲れると思ったので、パッパッと変えていく場合は効果ナシに設定するのがベターかなあ、と思ってそうしました。

あと上記2)のソースコードを見やすくする方法については、Perl入学式のスライドのcssを見たらそういう設定が書かれていたのでコピペさせて頂きました。

この辺のTIPSというか手順についてもまたイチから(それこそ初心者向けに)まとめてみたいものですが、その前にreveal.js勉強した方がいいかな・・。
https://github.com/hakimel/reveal.js

終わりに

あらためまして、実行委員長のpapixさん、また多大なご尽力をくださったmyfinderさん、その他今回の実現のために関わってくださった皆さんに御礼申し上げます。

今回のYAPCではハッカソンも勝手に後夜祭もなくて、最終日のHUBがそれにあたるものと思っていましたが、このリジェクトコンが新たな(というか以前にもあったようですが)YAPC直後の恒例行事になったら楽しいだろうなあ、と思いました。

始まって少しした頃、早くも食べ物が無くなろうとしたときに弾さんが「これがYAPCなんだよ!」と言っていて、またステージ近くで集中して話を聞いている人もいればその後ろで普通に声を上げて笑いながら喋り続ける人たちもいるという、そのどっちもアリな自由で多様でしかし無法地帯というわけでもない高度なユルさを湛えた空間が今後も作られていったらいいなと思いましたし、そのためにできることがあれば協力したいとも思っています。

現場からは以上です!

*1:引用した開催概要には「Reject con」とあるんだけどコンテストではないカンファレンスなので「Conf」では?と思いそれで通しました。

YAPC::Asia Tokyo 2014 に行ってきた 〜1年ぶり2度め / Perl入学式サポーターなど〜

掲題の件につきまして。

昨年の参加体験記はこちらです。
YAPC::Asia2013に行ってきた - 103

今回はDAY0, DAY1... とかの時系列ではなく、印象に残った(書いておきたい)順番に書きます。以下、大まかな目次。

  1. 心のベストトーク賞第1位は
  2. むっちゃしゃべった
  3. Perl入学式 in YAPC::Asia Tokyo 2014
  4. その他の印象的な事々
  5. まとめ 〜オープンエンド〜


1. 心のベストトーク賞第1位は

今回のベストトーク賞への投票、1日につき2票ずつということだったので1日目はトリイさんのMojoliciousトークと森健太さんの初心者が〜というお話に。2日目はうずらさんのPHP話とまこぴーさんのVPS話に入れました。

ぼくが投票した基準は必ずしも「面白かった!」という順番ではなくて(もちろん面白くもあったけど)、それ以上に、ベストトーク第1〜3位の人は海外カンファレンスを含めてあちこちの現場に武者修行的に行き来できる権利をGETできるみたいなことだったから、だったらそれに適した人がいいだろうと考えて、1日目は若手の二人。2日目はきっとそこで得た知見を巨大に増幅してフィードバックしてくれるだろうと思える二人にした。

逆に言うと、そういう観点を外したら1日目の @ribasushi さんによるDBIx::Classの話や @himazu さんによるTwikiの話も全然投票したい内容であったし(というかhimazuさんには最初入れていた)、2日目においては自分の充実感も含めてPerl入学式だって全然入れたかったのだけど、そういうことはせず。

そして、そんな中でも同様の理由により「投票はしなかったけどこの話聞けてよかった!」と一番思ったのは2日目の牧さんによる「オープンソースの開発現場 - Perl 5.20 のSubroutine Signaturesが来るまでの奮闘の軌跡」で、まじでこれが心のベストトーク・アウォード第1位でした。おめでとうございます!!

なぜこの話が良かったのかというと、登場人物でありその主役とも言えるMartiniさんが味わった、そしてそれにともないp5pコミュニティが体験したその時間・現象って、OSSとか百戦錬磨のプログラマーたちだけに巡ってくる何かっていうことではなく、じつは僕を含むプログラミング初心者が日々味わってる挫折感、そしてそれをどう乗り越えていくのかみたいな課題遭遇&克服のあり方に非常に重なる・参考になるところがあるなあと思ったからだった。

僕はそのようなことについて、少なからず言葉を尽くしてこのブログに書いてきたけれど、それでもまだ全然上手く言い当てられていないとも思っていて、たとえばぼくは来年40才で、編集者という職務上、文字起こしや文章構成などについては少なからず得意意識があって、他の人に比べたらそれを結構上手くやれるだろうし、ある程度の実績もあると思っているけれど、それはそのような限定的な界隈でだけ得られる自己評価であって、一歩外に出て、「じゃあお前プログラミングやってみろよ〜」なんてことになると(どんな状況だ)、それまで編集業で積み上げてきたあれこれ(人脈やら成果物やら)はまったく助けにならなくて、むしろそうした経験を通して肥大してしまった自意識・自尊心がボコボコにされるばかりの状況となり、「俺……本業ならけっこう発言力ある人なんだけど……どうしてプログラミングだとここまで雑魚なんだ……」みたいになってつらい。

で、じつのところそんな風に自尊心をメッタ斬りにしている主犯は他ならぬ自分自身であったりもするのだけど、牧さんの話に登場したMartiniさんの場合は現実世界の明確な「他者」からそうしたマサカリが無数に飛んできているわけで、もし自分がこんな目にあったらたぶん立ち直れないな……ぐらいの破壊力があるんだけど、当のMartiniさんはじつにスマートに、かつしたたかにそれを乗り切り、最終的には玉虫色の、でもどちらかと言えば成功と言えそうな何かに辿りつく。

だから(というか)これは単なる成功譚で聞いてスッキリ! とかいう話でもなくて、厳然として存在するリアル世界のモヤッとした何かを「どういう視点から見ることができるか」という例証のひとつみたいなものとして捉えられると思う。

そしてそれって、結局ぼくみたいなプログラミング入門者、さらには(より自分に即して言うなら)いい年してそんなことを始めてしまったがゆえにしばらく味わっていなかったような挫折経験に見舞われて日々「う、うう……つらい」みたいになってる人、またさらにはそうしたつらみの予感を前に不安や恐怖を抱いて今ひとつ足を踏み出せないんだけど潜在的には「プログラミング、すごいやってみたい!」みたいになってる人にもすごい響く&役立つ内容だったんじゃないかなー、と思った。

ついでに(というか)これをもう少し大きめの話に移して言うと、結局人間同士のやることなので、集まったらイヤ〜な感じというのは絶対出てくる。もしそれがないと感じる人がいるなら、その人以外の誰かがすごく我慢してるということなのであって、たとえば悪意なしに誰かの間違いを指摘したとしても、言い方が悪ければそれが向こうの(本来生じていなかった)悪意を発動させてしまうことも往々にしてあるし、最初は悪意が伴っていなかったはずの指摘でも、ふとした弾みでその嫌な感じが乗っかってしまうこともある。全然ある。

だから人の悪意の有無を問題にしても意味がないというか、あまり役に立たなくて、もうわかった、そういうのはあるとしよう、俺だって完璧な人間じゃないからな、じゃあそれはそれとして、ぼくらはその上でどんな価値を作っていけるのか? そもそも何を求めているのか? なんて風に考える方が建設的で、そういうことを牧さんのこのトークはバリバリのリアル、つまりリアル世界が湛えるじっとり湿った厳しさと意外なほどの(想定しようがないような)柔軟性の実例とともに示していたんじゃないかと思う。

ちなみにこのトークは2日目の最初、午前10時半からで、ぼくは今年のYAPCは「全部見るとかじゃなくて会場の空気を味わう」ということをテーマにしていたので、結果的に多くのトークをスルーすることになるだろうと思っていたし、その意味でも午前のトークは無理せずゆっくり動く都合上、両日とも見れないだろうなあとおぼろげに思っていたのだけど、2日目の朝に起きてふと、「ん〜、これ見たいかもな……」と思い始めてからだんだんその気になってきて「間に合わないかもしれないけどとりあえず行くだけ行こ!」と思って一気に支度してダッシュで行ったら超ギリギリ数分前に間に合って、


とか言いつつ最初から聞けたのだけど、その判断は本当に正しかったし自分GJと言いたい。

牧さんの話しぶりを見たのは去年のクロージングを聞いて以来だったけど、なんというかほろ苦さと痛がゆさと弾けるような笑いが混在した泣き笑い感がたまらない。

2. むっちゃしゃべった

2日目の朝に「ア〜」と声を出すと超ハスキー低音男前ボイスになっていて、しばらくなぜかと考えたけど、どうも前夜の懇親会&HUB飲みでいろんな人とむっちゃしゃべって声が嗄れたせいのようだった。

ぼくは以前から時折、YAPCの感じがフジロックを彷彿させると書いてきたけど、まさにフジロックで一日中大声をあげて騒いだ翌日に宿やテントで朝起きると声が全然別の誰かみたいになってて、ヘリウムガス吸った人みたいに「ア〜」とか言った直後に「ちがう人みたい〜!」とか言って一人で飽きるまで遊ぶのと同じことがそこでも起きて静かに驚いた。

声が変わること自体はまあどうでもよいのだけど、どうでもよくない自分的に大事な点というのは「俺、こんなになるまで喋ったのか!」ということで、何しろ初回参加だった去年のYAPCでぼくがしゃべれた相手って挨拶程度の人を含めてもほんの数人で、それだってその時点のぼくとしては「まったく知り合いゼロ」の前提で行ったにもかかわらず数人と喋ったのか! すごいやん! という感じだったのだけど、今年の状況から考えたらやっぱり比べようもないぐらい少ない。

では今年はどうしてそんなにしゃべる相手が増えたのかと言ったら、それはPerl入学式に参加し始めてかれこれ1年経ったことがほぼ唯一にしてすべての理由で、たとえばぼくがPerl入学式に初めて行ったときの体験記はこれですが、

これが去年の9/10に書いたレポートで、開催されたのは9/7なので、ということはまさにジャスト1年前。びっくりするほどちょうど1年前だ。

たしか同月後半にYAPC::Asia2013があって、そのPerl入学式には行くつもりで申し込みも済んでいたんだけど、いきなり何の前知識も知り合いもいない状態でそんな所に行くのはつらすぎる、と思ってその直前に開催された補講に飛び込んだという体で、この補講に行った時点では完全にボッチ。今いろいろやり取りしているPerlを通じて知り合った誰一人ともこの時点では知り合いじゃなかったわけで、まったく想像がつかない別の世界線だ。

その補講で初めてpapixさんやまこぴーさんたちを知るのだけど、それでもまったくの初対面だからすごい喋り合うとかでもなく、だから直後のYAPCで会ってもちょっと挨拶するぐらいだし、何しろ一番の知り合いとのやり取りですらそうなのだから、YAPC::Asia 2013は3日間通して参加したけど初めから終わりまでほとんど無言で過ごしたと言っても言い過ぎではない。

じゃあそれが不幸なことで、今年はその不幸がなくなった、ということなのかと言えばそういう話ではなくて、ぼくは人生の目的が知り合いを増やすことだとは思わないから去年の無言カンファレンス(a.k.a. YAPC::Asia 2013)を充分に楽しんだけど、それとはまったく別物として今年のYAPCがあったと思う。

ではなぜそれが別物になったのかと考えると、たとえば上記の第3回補講以降、ぼくはブログで少なからぬ数の技術系入門的な記事を書きまくって、識者からコメントその他でいろいろ教えてもらっては多くの人と多くの共有できるものを持つことができたし、Perl入学式にもそれ以降定期的に参加する中でサポーターの人たちとも徐々に(本当に徐々に)顔馴染みになって、また受講生同士でもある程度気軽に(ある程度だけど)会話したりもできるようになった。そしてそれってたぶん、言うなれば今まで「アウェイ」だった場所が「ホーム」になっていく、みたいな感じの変遷だった気がする。

アウェイにはアウェイなりの、緊張感ゆえの良さなどもあるには違いないけど、ここでいうホームというのは「自分の欲望をリラックスした気分のうちに実現させやすい状況」ということでもあって、具体的には面識のなかった人と接するときでもよりポジティブに、ある種の必然性とともに話しやすくなったという気がする。

だから思うのは、たぶん今年のYAPCに初めて来て、ほとんどボッチ状態でちょっとつらかったな、という人もいるかもしれないんだけど、もしその人がこれからもちょっとずつでもプログラミングへの興味を持続したり、あるいはYAPC登壇者やスポンサー企業に所属するハッカーたちの活動などをチェックし続けたりしたら、きっと来年にはもっと面白い場所になると思う。これは経験的に保証する。

ちなみに、今年ぼくがYAPCでこの方と喋れたらいいな……と思っていたのが @inao さん、@riywo さん、@songmu さんで、すべて実現した。すごく嬉しかった。知的興奮のるつぼに巻き込まれた。
その他のお相手してくださったすべての皆さんも含め、ありがとうございました。

3. Perl入学式 in YAPC::Asia Tokyo 2014

Perl入学式に初めて行ったのは上記のとおり去年の第3回補講(9/7)で、その後もinYAPC2013、第4回、第5回、第6回(最終回)という残りのカリキュラムはすべて参加したのだけど、その最後のほうで「サポーターやりませんか。卒業生の方にやってほしいんですよね」とpapixさんに誘われるまま遠慮もなく今度はサポーター側に入って、2014年度の第1回、第2回を経て今回のinYAPC2014に参加した。

そもそも去年のYAPCに参加したのも「Perl入学式っていう初心者向けの何かをYAPCってイベントの中でやるらしい」というのを見て、同時に「YAPCって宮川さんたちが東工大でやってたあれかあ……知ってる知ってる。超面白そうだったな」という記憶があったので、それがあいまって

よろしい、それじゃあ僕は地獄へ行こう
All right, then, I'll go to hell*1

てな具合に申し込んだのであって、もしもPerl入学式がなかったら去年のYAPCに参加するハードルは格段に上がって、行ってなかった可能性がかなり高い。というか多分、「もっと力をつけてから来年行こう……」とかなんとか思ってたんじゃないかな自分の性格的に。

ちなみにこの辺の最初に飛び込んだあたりの経緯や実感については、2013年度のPerl入学式修了式でLTしたときの資料にもちょっと書いてあるので(おもに最初の方と最後の方)よろしければどうぞ。

※スライドではYAPC2013→Perl入学式の順で認識したように書いてあるけど、実際には上記のようにほぼ同時だったと思う。と今思った。
※その他漏れた部分についてもそのうち補完して、プログラミング入門の一つの事例としてまとめてみたい。

話を戻すと、ぼくのPerl学習というのは「Perl入学式 in YAPC::Asia」があったから実現できたことなので、1年後の同じ場で、今度はサポーターとして参加してるって何だか地味な映画の地味なワンシーンのようにじわじわ来る。

去年、生徒として参加したときには出てくるトピックのすべてに追いつけなくて、頭が真っ白のままあっという間に終わって、でも何となく充実感だけが残ってる、やり切った、みたいな感じだったけど、今回は上でも書いたようにもうすでにそこは「ホーム」になっていて、資料にタイポがあったり校長(papixさん)がオーバーアクションと声を上げてアツく解説していたりしているのを幾度となく声を出して笑いながら楽しんでいた。

サポーター陣が楽しくてしょうがないという感じでいたせいか、生徒さんも比較的リラックスして進めてくれていたように思う。逆にこちらの緊張感が伝わっていた部分もあったかもしれないんだけど(とくに最初の方とかはお互い)、でもやっぱり、最後の15分とかは全体でウケててよかった。

最後の15分ぐらいというのは、この資料にある練習問題をやっていたときのことで。
https://github.com/papix/Perl-Entrance-Committee/blob/master/event/yapc-2014/handout.md#%E7%B7%B4%E7%BF%92%E5%95%8F%E9%A1%8Cbot_foodpl

  • おみくじ機能を使って, お昼ごはんの場所を提案してくれる機能を作ってみよう
    • 「ごはん」と入力すると, 次のお店から1つ選んでくれる機能です: 「らすた(ラーメン屋)」, 「マクドナルド」, 「学食」, 「Hub」
    • 例: 「ごはん」と入力 -> 「らすたのラーメン」と返す
  • オプション: 2件提案してくれるようにしてみよう
    • 例: 「ごはん」と入力 -> 「らすたのラーメンか, マクドナルド」と返す
    • 提案する2件は同じ店が入っていてもOKです. 時間に余裕があれば, 重複しないように(常に別の店を提案するように)してみましょう

この最後、whileとif文と標準入力(STDIN)を使って、打ち込んだ内容に応じてBot的になんか出てくるようにしよう&Botが重複しない答えを出すようにしよう、という問題があったのだけど、生徒さんからその回答例を求められた校長が、それまでに説明してきたことを全部無視していきなり初出のCPANモジュールを使って回答を書き始めたので、サポーターだけでなく生徒も含めて一斉に総ツッコミが起きて(「それは求めてない!」みたいな)その瞬間の教室内の一体感といったらなかった。

さらにはそのツッコミを受けて校長がしぶしぶそれまでに教えた限られた機能だけで回答を作ろうとするんだけど、途中でハマって1行ごとにprintデバッグしながらまたサポーター陣とワイワイ言いながら最後にきちんと出力されたときの一体感といったら。

だからやっぱり、Perl入学式というのは講義とか講座というより勉強会、というか手を動かしておしゃべりして未知のことをやり続けるという意味でワークショップって感じなのかなあ、と思ったりした。

ちなみにその辺りの生徒さんによるTwitter。臨場感が素晴らしい。





当日のPerl入学式まわりのツイート、サポーターのてつじさん(@xtetsuji)がまとめてくださいましたので、よろしければどうぞ。
#Perl入学式 in YAPC::Asia Tokyo 2014 まとめ #yapcasia - Togetterまとめ

4. その他の印象的な事々

だいぶ長くなったので以下ザザッと。

typesterさんのキーノート。めっちゃカッコ良かった。Shibuya.pmに行った最初の頃の話、グッときた。終わってから前の方で常連同士でしゃべってて……でもその輪に入れなくて……と言われていたけど、まさに去年も今年も、メインホールで長い休憩に入ったりその日の予定が終わったりしたあと、会場前方のステージの所にtokuhiromさんや弾さんやyappoさんが集まって何ということもなくただしゃべってる光景があって、ああいう感じかなあと思った。

20代のうちに云々、という話があって「もう20代が終わってるオレはどうすれば……」みたいなことを書いているブログをいくつか読んだけど、それは30代前半の(ですっけ)typesterさんの言葉であることを差し引いて考えた方がいいと思う。
そこで言いたいことは20代か30代か、とかでは本質的な意味ではナイんじゃないかなあ。

時間が足りなくて最後で少し飛ばしていたみたいだけど、もうなんだかそのまま90分ぐらい聞いていたい感じだった。ぼくは滅茶苦茶リラックスしていて、そのまま眠りに落ちそうなほど心地良かった(時折入る赤ん坊の合いの手的な泣き声がまた良かった)。

キーノートの前に一旦10分程度の休憩に入るんだけど、それがなんか儀式的にあらたまった空気を生み出していてとてもいい。その休憩からキーノートが終わるまで、それが西暦何年の何月で、時間は何時頃で、外は雨だったのか晴れていたのか、もう暗くなっているのかまだ多少は明るいのか、そもそも夏だったのか秋に入りつつあるのか、あるいはすでに雪が降っているのか、自分はいま何才で、男だったか女だったか、そのどちらでもなかったか、そういういろんな前提事項がぜんぶ一旦消えて、何者でもない誰かがどこでもない場所で何物でもない話をただ聞く、みたいな詩的な時空間に場が塗り替わるようでそれがいいと思った。去年の池邉さんのキーノートのときもそう思っていた。

miyagawaさん。むちゃカッコイイ。初日から何度か見かけたけど、2日目ぐらいに少しお話しできて嬉しかった。いたるところで異なる発表者の異なる発表内容の様々な文脈の中でmiyagawaさんの名前が出てくるからあらためてすごいと思った。すごいすごい、なんて言っていると自分は永遠に受け手の側から脱せられず発信する側になれなそうだからあまり連発したくないけど、やっぱりそう思った。

moznionさん。むちゃカッコイイ。こちらは本人にそう言った。最後の日かな。HUBでご挨拶したとき。存在から音楽を感じる。

papixさんの初日のLTがPerl入学式の経過報告のようなものだったのだけど、その最中で「去年受講生だった人が今年サポーターとしてjoinしてくれて」みたいな話の流れでぼくのアイコンがサラッと出てきて、アイコンが3つ並んだうちの一番右にあったので、その後の懇親会などで初対面の人と話すときでも、「あの一番右の人!」とか言われていろいろ話が早かった(笑)。papixさんが遠慮なくいろいろ声をかけたり使ったりしてくれるので想定外のことがどんどん起こって楽しい。ありがとうございます。

DBIx::Classの発表をされた @ribasushi さんがHUBで話しかけてくれて、中学英語で一生懸命しゃべった。「ぼくはビギナーで、普段は編集者で全然プログラミング関係ないんです」「(フムフムとうなずいて)なんでPerlをやることにしたの?」「Perlは自由で楽しいから。ぼくは自由で楽しい空気が好きなんです」
……果たして伝わったかは微妙だけど、がっつり握手して写真も撮ってもらった。
https://twitter.com/mstshimo/status/505350381459603456/photo/1
(撮ってくれた @mstshimo さんありがとう!!)

たしか初日の懇親会が始まる前だったと思うけど、てつじさんとイベントホールの前でしゃべっていたら(それこそDBIx::Classについて)、弾さんが「それは何の話?」と会話に入ってきてくれて、そのまましばらくてつじさんと弾さんが話しているのを横で聞いた。
ついていける話でもなかったからそのまま聞いていたけど、そのうち弾さんと話せる共通の話題が持てたらもっと楽しくなるだろう。

初日の懇親会のとき、Perl入学式の通常回の受講生の方がぼくのブログ(ここです、ここ)を読んでくれてる、というので驚いた。しかもRSSリーダーに入れて内容も結構じっくり読んでくれているそうで嬉しかった。ぼくはこのブログ、公開した後も何度も直すので、RSSリーダーに入る内容と実際のブログに残っている記事ではだいぶ違うんだけど、その差分とか指摘されて笑った。
具体的には少し前に書いたこの記事、
もしも彼女がPerlやりたいと言ってきたらぼくどんな顔するだろう - the code to rock

現状はフィクション的に、もし突然彼女(というか付き合ってるわけでもない女の子)からプログラミング教えてと言われたらどうするか、みたいに書いているけど、最初に公開したときはもし自分の友だちに教えるなら、という設定で書いていたので「最初は "友だち" でしたよね?」と言われてひっくり返った。
もちろんRSSで読んでる人も居るかもとは思って公開しているけど、生きてるうちにそういう人に会える確率、じつはそうそうないと思っているから。声をかけてくれてありがとうございました!(RSSごしに)

イベントホールのケータリングの皆さん、HUBのスタッフ方々、そしてもちろんボランティアの皆さん、すごく大変だったろうに終始笑顔で場を作ってくれて本当に感謝しています。

オライリーの物販で『Perlベストプラクティス』を買ったら(songmuさんのこのエントリーを読んでいたから)オライリーの紙袋にステッカーとボールペンのノベルティがついて、なおかつ値段も割安になっていたからお得感がすごかった。
ちょっと重いけど(重量的な意味で)、気になる本があったらバリバリ買って良いのでは、と思った。

隣で売っていた『雅なPerl入門(第2版)』が売り切れててすごいと思った。2日目のPerl入学式でも良書・副読本的に紹介していたけど、その時点ですでに売り切れていてこれが嬉しい悲鳴というやつか。
Perl入学式で紹介されていたと言えば @tomita さんの『Perl CPAN モジュールガイド』がすごいプッシュされていたので版元の方はYAPC運営さんと話して出店に加わったらいいのにと思う。

『雅なPerl入門』と一緒に魔術的な売り口上*2で販売されていたまかまかさんの『Acme大全2014』もぼくが見たかぎりでは残り3部になるまで売れていたけど結局完売したのかな。おつかれさまでした。

まかまかさんといえば初日のLTにしびれた。時々あまりのスピードに何を言ってるのかわからなかったりするのだけど、その傾きぶりみたいのも含めてクオリティ高い。ドラまでの最後の10秒ぐらいの即興性と精巧な準備とのミックス度合いが予測不可能でたぶんそれが魅力になっている。(なんて分析してどうする)

941さんのLT、楽しかった。ドラが鳴った後もスライドを回し続けたあの数秒に941さんの本領がかいま見られた気がして良かった。

ゆーすけべーさん、堂々としていて良かった。安心感があった。もちろん今回のYAPCはゆーすけべーさんだけの力で成功したわけではないだろうけど、でもゆーすけべーさんが責任者だったことが周りに良い影響というか、協力(しやすい|したくなる)状況を作ったのだと思う。

nagayamaさん、GitHub Kaigiで予定外のスタッフ参加(naoyaさんにふいに呼ばれて)だったはずがメインの仕切りみたいになっていたの、最前列近くで見ていてすげーなー、と思っていたけどYAPCでもまさにそれを思い出させる立ち回りぶりでまたすげーなー、と思った。後からブログを拝見したら、以前からそうした活動されていたんですね。納得。おつかれさまでした!

うずらさんベストトークおめでとうございました。正直トークの内容はあまりよく理解できてないんだけど(ビギナー向けの内容ではないし)、コードが沢山出てきたので興味持てたし、話しぶりやプレゼンのスキルとしてっていうことではなく(それも良いんだけど)対象として扱っていることがやっぱりオリジナルというか他にない感じだったのだと思う。

ぼくがうずらさんに投票したのは最初に書いたとおり、海外のPerlカンファレンスとかに行ったらきっとさらに想像つかないことが起こるに違いない(うずらさんにとってだけでなく、その周りにとっても)と思ったからで、でもすでに授賞式で(Perlのカンファレンスの授賞式で)「PHP! PHP! PHP!」とか手拍子&かけ声が起きてる時点で異常!(笑) すでに事件は起きている!!

5. まとめ 〜オープンエンド〜

……という、ここまでに書いたことでもぼくが体験したことのほんの数分の1で、さらにそのぼくが体験したことだって実際に会場で起きていることのほんの数分の1に過ぎない。何しろベストトーク賞の2位と3位をはじめ見てないトークばっかり! まあ、それ自体は上にも書いたとおりある意味予定していたことではあるんだけど、ようは現場に行ってもすべてを味わえるわけではないということ。で、それでいい。超楽しい。

じつは僕はいま本業のウルトラピーク中で、もしこれに行ったら仕事的に相当の悪影響があったので開催まで1週間を切ってもまだ行くか迷っていたんだけど、それでもやっぱり行って良かったしトータルで見たら良い判断だったと思うし、後になっても(というか後になるほど)そう言えるような未来を作りたい。

みなさんありがとうございました。これからもよろしくお願いします!

*1:『ハックルベリイ・フィンの冒険』マーク・トウェイン著、村岡花子

*2:「かき氷とコーヒーによく合う『Acme大全』はいかがでしょうか〜」とか。(会場でかき氷とかが無限に配布されていたので)(デタラメすぎるw)