PHP BLT #6 で LT してきた

例によってメルカリで LT (PHP BLT #6) してきました。
PHP BLT #2 のときもメルカリで LT してるんですが、その時と比べて内装がめちゃくちゃキレイになってた…

オシャレスペースすぎてドギマギしました。記者会見とかできるよ…
会場のパノラマ写真を記念に撮ったんですが、 public にしていいものか悩むのでここでは公開しませんw

他の方の発表で特に刺さったのは、

Dockerを使ったPHPアプリ開発とCIについて
Introduction to Guzzle

あたり。

オーディエンスに、Docker を開発環境で使ってる人ー?と呼びかけられてて、チラホラ手を挙げてる方がいたのは見たんですが、本番環境で使ってる人ー?となると誰も手を挙げてなかったのが印象的でした。
Guzzle はコントリビュート出来るチャンスがいろいろあるよと、コントリビュートしてる @DQNEO さんが言ってたのでおそらくあるんでしょう。コードリーディングしていきたい気持ちになりました。

さて、僕の発表スライドはこちら。

今回は PHP 書く人ならおなじみの Carbon を題材にしつつ、最終的に OSS 運営の知見につなげたんですが若干強引だったような…。

ちなみに、これから使うなら Carbon じゃなくて、Chronos じゃない?とは言いつつ Laravel が Carbon 使ってる限り捨てづらい気もしますね。個人的には、Laravel 使わない PHP プロジェクトがあれば積極的に Chronos を使っていきたい所存です。

スライドに両リポジトリで起こった時系列の話を書いているのですが、そこにリンクは張っていないのでここではリファレンスという意味で置いておきます。


2012-09-11 Carbon v1.0.0 公開
2012-09-12 Carbon のリポジトリでイミュータブルに出来ないかという issue が作られる
https://github.com/briannesbitt/Carbon/issues/2
2013-04-19 Eloquent 内で DateTime の代わりに Carbon を使っては?という提案 issue が作られる
https://github.com/laravel/framework/issues/999
2013-04-20 Laravel に Carbon が取り込まれる
https://github.com/laravel/framework/pull/1012
2013-05-26 なぜ Carbon を使っているのか?という質問 issue が作られる
https://github.com/laravel/framework/issues/1408
2013-05-28 Carbon が取り込まれた Laravel v4.0.0 (php >= 5.3.0) が公開される
https://github.com/laravel/framework/releases/tag/v4.0.0
2013-06-20 DateTimeImmutable class が実装された PHP 5.5.0 がリリースされる
http://php.net/ChangeLog-5.php
2014-04-17 CakePHP に Carbon が取り込まれる
https://github.com/cakephp/cakephp/pull/3328
2015-05-08 CakePHP Community で、Carbon を使うのをやめないかという提案がされる
https://github.com/cakephp/cakephp/issues/6509
2015-10-12 Chronos v0.1.0 公開
https://github.com/cakephp/chronos/releases/tag/0.1.0
2016-01-02 Carbon がすべて Chronos に置き換えられた CakePHP 3.2.0-RC1 (php >= 5.5.10) が公開
2017-01-08 Carbon needs to be more ACTIVE. (2016年は一度もリリースなし)
https://github.com/briannesbitt/Carbon/issues/839
2017-01-11 @lucasmichot が member に追加される
2017-01-15 1 年 3 ヶ月ぶりに Carbon のマイナーバージョンアップされ 1.22.0 が公開


Softbank を解約して mineo の SIM に変更した

先月末、なぜか会社の同僚周辺で MVNO に乗り換えるブームが訪れた。
そのブームに乗っかって、無事に MVNO 乗り換えを果たしたので忘備録も兼ねて記録しておく。

僕のケース
・利用端末 iPhone 5S / iOS 10.2.0
・利用キャリア ソフトバンク
・利用プラン ホワイトプラン+ウェブ使用+パケットし放題フラット for 4G LTE+テザリングオプション

端末代金は一括で支払っていたのですが、上記プランで月に大体9000円前後かかっていた。
また、テザリングもそれなりにしていたので、7GB制限も月末の2〜3日前には、かかってしまうような状態で、低速化されると本当に使い物にならなくてストレスが半端なかった。

非常に悩んだ結果、僕は MNP で iPhone SE (SIMフリー版) + mineo D プラン、デュアルタイプ(10GB、データ通信+音声通話) + 留守番電話サービスに切り替えることにした。
10GBは多すぎるかなと思ったけど、プラン内だったら無料で変更可能なので、後々調整すれば良いかなと。
同僚たちは LINEモバイル or FREETEL or mineo あたりで契約している感じだったかな。

いろんなブログや公式サイトを見たりして、利用料金はぶっちゃけ、MVNO ならどこも大差ないと思った。
安いに越したことはないけど、数百円の差だったりするので、そこまで気にしないスタンス。
気にしたのは、やはり通信速度なんだけど環境要因が非常に大きいので、実際使ってみないとなんとも言えなかったりすると思ってた。

そのなかで、通信速度比較をものすごく詳細にやっているブログがあって、ものすごく読み込んだ。
どうして mineo にしたかっていうのは、正直このブログがすべてといっても過言ではない。
個人的には、運営姿勢が一番のポイントとなった。カード差し替えを頻繁にするような運用はしないつもりだったので、長期目線で良さそうだった。

http://yesmvno.com/speed-hikaku-no2/

上記ブログだと、通信速度の面で、Y!モバイルをものすごく推しているが、電話をほとんどしない自分にとってはちょっと割高だなとは思ったので、今回は除外。
LINEモバイルは、運営姿勢がまだ不明確なところもあるので、ちょっとリスクをとるのは怖かったので除外。(一応縛りあるし)

MVNO は選択肢が多すぎて迷ってしまう。
でも、迷ってる時間がもったいないと感じてきたのでもう mineo でいいんじゃないかと思った。
電話もある程度するなら Y!モバイルがいいかも。
ソフトバンクからのMNP転出手続きをする際に、どこに乗り換えるか聞かれ、他社のですと答えたら、Y!モバイルのキャンペーンを提示されたので、それをうまく使うのもありだと思う。

今回の僕の手順としては、

1. 乗り換え先とプランを決める
2. iPhone SE(SIM フリー版) を購入する
3. Softbank に電話して、MNP 転出したいと伝え、MNP 予約番号を取得する
4. MNP 予約番号を使用して、mineo で申し込み
5. 使用している iPhone 5S のバックアップをとる (僕の場合は Macbook)
6. 郵送で mineo から SIM カードと ID 情報が届く
7. iPhone SE に mineo SIM カードを挿入して、とりあえずアクティベートする (この時点では通信はまだできない)
8. iPhone SE を Macbook につないで復元を行おうとするも、まずは iPhone の OS が古いから復元できませんと言われる
9. iOS アップデート
10. 復元
11. ID/Pass を利用して mineo のマイページにログイン
12. 切り替え手続きを行う
13. @softbank.ne.jp ドメインのメールアドレスしか伝えていなかった人に、gmail からメルアド変更の通知を送る
14. 新端末で通信ができるようになり、(端末の再起動が必要だった)、旧端末の通信ができなくなる

こんなところかなー。
注意点は、LINEのフレンド・トーク履歴を新端末で引き継ぎたかったら、復元だけじゃ足りないので事前に調べて準備しておくことが絶対に必要。
今回は、ミスってトーク履歴を失ってしまった。(フレンドリスト失わなくて本当に助かった…)

という感じですね。
この作業、手間は手間だけど、これで毎月4000円以内には必ずおさまるようになるはずなので、長い目で見たらすぐにペイするでしょう。
残作業としては、iPhone 5S を Apple に下取りしてもらうくらいかな、、そのためにいろいろと準備をしないといけない。

これを読んで、mineo にするってひとは、紹介リンクを使ってくれると嬉しいです。

http://mineo.jp/syokai/?jrp=syokai&kyb=U1S6C4H5M0

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 ってその後のハードル上がるからやめてほしい…