| @労働

Kaizen Chat とは

Kaizen Platform 内でユーザー同士がコミュニケーションを取ることができるサービス。

  • Kaizen Platform のユーザー
    • カスタマー
      Kaizen Platform と契約し、 A/B テストツールや Growth Hacker によるサイト改善のデザイン案を募集
    • Growth Hacker
      募集に応じてカスタマーサイトのデザインを改善するデザイン案を投稿
    • Kaizen Platform 社員
      カスタマーと Growth Hacker の間の調整役

Kaizen Platform 内のユーザーが外部のツールや電話を利用して行っていた伝言ゲーム的なコミュニケーションを置き換えて、直接コミュニケーションを取ってもらうようになることが目標。

サーバーサイド 2.5 人、フロントエンド 2 人で 2 ヶ月くらいで作った。

構成

数多く存在しているマイクロサービスの中の一つとして実装。

フロントエンド

  • React
  • 多分他にもバズワード的な仕組み・フレームワークを使ってる(後で調べて書きます)

バックエンド

  • Ruby 2.3
  • Rails 5
  • MySQL 5.7
  • Sidekiq
  • Redis
  • Pusher (SaaS)

Rails 5 で開発

Rails 5 は Release Candidate だったが利用することに。

リリース直後に Rails 5 出て将来的に Rails 4 から Rails 5 へのアップデートにリソースを割くの避けたかった。(別の Rails アプリを 3 から 4 に上げたときには大変だった…)

Rails 5 で開発して困ったこと

あんまりないが強いて挙げるとすれば以下。

  • 個人的に好きで前職の頃から使ってた gem ( モデル層のバリデーションのテスト書くのが楽になる accept_values_for ) が Rails 5 対応してなかったので Pull Request 送ったりなど
  • ActiveResorces など Rails 5 対応が遅かった gem もあったが github 直接参照して対応版がリリースされたら rubygems.org を見るように変えるなど(普通です)
  • 社内の Rails プロジェクトで共通して使ってる gem を Rails 5 対応させるなど

WebSocket は Pusher (SaaS) を利用

Pusher を使った。 ActionCable 使って自前実装するのは考えなかった。

  • Rails 5 なら ActionCable では????
    • 急なアクセス増などを考えて SaaS を使うことに
    • WebSocket に関してはインフラのことを考えなくてよくなる
    • 無理に自前実装せず、少々金がかかったとしても、外のリソースを利用できるときは SaaS を使う(社風)
      大人の事情で使えない、とかがないのがよい
  • フロントエンド側も Pusher から SDK が提供されており楽できた(はず)

Pusher との通信の詳細

  • CRUD のうち Read だけ Pusher 経由で行う
  • Pusher は Create/Update/Delete も担えるけど Rails アプリと Pusher とクライアントの間のデータの流れを一方向にしたかった

Kaizen Chat Pusher

感想

Sidekiq 速い

  • 社内で初めて Sidekiq を導入したけど速かった
  • Thread で並行処理をするのでスレッドセーフな作りにしないといけない(利用 gem 含む)
  • capistrano-sidekiq が sidekiq 本体と機能かぶってるところがあるのがちょっと残念

マイクロサービス間の通信が課題

  • マイクロサービス間でなるべく疎結合になるように、相手のサービス側の DB を直接参照しないように頑張る(気合い)
  • スピードが遅くなってしまうところはキャッシュする

BFF 的な考え方必要

  • ActiveModelSerializers 使ってると Serializer が乱立して収集付かなくなる
  • Frontend から必要なフィールド渡してもらってそれをシュバッと返すおシャンティな API にしていきたい

今後

  • モバイルクライアントの開発
    チャットなのに携帯電話で返信できないとかダメですよね…
  • 通知の充実
    チャットなのに通知こなくて気がつけないとかダメですよね…
  • 画像ハンドリングの充実
    負荷やジョブとの戦いに突入します。

Kaizen はチャットの会社じゃないので、自分たちがチャットの機能を作ることはどんな意味があるのか、ということを考えながら機能追加していきたいですね。

なお Kaizen Chat は Kaizen Platform にアカウントをお持ちの方でしたらどなた様でも無料でご利用いただけますのでもしよかったら触ってみてください。僕にファンレターを送ることも出来ます。

また Kaizen Platform, Inc. は本日( 2016-09-08 )から開催されている RubyKaigi 2016 にブースを出しておりますので CTO (リクルート時代に chouseisan 作ってた)やエンジニアと話してみたい人、 Kaizen Platform ロゴ入り手ぬぐいが欲しい人、僕のアイコンのステッカーが欲しい人はお気軽にお越しください。

| @技術/プログラミング

@glidenote 先生作の memolist.vim 便利で、仕事のドキュメントからメモ書き、ポエムに至るまで memolist.vim で書いてるけど、 ~/Dropbox/memolist/ にドキュメントが溜まりまくって厳しい感じになってきてた。文章を書く、ということに関しては vim + memolist.vim はとても良いのだけど、書いたものを後から読み直す、という面では弱い部分があると感じる。 iPhone で読みづらいし。その点、 Day One は過去記事を読みやすいし、 iPhone アプリもあるので夜寝る前に過去に書いた文章を読んでニヤニヤしながら眠ることも出来る1

というわけで ~/Dropbox/memolist/ にある Markdown のファイルを Day One.app ( Day One 2)に取り込むやつを書いた。

タイトルにマッチする文字列が入ったファイルを除外したり、その日以降のやつだけ、という感じで絞り込み指定したりできる。めっちゃ便利。

使い方

rb-dayonejson gem が必要なのでインストールしてください。 --execute オプションを付けないとデフォルトは dry-run です。

Example) 今日書いた記事をインポートする

ruby memolist2dayone.rb

Example) 2015/01/01 以降の記事を取り込むが、「日報」という文字列をタイトルに含む記事は除外する

ruby memolist2dayone.rb --since 2015/01/01 --exclude 日報

Example) ~/Dropbox/memolist 以外のディレクトリを対象ディレクトリにしたいとき

ruby memolist2dayone.rb --target_dir ~/memolist/

  1. 前も似たような記事書いてる。 昔の日記を全部 Day One.app にぶっ込んだ - portal shit! 

| @Mac/iPhone

この記事はできる! Mac OS X アドベントカレンダー 20 日目の記事でしたが遅れて書いています。遅れてすみません。


Soulver and Calca

テキストを入力するためのソフトはいま色々ある。プログラミング向けのエディターとしては Emacs と Vim に加えて最近では SublimeText や GitHub の Atom なんかもある。ただ Mac にはプログラミング用途ではないけど面白い文章を書くためのソフトがあるので紹介します。今日は計算について特化したテキストエディターについてです。ちなみに一個前に FoldingText というエディターについて書きましたのでよろしければそちらもご覧ください。

パソコンでも紙に書くように計算したい

パソコンでもチラシの裏なんかみたいに計算過程を残しながら計算したいと思うことはないだろうか。自分はある。最近はパソコンや携帯電話に電卓機能がついていて計算ができる。しかし電卓では計算を行ってしまって答えを出すと計算の過程を見ることが出来ない。一部のパラメーターを変更して計算し直したいと思うことはないだろうか。

一足 300 円の靴下を 3 足買ったら => 900円
400 円の靴下だったら?(計算し直し)

複雑な計算だったりするとこういうのうんざりしてくる。計算の過程をあとからふりかえることが出来る状態でパソコンで計算できれば素晴らしい。

そんなのを実現してくれるのが Soulver と Calca だ。この二つのソフトはテキストエディタと計算機の中間に位置するようなソフトだ。

自動車ローンなんかの計算をしていて自動車本体と別に購入時の諸費用がいろいろかかって最終的にいくらになるか、みたいな計算をするとき、いちいち表計算ソフトに数字をいれていくのはだるい。チラシの裏で筆算を行った方が早いのではないかと思うことがある。

この手のソフトは自分が知っている限り二つある。一つは Soulver というやつで、こっちの方が多分メジャーで取っつきやすい。しかし高い。もう一つは Calca というもので、こちらの方はより理系向けっぽい機能が充実してる。そして安い。

Soulver

Soulver の良いところ

  • 見た目が Mac っぽい
  • 自動的に足し算する
  • 文章から数字要素を空気読んで抜き出して計算してくれる

Soulver の残念なところ

  • Markdown で書けない
  • 独自定義の関数が使えない
  • コピペしたときに計算結果がコピーされない

Markdown で書けないのが残念だ。また式を関数として定義できないので、式の使い回しが出来ない。場合によっては似たような計算式を何度も羅列しないといけなくなる。加えて計算結果が文字情報として残らないので、コピー&ペーストで計算結果を別のところに移したいときに使えないのが不便だ。

Calca

Calca の良いところ

  • 独自関数を定義できる
  • 変数の遅延評価ができる
  • 単位が自動認識される
  • Markdown で書ける
  • 計算結果をコピペできる
  • グラフが描ける!

独自関数を定義できる

独自の関数を定義できる。式を使い回せるので DRY に計算できる。

変数の遅延評価ができる

変数の遅延評価ができる。先に計算式を定義して後から変数を定義するやつ。 Soulver にはこれができないのが結構痛い。

単位が自動認識される

Soulver は単位を事前に登録しないといけない。例えば「本」のような単位はユーザーが事前に登録すれば解釈できるがそうでなければ Soulver は文字列として処理する。Calca は数字のあとにそれっぽい文字列がくっついてると自動的に単位として解釈して計算してくれる。いきなり「3本 * 3」と打つと「9本」と単位つきで答えを出してくれる。

Markdown で書ける

独自の拡張子を持たず Markdown 文書として書けるので日頃から Markdown を使い慣れてる人には大変使いやすい。保存時も .md などプレーンテキストとして保存できるので他の人と共有もしやすい。

計算結果をコピペできる

計算結果が文章内に表示されるので、計算内容をコピペするときに便利。

calculateBMI(weight, height) = (weight in kg) / (height in m)^2

calculateBMI(75kg, 172cm) => 25.3515 kg/m^2

グラフが描ける

2時間半停めたら 500 円だとわかる

理系の人が研究とかしながらメモを取っていくときには便利かもしれないけど、一般人にはいまいちメリットがない気もする…。

Calca の残念なところ

  • 文章中の数字を計算してくれない
  • 計算するときにいちいち式の後ろに => を入力しないといけない
  • デザインがいまいち

文章中に混ぜた数字を賢く計算してくれない

式は式として書かねばならず、文章中に数字を混ぜとくと自動的に計算してくれるような機能はない。

計算するときにいちいち式の後ろに => を入力しないといけない。

これも少しの手間だがわりあい面倒くさい。しかしおかげで計算結果が文章中に表示されるので、コピペで計算内容をほかの場所にコピーするときには便利。

デザインがいまいち

Calca は技術者向けなためか装飾が最低限だった。ソフトは使ったときの心地よさとか自分との相性が大事だと思う。 Soulver の方が心地よく感じられる。

結論

Calca は高機能だけど、理科系で研究とかをやってて複雑な数式を入力する機会がある人以外には用途が少ない気がする。またぶっちゃけるとプログラム書くみたいな感じで計算やるんだったら、 Ruby で irb 起動してやるのでも十分だったりする。プログラマーが好きそうで実はプログラマーだったらコード書いて計算させてしまって利用する機会がなかったりとかそんな感じ。

というわけで僕は毎月 Soulver で金の支払いの計算とかをしています。おすすめです。

おまけ

Mac の話ではなくて申し訳ないのですが、便利な使い方としては、 iPhone 版の Soulver をインストールしておくと回転寿司に行ったときの計算が劇的に楽です。こんな感じ。

Soulver for iPhone in 回転寿司

| @散財

Netatmo Weather Station

Netatmo Weather Station

皆さん、部屋に温度計とか湿度計置いてますか。僕は置いてます。

置いてない人は温度とか湿度気になりませんか? 僕は気になります。エアコンとか何度くらいになったらつければよいのだろうとか思いませんか? 自分は何度になったら快適だと感じるのだろうなどなど。

僕は Netatmo の Weather Station というのを買って設置してるのですけど、こいつを導入して以来、いろんな情報が確認できるようになって楽しい毎日を送っています。今日はこの製品の使い心地を紹介します。

自分で気温を計測したいと思った

もともと僕は現在の気温を調べるのが好きで、気象庁が観測したデータをインターネットで公開しているアメダスのページをよく見ていました。こいつは一時間おきに更新されます。仕事していて一息つくときとかにアメダスで現在気温を見て顔をほころばせていました。また朝起きて寒いと、今日は寒いなぁと思ってその日の最低気温をアメダスで確認して「今シーズン最低気温更新ktkr」とかやってました。

毎日毎日アクセスして気温の変化を見ていたアメダスですが、だんだん物足りないと感じるようになり、いつしか自分で気温を計測してみたい、と思うようになったのでした。

アメダスでは何がダメなの?

アメダスは便利なのですが、スマートフォンでサイトが見にくいという欠点がありました。また計測値に関しても、アメダスで計測されている地点の気温と自宅周辺の気温に結構開きがあるのではないかと疑問に思い始めたのです。天神で電車に乗って、自宅最寄り駅に着いて電車降りると体感的にいくらか気温が低いのではないかと思うことがしばしばありました。また逆に、家の周りが寒いので厚着して仕事に行ったら天神は暑い、ということもありました。

室内の温度や湿度も測りたい

加えて、子どもが生まれたときに室温や湿度も気になるようになり始めました。赤ん坊は乾燥に弱いなどと聞き、加湿したりしていたものでした。ただ家に湿度計がなく、どのくらい加湿すればよいのか分からないまま闇雲に加湿していました。

このときの経験から、いつか室内の温度や湿度を測る器具を買いたいという思いを募らせるようになっていました。しかしなかなか良いものがなく、購入に至ることはありませんでした。

そんなとき、たまたま Amazon で「温度計」で検索していて、 Netatmo Weather Station というガジェットに出会ったのです。こいつなら外気温のほかに、室内の気温や二酸化炭素濃度も測れます。時系列で計測情報を折れ線グラフとして確認できます。便利。嫁さんに黙ってこっそり買いました。

Weather Station の優れているところ

Weather Station Web app

実は Netatmo Weather Station 、農業系の雑誌で取り上げられて農家の人たちに人気のようです。 Amazon のレビュー欄に農家の人の感想が載ってます。業務用にこの手のやつを買うとものすごく高いらしいのですが、 Weather Station は 1/10 以下の値段で同等の機能が手に入ってしまいます。しかもモバイルアプリがあったりアラート機能があったりする。下手な業務用観測機よりも高機能かもしれません。

計測対象

  • 室内
    • 気温
      • 現在気温
      • 最高気温
      • 最低気温

    • 湿度
    • 気圧
    • 騒音
    • 二酸化炭素濃度
  • 屋外
    • 気温
      • 現在気温
      • 最高気温
      • 最低気温

    • 湿度
    • 気圧

小さな機械ですがいろんなものが計測できます。台風が来てるときには気圧が変化するし、ファンヒーターをつけると二酸化炭素濃度が上昇して iPhone にプッシュ通知来て面白いです。長期間外出してるときに騒音に変化があったら泥棒か何かが家に入っているということだし、留守中の自宅の様子を遠隔監視する気分も味わえます。

もっともこの手の家の様子を確認したい系では Netatmo は Welcome という定点観測カメラみたいなやつを出しています。こいつは顔認識機能が付いているので、鍵っ子の子どもが無事帰宅したかどうかだとか、ベビーシッターが子どもを虐待していないかだとか、不在中に登録してない顔の人物がカメラに写ったら知らせる機能とかがあるっぽいので、防犯とかに興味がある人はそっちを見てみると良いでしょう。

iPhone アプリ

Weather Station iPhone app

最近デザインが一新された iPhone アプリがまた良くて、屋外の気温が指定した温度以下に下がったときや、室内の気温が指定した温度以上に上がったとき、室内の CO2 濃度が上昇したときにプッシュ通知を受け取ることができます。

寒冷地では気温が低下すると水道管が凍り付いてしまうので、夜寝る前に水をちょろちょろ出しながら寝たりすることがあります(実家がそうでした)。 Weather Station で外気温を計測していれば、寒い日にはプッシュ通知で教えてもらえて、水道を流し忘れたばかりに水道管を破裂させてしまう、という事故を防ぐことができます。

また夏場など、エアコンを我慢していて気がつかないうちに自宅で熱中症になってしまう、ということもあるかと思います。室温が 30°C 以上になったときにプッシュ通知が来ることで、観念して冷房を適切に利用することができます。

CO2 濃度に関しても、石油ストーブを使うときは換気が必要だと分かってはいても、窓を開けると寒いのでなかなかこまめに換気したりはしないものです。しかし 2000ppm を越えたときに警告のプッシュ通知が来るとちゃんと窓を開けて換気しようという気にさせられます。実際に換気を行うと頭がもやもやしていたのが解消されますし、換気の効果を実感できるようになります。

このように、ただ気温を計測するだけでなく、値を監視して警告をしてくれるのが iPhone アプリのすばらしいところです。

  • 様々な条件でプッシュ通知 しきい値はカスタマイズできる。
    • 屋外気温低下
    • 室内気温上昇
    • CO2濃度上昇

  • 即時測定ボタン 室内ステーションに搭載されている即時測定ボタンを押すと、 iPhone アプリにプッシュ通知が来て 10 分ごとの計測サイクルを待たずに今すぐ情報を確認することができます。

東京に出張しているときに子どもがこのボタンを押すと、 1000km くらい離れているのに息づかいを感じられて良さがあります。 Yo みたいな感じ。

過去データを CSV ダウンロードできる

CSV で過去のデータをダウンロードすることができます。データをパソコンに保存して、長期間のデータを貯めて過去と比較したりといった用途にも使えます。先述の通り、農家の人なんかには有用な機能ではないでしょうか。

API

自分で API を叩いてサーバーから情報を取得することもできます。せっかくなので Ruby で API クライアントを作ってみました。

こんな感じで使えます。

GIF動画

類似品もたくさん

Netatmo Weather Station と IRKit を組み合わせると、設定した温度以下になったら勝手にエアコンのスイッチ入れたりとかできそうと夢想していたら、 Weather Station に似た別の製品で Nest という温度計があることを知りました。 Nest は気温の計測とエアコンのコントロールを一台でやってのけるそうです。しかも人工知能が備わっていて、住人の生活時間帯を学習して朝 7 時頃エアコン付けたり、人気がなくなったら勝手にエアコンや照明を消したりするらしい。こういう製品が普及したら、 SNS に「エアコンや電気を消し忘れて寝てしまった僕かわいいでしょ、てへ」みたいな投稿をしている独身男性を黙らせることができます。すばらしいですね。

IoT おもしろい

IoT とかニュースで見たり読んだりしても「ふぅ〜ん」くらいにしか思っていませんでしたが、実際に自分の生活内に導入してみると便利で楽しいです。僕個人の場合、冬は室温が 22°C を下回ると寒いと感じて暖房をつけたいと思うようだということがわかりましたし、また夏に関しては気温が高くても湿度が低ければエアコンをつけなくてもしのぎやすいという良く言われることが自分で計測した数字により裏付けされました。だから何? と言われると困るのですが、僕は非常に満足していますし、職場の上司におすすめしたところ、 Slack でアニメキャラクターに気温をしゃべらせたりしてました

というわけでおもしろいので良かったらお年玉で Netatmo Weather Station 買ってみてください。


この記事は今年買ったもの Advent Calendar 2015 19 日目の記事ですが 9 日遅れで書いています。遅れてすみませんでした。

| @技術/プログラミング

昨日飲みに行って今朝起きてからふとコード書きたくなって、アドベントカレンダーもあることだし(去年の Adventar で自分のブログだけ og:image がなくて画像が出てなくて残念だった)、このブログを Open Graph protocol に対応させることにした。

Twitter Card の Lokka Plugin を前作ってたのでそれを改造した。

Ruby 2.1.0 以降で使える Module#refine 使いまくったけど安全にモンキーパッチできて便利。

module AddImagesToEntry
  refine Entry do
    def images
      self.body.scan(/https?:\/\/[\w\/:%#\$&\?\(\)~\.=\+\-]+?\.(?:png|jpe?g|gif)/)
    end
  end
end

refine するときのモジュール名、 ActiveRecord のマイグレーションのクラス名みたいで面白い。

| @ブログ

一時期に比べたら Lokka 使ってる人減ってて、 Jekyll/Octopress ブームのあとは Go lang 製のスタティックサイトジェネレーターかはてなブログに移っていってしまった。自分は自分で使うツールを自分でいじるのが好きなので Lokka 使い続けていきたい。ということでいろいろやった。

最近やったこと

テスト通るようにした

Lokka の master ブランチ、しばらくコミットされてなくて Travis CI のビルド 1 年半くらい走ってなかった。久々に Pull Request 出したらビルド成功しなかったので通るようにした。 Travis がコンテナベースの環境から Docker ベースに移行したぽくて、その影響で PostgreSQL がらみで bundle install がこけるようになってた。なのでテキトーに addon を追加しといた。

同じコミットでもうメンテナンスが終了している Ruby 1.9 系の CI をやめるようにした。

Ruby 2.2 に対応させた

json 1.5.5 は Ruby 2.2 系では install に失敗するようなのでいろいろ bundle update した。 ActiveSupport も 3.1 ではエラーが出てしまうので bundle udpate して 3.2 の edge にした。

XSS 直した

コメントで教えてもらったので直した。

ただ実はまだ完全には直せてないので近日中に直したいのだけどテンプレートをレンダリングする仕組みをまるっと変えないと直らなそうなので結構きびしい…。

これからやりたいこと

フロントエンドよくしたい

具体的にはプラグインに同梱された CSS や JavaScript とテーマのやつをくっつけて配信したい。 Asset Pipeline 的な。

高速化

なんか遅い。このブログのトップページのレスポンス返すのに 1 秒くらいかかってるの改善したい。 DB にインデックス張るのとクエリのチューニングかな。

ActiveRecord 化

Fjord の皆さんで開発が続けられていたけど停滞しているっぽい。 DataMapper 、耐えられないほど不便なわけでもないし ActiveRecord にない便利な機能もあるのだけど、 N+1 起こらないという触れ込みなのに N+1 起こったり、ちょっと込み入ったクエリを投げたいと思ったときにやり方がわからないもしくは出来ないということがあるので、 Ruby エンジニアの皆さんが日常的に使ってる ActiveRecord を使うようにするのが良いだろうと思った。そもそもあまりメンテもされてないし、 DataMapper に引きずられて Lokka が停滞するのも残念だし。高速化のためにも ActiveRecord 化有効そう。


最近「仕事外でコードを書かないエンジニアは人間のクズだ」、「いやクズはそっちだ、エンジニアの業務時間外の学習に依存する会社こそ真のクソ」みたいな議論多いけど、自分で使うツールのメンテナンスくらいやらないと本当にプログラマー廃業しないといけない気がするし、自分がプログラミングに触れたの自体 P_BLOG の改造がきっかけだったので、プライベートを犠牲にして歯を食いしばりながら取り組んでいきたい。

| @技術/プログラミング

YAPC に行ってきた。ちなみに去年は嫁さんに↓のように言われて行けなかった。

今年は YAPC 最後なのでどうしても行こうと思って無理矢理チケット申し込んで飛行機と宿とって行った。帰ってきて嫁さんに感想を聞かれて、詳細を話しても意味わからないだろうから「がんばろうという気持ちにさせられた」と話したら、「えー、それだけ? 何も学んできてないわけ?」と言われた。


一日目

一日目の方は業務の一環として参加させてもらった(チケット代とか飛行機代とかは自腹)。 受付で YAPC Tシャツもらえると思って着替えを持ってきてなかったんだけど申込時にサイズ選んでないのでTシャツもらう意思がないと見なされTシャツもらえなかった。明日着る服がないと思って焦ったけどリュックの中に予備のTシャツ(実家に帰ったときに洗濯したやつ)があって助かった。

Effective ES6

ES6 、全般的に天国ぽかった。 Babel というの使えばもういまから ES6 で書けるっぽい。ただ Kaizen のサービスは JavaScript でやらかすと皆様に多大なご迷惑をおかけすることになるのでリストカット感覚で導入すると危なそうだった。まずは自分のブログとかで実験してみたい。

偶然居合わせた kitak (ペパボ時代の元同僚)と Kaizen Platform で同僚の t32k さんと、二人の金沢時代の友人の方たちと無料弁当を食べた。 YAPC 、飲み物とか弁当とかまで出てすごい。電車賃とチケット代さえあれば参加できる。

TBD

最近なんで並行処理に優れた言語とか流行ってるのかという背景を交えながら、なぜ Streem を作ったのかという説明や Ruby の未来の話しが面白かった。あと質疑応答の返しが面白い。 Matz さんは言語開発者として優れていると同時に優れた話し手でもあるなと思った。

たまたま mizzy さんと隣に座って聞いてたんだけど、 mizchi さんいて(mizchi さんが mizzy さんに話しかけた)こんちゃと挨拶した。 YAPC 有名人ごろごろいるのすごい。

Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜

爆笑トークだったけど、オブジェクト指向や DDD がなぜ大切なのか、というのを業務での経験を交えながら発表されていてよかった。「オブジェクト指向設計入門とか DDD 本とか難しいけどどうやって業務に活かすのか」という質問に対しては、「歯を食いしばって実装するしかない」と返していてよかった。

ロビーでだらだら

見たかった発表満席で入れなかったのでロビーうろついてたら hsbt さんいたので声かけた。そしたらどこからともなくペパボ、元ペパボの人どんどん集まってきて hsbt さんの自撮り棒の被写体になったりしてた。出戻り歓迎しますと言われてニヤニヤしたりしてた。ペパボ版 mizchi さんの gyugyu さんを生で見られたの良かった。

SaaSを組み合わせて作る, ぼくらの障害対応術!

障害発生時に自動的に Qiita:Team に対応報告ドキュメントが作成され、 Reactio というサービス内にチャットルームも自動生成され、チームメンバー全員に電話もかかってきて障害対応に SaaS を組み込んで効率的に仕事をこなす、という LT だった。 LT 中、アラートメールが来るという演出も面白かった(たぶん仕込みだと思う)。

Kaizen Platform への就職を決めたの、要因はいろいろあるんだけど、入社前に CEO の須藤さんが Qiita:Team に書いている Kaizen のモットーみたいなやつを読ませてもらって、それに感銘を受けた、というのがある。自分たちが本当にフォーカスすべきことに注力して、その他のことは外部サービスを利用して徹底的に効率化したい、というようなことだった。実際、 Kaizen は外部の SaaS を利用できる部分は極力利用して自前で実装しないようにしている。それでお金はかかるけど、エンジニアが無駄に秘蔵の社内ツールのメンテナンスで疲弊することがないようになってるし、スタートアップ同士でお互いのサービス使い合って良い循環が生まれている感じする。

ソロ懇親会

一日目は懇親会あって参加してみたかったけど気がついたら募集終了してて参加できなかった。なのでよく知りもしない東京ビッグサイトのプロントの店員に「お疲れ様です」と声をかけられながらビール飲んでスパゲティー食べてソロ懇親会やった。バスでホテルに帰ろうとしたらペパボの元同僚の人いて最近どうですかとか軽く話した。ホテルに着いてからは浜松町の激安寿司屋に潜入したけどシャリがねちゃっとしてて不気味な感じだった。量も多くて腹一杯になってしまってとにかくつらかった。

二日目

だいぶ早めに着いたので余裕をもって座れた。ただ午後のコマは混みすぎてて発表見られないことが何度かあった。次の発表の時間前に部屋の前に列を作ったりするの予備校に通ってた浪人生時代を思い出した。人気講師の講義に群がる代ゼミ生に戻った気分になった。

Adventures in Refactoring

GitHub の人の話、 RubyKaigi の動画とか福岡でのミートアップとかでも聞いたことあったんだけどいまいち何言ってるかわからなんぁという話しする人多かった。今回の人の話はわかりやすかった。リファクタリングしてコード量が増えるのようなのはダメだとか、パフォーマンス劣化させたらダメだとか。あと GitHub では scientist という gem あってこれでリファクタリングの前後のコードの A/B テストみたいなのをやってるそうだった。エラー発生率とかパフォーマンスを計測しているそう。すごい。

昼セッションの弁当売り切れててもらえなかったので下に降りてコンビニで何か買おうかと思ったけどコンビニが異常に混雑してて地方在住者にはあれに並ぶ気になれなくて、一旦はフードコートとか行こうとしたけど結局どこも激混みで、あきらめてセブンイレブンでサンドイッチとか買ってプロントで買ったビール飲みながらオープン席的な場所で食べた。偶然、隣にモテメンガールズを引き連れたモテメンさんがやってきてモテメンステッカーくれた。家の冷蔵庫に貼ろうと思います。

【特別企画】YAPCあるある(仮)

YAPC の 10 年間を振り返るという座談会企画だった。僕はミーハーなのでこういう話しを聞くのは好きなので面白かった。そもそも始まりは宮川さんが台湾で行われた Perl のカンファレンスで来年は日本でやってくれよと声かけられてスライドの最後に急遽やりますというのを盛り込んで宣言したのが始まりのようだった。最初の会場が大田区産業会館というの地味な感じがあってよい。2007年だか2008年だかの YAPC で利用したフランスの決済システムがちゃんと動かなくて宮川さんがフランスまで行って直した、という話すごかった。伝説っぽい。

あとは牧さんがどれだけこれまで YAPC で苦労したか、という話だった。こういうの若い人聞いてもあまりぴんとこないかもしれないけど、所帯を持ってたりするとなかなか家庭外の活動に時間を割くのは大変だし、結婚式挙げたことある人はわかると思うけど、人を何百人と集めてなにがしかの催し物をやるのはとんでもなく骨の折れる大変な作業で、それをボランティアで行うのは本当に大変だと思う。若い人はもっと牧さんに感謝した方がよい。

Evaluating your stylesheets

同僚の t32k さんが LT 通ってて発表した。伊藤直也さんのこといじって受けてた。作ったスタイル何とかという CSS を解析するソフトウェア自体も良さそうだった。

コミュ力あげてこ

一日目は hitode909 さんの発表の裏で話を聞けなかった cho45 さんの LT 面白かった。前の人がたまたま電話の話してて、その後に登場した cho45 さんがモールス信号の話というのが最高だった。 cho45 さん、ツイッター見てる限り気むずかしい人なのかなと思ってけどおもしろお兄さんという感じで良かった。

クロージング

ヒトデさんがベストトーク賞とってた。なぜか自分のことのようにうれしかった。

牧さんのこれまでの苦労話とかを最後にもう一回聞いたけど本当に大変だったと思う。2000人以上来場するイベントを取り仕切るのは筆舌に尽くしがたいほど大変なはず。牧さん、 udzura uzulla さん、運営の皆様本当にお疲れ様でした。