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」では?と思いそれで通しました。