2016 年の LT と登壇を振り返る

今年は意識的に外で発表しようと心がけた一年でした。

まずは、2016 年 1 月、メルカリで行われた PHP BLT#2 での発表スライド。

composer によってガンガンライブラリインストールしてるけど、ライブラリに含まれる脆弱性チェックって CI に組み込めないのかなっていう話。
ここでは、Circle CI / Travis CI 両方で試した例を交えて SensioLabs 社製の Security Advisories Checker を紹介してます。

次は 2016 年 2 月に行われた PHP 7 Casual Talks #1。 KDDI ムゲン Labo ルームという会場でした。

ちょうど PHP7 がリリースされて少し経ったぐらいのタイミングだったので、そのあたりに合わせた話題に。
個人ブログをさくらの VPS 使って WordPress で立ち上げていたんですが、あまりにもバージョンアップしていなかったりしたので、大幅に見直すタイミングで PHP7 に上げつつ、Ansible で playbook 書いてみたという感じの話ですね。
一番良くないのは、PHP7 の性能比較が出来なかったこと。もう少し時間取ってしっかり検証すべきでした。

夏ぐらいだったかな、、あまり公開できないないようなのでスライドはあげていないのですが、母校の東京高専でキャリアについて話す機会を頂きました。
学生向けに 10 分くらい話しましたが、現役学生に向けて熱のこもった話をしても響かないよなー。とか、いろいろと考えた時期。

そして、11 月頃にも同じく東京高専で、高専 OB / OG 達とセッション形式で講義しました。
こっちはこのポストに書いたとおり。
現役学生でも、学年によって伝える内容を変えないと、全く刺さらないよなーみたいなことを思いました。

同じく 11 月、ザッパラスでの初?のエンジニア向け勉強会の会場提供をしつつ、僕も LT させていただきました。
ゆとり世代エンジニア交流会という名前の通り、メイン参加者はゆとり世代のエンジニア。若干僕は外れてるんですが、だいたいそれぐらいならオッケーというゆるさがとても良い感じでした。

開催レポートも書いていただいているので、是非そちらもご覧ください。

発表スライドはこちらです。
新規サービスを立ち上げる際に、ちょうど AWS Inspector がリリースされて、とても良さそうだったので実験しつつ取り入れてみた話をしました。

そして、締めくくりは Minami Aoyama Night #1 です。
この中では、資料準備に一番時間をかけましたw

別途ポストも書いたので、そっちもご覧頂ければと思いますが、発表スライドはこちら。

前職でも ElasticBeanstalk を既に使っていたプロダクトに関わる機会があって、その良さは分かっていたつもりだったのですが、リソースが無い中で新規サービスを立ち上げるときには、大いに力を発揮するということを改めて感じました。
その良さが伝わればと思って発表しました。

振り返ってみると、それなりに外で発表する機会はあったかなと思ったので今年はこれで良しとしましょう。

Minami Aoyama Night #1 で登壇させて頂きました

NAVITIME さんからお話を頂いて、Minami Aoyama Night の記念すべき第 1 回で登壇の機会を頂き、先週金曜日に無事に終えてきたのでそのご報告をば。

(弊社、実際は南青山じゃないんですが、心は南青山なので問題ない)

事前にお知らせ頂いていたトークテーマが「マルチクラウド」とのことだったのですが、弊社マルチクラウドじゃないしな、、と思って軽く相談させて頂いた所、クラウドなら大丈夫!とのことで「ElasticBeanstalk で新規事業を爆速ローンチする」というテーマで発表することにしました。

当日の登壇者はこんな感じでした。錚々たるメンバーの中に僕。恐れ多い。。

ECS to GKE 〜 実運用から考えるコンテナ運用の最適化 〜 株式会社ナビタイムジャパン
大南 賢亮
マルチクラウドで分析基盤を構築してみた Supership株式会社
宇都宮 紀陽
フルCDNアーキテクチャ実験 株式会社はてな
倉知 真太郎
Akamai Image Managerを利用してみんな幸せになった話。 株式会社エウレカ
松尾 健司
ElasticBeanstalk を使って新規サービスを爆速ローンチする話 株式会社ザッパラス
柴山 嶺
AWSとGCPの特徴を活かしたマルチクラウドなデータ分析基盤 株式会社VASILY
今村 雅幸

当日発表したスライドはこちらに置いておきます。

 

自分の発表の前まで緊張していたので、集中して聞けなかったのが残念ですが…終わった直後の感想として、

と tweet してるんですが、週末に反芻してみると、これに加えてデータ基盤をどうやって構築しているかとか BI 何使ってるかとか分かってよかったなぁと思いました。

覚えている範囲で箇条書きしてみると

  • コスパが良くて BigQuery 最高
  • Varnish 最高
    • キャッシュルールを細かく設定できて神
  • Akamai Image Manager 使い勝手いいし、自前の画像変換サーバより安くなったし運用も楽になったので最高
  • BI ツールは高いけど Tableau 使ってる
    • バグないし、使い勝手いい
    • re:dash は無料だけどバグが辛い時がある
  • 機械学習用のデータ生成で、クラウドはクラウドで使いつつ、強力な GPU 積んだオンプレサーバで画像解析するなどして適材適所な VASILY さんすごい

などなど。

懇親会では AWS の方や久々に松尾さんやナビタイムの中の人と話せてとても充実してた。
ピザやビールも豊富にあってとても雰囲気が良かったと思いました。

渋谷での勉強会や交流会は非常に多いイメージですが、表参道・南青山周辺での勉強会ってあまりなかったと思うので新鮮だなと思いました。

あくまで個人的にですが、渋谷はごちゃごちゃしていて人が多いので、通勤はもっぱら表参道ユースです。

高専の授業を通して「素直さ」の大切さに気付いた

16歳の学生にキャリアについて話す難しさ

ありがたいことに、母校(東京高専)の授業の一コマで、キャリアについてのパネルディスカッションをさせて頂く機会があった。

cwzbqbmukaewdok

高専OB集合写真

趣旨としては、高専のOBの人たちが卒業後にどんなキャリアを歩んでいるかというのを聞いてもらって、自分の進路の参考にしてもらう、というもの。

とはいっても、メインターゲットは2〜3年生(なんと16歳前後!)だったため「キャリア」なんてものにピンとくるはずがないだろうな、とは思ってた。

ふと、自分の高専2年生のころを思い出してみると、部活に精を出しつつも、彼女と遊ぶことぐらいしか考えてなかったな…。好きな授業は、パソコンが触れる実習と体育だったかな…というレベル。
卒業後のことなんか微塵も考えてなかった。

そういうこともあり、できるだけ気軽な気持ちで聞いて欲しいなという願いを込めて、Twitterのハッシュタグ #東京高専で授業やってる を設定して、授業中に好きなようにTweetしてもらうようにした。

学生がTogetterですぐにまとめてくれたので、どんな内容だったのか知りたい人はそっちを見てもらうとして。

教育そのものに通ずる「素直さ」の大切さ

パネルディスカッションしながら、Tweetをリアルタイムに追っかけていたんですが、僕らの話をどう受け止めるかってのは人によって温度差はやっぱりあるよなーっていうのを感じた。

授業が終わった後に教授と少し話したのですが、内容は概ね以下の感じ。

根底には、彼らにハッピーになって欲しい、という思いがある。
そして、人生の経験値上「これするよりは、こうしたほうがハッピーになると思う」ってのは少なくとも彼らより知っているはずなので、それを伝える努力はしているが、どうにも響かない。

この話をしてるときに、自分の子どもにも、会社の同僚や後輩にも通ずるところがあるなーと感じた。

もちろん伝える側の努力なくしては、伝わるものも伝わらないってのは大前提として、「響く」人と「響かない」人の差はなんだろうなーとグルグルと考えた。

で、今自分の中での結論は、「素直さ」なのかなと。「おすすめされたことを、四の五の言わずにとりあえずやってみる能力」、と言い換えることができるかもしれない。

なぜこの能力が大事かっていうと、「とりあえずやってみる」ことが、学習の阻害要因をある程度スキップさせてくれる。
結局、経験からの学習が一番効率が良い。

「おすすめされたこと」というのは、先達が通った道であるが故に「これをすれば、おそらくこういった学習ができるであろう」という思いのもとに成り立っているはずなので、イージーモードでプレイしたら?という提案がなされているに等しい。

イージーモードで一回プレイしてみるってのは、本当に大事だと思っていて、この差が後々大きな差になってくるんだろうなと感じる。

しかし、どうやったら素直さを会得できるのかは、なかなか難しいよなーと思い、いろいろヒントを探していた。

そんな中で @otiai10 氏のこのエントリはいろいろな意味でヒントになる。

「イージーモードで一回プレイしてみる」っていうのは @otiai10 氏が言うところの「進言された行動を一挙手一投足違わず遂行できる」という意味合いで同じで、

そしてそれは「言われた文言を一字一句違わず復唱する」という能力が訓練によって出来るようになるのと同じように、「進言された行動を一挙手一投足違わず遂行できる」という能力も、訓練によって出来るようになると思われる。

こう書かれている。

是非全文を読んでほしいが、素直さは才能でも性格でもなく、「能力」であると断言している。

どのようにしたら「素直さ」が習得できるのか

僕の中に未だに解はないが、ひとつは子どもの頃の親の教育が、能力の習得に大きな影響を与えそうだなとは思った。

よく観察し、寄り添い、適切なタイミングで提案し、褒めること。
良いフィードバックループに入るまでは親のサポートが必要だと思う。

では、大人になってから身につけることができるのか?というとできなくはない、ただしとても難しそうという印象。

自らに「素直さが足りない」ということを認知し受容するためにも、素直さ(ここでは謙虚な気持ちのほうが大事かも)が必要な気がするから。

大人になってからの習得が難しいからこそ、「素直である」ことは大きな武器になりえると思う。

Thanks, See you again!

子育てしながら勉強時間をどう捻出するか、という葛藤

僕はたぶん割と、子育てしている方だと思う。

子育て界隈の風当たりが強い昨今、こう書いてしまうと「それくらい当然だー」とか「それは自己満足だー」とか「女性の気持ちをわかってないー」とか言われてしまうかもしれないが、そこは一旦置いておいて欲しい。

妻が週に4〜5日働いており、仕事がある日は朝7時には家を出ていってしまうので、着替え、朝食、保育園への送りは基本的には全部僕がやる。

朝6時頃に起きて、保育園への送りが終わるのがだいたい8時過ぎ。
その後洗濯物を干して、(余力があれば)洗い物や片付けをしてから出勤する。

今の会社は10時始業で朝が遅いし、それに加えてリモート可能だったりするので、フレキシブルに対応できるのはとてもありがたい。

ただ、たいていここまででエネルギーを結構消費していて、勉強とかそういうモードにスイッチするのはかなり厳しいものがある。

勉強時間を捻出するなら、夜 or 皆が寝静まっている朝4時とかに起きてっていう感じしかなさそうで、結局睡眠時間を削るしかないのかなーと思っている。

土日のどちらかと休日は必ず妻は出勤で、もう一方の土日のどちらかは家族で過ごしたいので、必然的に1人で過ごす時間がなくなってしまっている。(けれども、妻が休みの日曜午前中とかにこうして一人の時間を作ってもらっている。ありがたい。)

こうなってくると、限られた時間で最大のパフォーマンスをっていう話になってくるのだが、ここで質と量の話になる。

昨夜、久しぶりに1人で遅くまで起きて、仕事のことを一切考えずにネットサーフィンをしていたんだけど、最近の技術トレンドや、gRPCの話とかゆっくり追うことができた。(恥ずかしながらgRPCってなんなのか全然知らなかった。)

こういう感覚はすごく久しぶりだなと思った。(独身時代はひたすらネットサーフィンしていた。)
目的のないネットサーフィンは、決して質が高いとはいえないとは思うんだけど、だからこそ見つかる有益な情報もあるってのを再発見してしまった感覚、とでもいうのかな。

なので、限られた時間の中で、ほんとうに必要な勉強を見極めてそこに時間を投資するっていう考え方は伊藤淳一さんの もっと勉強時間を増やしたい子育てエンジニアに「銀の弾丸」はあるか? #childrenac2012 で学んで、フォーカスするものを考えていたんだけど、あれっ、本当にそれでいいのかな?って思った。拡がりがなく、つまらなくなってしまわないかな?

ここまでモヤモヤしているのも、単純に自分の中での優先度の問題なんだろうとも思う。
何かを取れば何かを取れない、ただそれだけなんだけど、いろいろ悩んでる。

まだ答えはない。葛藤感のある文章になってしまった。

ElasticBeanstalk の PHP 5.6 on 64bit Amazon Linux 2015.09 v2.0.7 がちょっとおかしい件

2/11 に新しいバージョンのプラットフォームがリリースされたようです。

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platform-history-php.html

https://aws.amazon.com/releasenotes/AWS-Elastic-Beanstalk/0121149643032499

早速、サンプルアプリケーションをデプロイしてみただけなのですが、ちょっと buggy じゃないですかね。

すぐに修正されると思うのですが、困る人がいるかなと思いメモがてら。

PHP7 Casual Talk で LT してきました

さて、先週 PHP 7 Casual Talk #1 に参加して LT してきました。
会場は、ヒカリエの上のほう、KDDI さんでした。会社から近くて助かります。

スライドにも書いたんですが、PHP BLT #2 で PHP7 の話が予想以上に少なかったって tweet をしたら、@fortkle さんに捕捉されてしまいましたw

僕の LT はリアルに拙い感じでほんと申し訳ないんですが、他の方の LT はとても有意義でした。

  • PHP5.x から PHP7 に移行したが、後方互換性が高くほとんど苦労しなかった
  • ほとんどのメジャーどころのフレームワークは PHP7 対応してる
  • PHP7 だから無条件でパフォーマンス上がる!というわけではなく、ちゃんと計測することが大事
    • Yii Framework はまさかのパフォーマンス低下…(びっくりしました)
  • PHP7 独自の機能(スカラー型宣言、null 合体演算子、無名クラス etc…)を使って共通ライブラリ作るのはまだつらいかな…
  • 7.0.1 とか 7.0.2 の changelog とか見ると面白い

個人的には移行へのハードルってやっぱりそこまで高くないんだなーということを実体験として語られている方がいたので、とても参考になりました。

Travis CI、CircleCI をお使いの方はおもむろに php7 でテスト走らせてみたりしたらいいんじゃないかな。
テストコードが無いって方は、PHP7 Compatibility Checker で互換性チェック&互換性ないって場合は、どのように互換性がないかを出力してくれるという便利ツールを使うといいと思います。

connehito の CTO @tatsushim さんもいらしていて、お声がけいただきました。ちょう久しぶりの再会だ!と興奮していたんですが、実は会ったことはなかったらしく、いろいろと失礼しましたw

ピザがとても美味しかったです。ありがとうございました。

しかし、もう LT ネタがない…プライベートでまた時間確保して何かネタを作らねばー。

PHP BLT #2 で LT してきた話

もう先週の出来事になってしまったが、メルカリオフィス@六本木ヒルズで PHP BLT の第 2 回が開催された。

LT 枠で応募して、無事に滑りこむことが出来た。20 枠もあればすんなり入れるだろうと思ってたが、思いの外応募が多くて BLT ブランドすごいなと思った。

メルカリオフィスにつくと、だだっ広いスペースの一角が会場として準備されていた。メルカリは絶賛増床中だそうで、勢いを感じた。
PHP7 リリース直後ということもあり、PHP7 ネタは大いにかぶる可能性があったのであえてそのネタは外して、SensioLabs が出してる Security Checker の話をした。

この checker は以前話題になっていた「ぼくの考えた最強の開発フロー PHP編」の中でちらっと紹介されていたもので、その後この checker についても伸びるかなーと思っていたが、案外日本語の記事が全然現れてこないので、発表することにした。

スライドを読んでいただければ全て書いてあるが、自分のプロジェクトで使用しているライブラリの脆弱性チェックをしてくれるというツールで、それを CI に組み込んでしまえば、普段意識せずに開発できて良い感じですよというもの。

注意点としては、絶対の信頼をおいちゃダメだよってことで、JVN など一次ソースをあたることも忘れちゃならない。

スライド中で、Lumen に組み込んだ CI のサンプル用リポジトリへのリンクをはっていますが、面倒な方はこちらからどうぞ。

https://github.com/serima/security-checker-on-lumen

 

個人的には、packagist.jp の方が来ていたのがテンション上がった。いつもお世話になっていたので…、そしてメルカリに入社していたことにびっくり。タレント揃えてる感あるなーと。

イベントまとめとしてはここがとても良くまとまっているので興味ある方は是非。

PHP BLT #2 に参加してきました

余談ですが、@uzulla さんがトップバッターの LT ってその後のハードル上がるからやめてほしい…

個人的な次のミッション

12月末から1月頭にかけては順調にスタートを切れたので、今後もこの流れを継続するために目標を立てておく。

  • PHP7 CasualTalk の資料作成
    • WordPress のベンチマーク
  • Laravel brancher 検討
    • 実装方法検討
  • ウェブサービス作る
    • 企画は頭のなかにあるので極力シンプルに実装始める

CentOS 7 上の nginx で SSL 化 & HTTP/2 対応

冬休み中、SSL 化とそれにあわせて HTTP/2 対応だけやり残しました。
なので、空いた時間を使ってサクッと終わらせました。

Let’s Encrypt を使えば無料で SSL 証明書を取得できます。良い時代です。
以下のページを参考にさせていただき、手順通りにやれば問題無いです。

Let’s Encryptを使って簡単0円でサーバ証明書を取得

で、http/2 対応している nginx のバージョンは 1.9.5 以降のようなのですが、ソースからビルドするのはやりたくないなーということで yum からいけないかと調べた所ドンピシャな記事がヒット。

yumでnginx 1.9.5にアップデートしてHTTP/2に対応

この通りにやったら、今日時点では、Version 1.9.9 になりました。

で、nginx の設定ファイルの listen 443 ssl; となっている部分を listen 443 http2; に変更し、ssl_ciphers の先頭に AESGCM:HIGH を追加し、nginx を restart させれば完了。

serimacohttp2

無事に HTTP/2 対応できました。
正味、1 時間ぐらいで全部できるので暇な時に是非どうぞ!

CentOS 7 に PHP 7.0, nginx, MariaDB を Ansible でインストールする

前回の投稿でこの休み中にやることを決めました。

今日で冬休みも終わるので、成果をここで公開します。

  • 4年ぐらい前に借りたさくら VPS をずっと使っていた
    • CentOS 5, PHP 5.5, Apache, WordPress 3.9 というもはやレガシーな環境になってしまっていた
  • VPS を借り直すだけで同じ料金で VPS のスペック自体が 2 倍になる

というわけで、新規で VPS を構築しつつ Ansible で初期セットアップの自動化と、各種ミドルウェアのセットアップも自動化しました。

  • CentOS 7
  • PHP 7.0
  • nginx 1.8
  • MariaDB 5.5

初期セットアップについては、この記事が大いに参考になりました。とても助かりました。

Ansible でさくらのVPS の環境構築を自動化 ~ハマりポイントとともに~

初期セットアップでやっていることは、作業用ユーザ作成、SSH ポート変更、root でのパスワードログイン禁止、firewall の設定あたり。細かいことは上の記事を読んだほうが絶対に良いので、そちらにお任せ。

特筆すべきは、CentOS 7 になって iptables というより firewalld を使ったほうがよさげだったので、playbook でもその点は playbook にも反映しておきました。
firewalld は iptables のラッパー的な存在のようです。

さくら VPS のコントロールパネルからカスタム OS で CentOS 7 を選んで、minimal インストールを選択、root パスワードだけインストール中の画面で設定しておきます。

ミドルウェアインストールの playbook については、PHP 7 をやっぱり入れたかったのであえていうならそこくらい。
remi-php70 が既に公開されており、日々更新されているので、こちらを使いました。

New “remi-php70” repository

あと、Wordpress で ftp の代わりに ssh2 を使いたくなったんですが、現状、ソースからインストールしないと使えないらしいので、ssh2 は諦めました。

Solution : How to install ssh2 php7 extension.

(playbook 中で、sed を使いまくってるけど lineinfile に置き換えたい…けどまぁそこは今度)

WordPress 4.4 を使っていますが、今のところ問題なく PHP 7 で動作しています。
ベンチマークをとりたかったんですが、VPS 自体のスペックもかなり上がってしまったので、純粋に PHP の性能測定はできないかなと思い今回はやっていません、が体感早くなった気がするのでおすすめです。

ちなみに、どちらも playbook を github で公開しました。
細かいところはまだ全然出来てないですが、「完璧を目指すよりまず終わらせろ」とザッカーバーグ先生が言っていたのでこれで良しとします。

serima/centos7-initalize-ansible
serima/centos7-php70-nginx-mariadb-ansible

1日2〜3時間ほど作業時間を捻出してくれた妻に感謝!