読者です 読者をやめる 読者になる 読者になる

PHP BLT #4 で PHP の興味深い挙動を知った

php

photo by Dana McMahan

昨日は PHP BLT #4 でメルカリに行ってきた。

phpblt.connpass.com

そこで @uzulla さんが雑談的に発表された内容に面白いものがありまして。

たしかこんな感じのやつ。

$values = [
  'a' => null,
  'b' => 'abc',
];
foreach ($values as $key => &$value) {
    $value[$key] = '123';
    // 本当は $key[$value] = '123' の意図
}

ここで間違えて $key と $value を入れ替えて記述したのはいいけど、$value が null の時にはエラーにならなくて、abc の時に初めて

PHP Warning: Illegal string offset 'b' in /some/path/hoge.php on line X

なんてのが出るという話。

値が null の変数は未定義と等しく扱われるので、そこで変数の生成と代入が同時に行われる。null は未定義と等しいのは以下の例をみても分かる。

$a = null;
var_dump(isset($a)); // 結果は bool(false)

で、先の uzulla さんのコードを、エラーを出さないようにキーが 'b' の要素を抜いて実行すると、当然エラーにはならず $values は以下のようになる。

$values = [
    'a' => null,
];
foreach ($values as $key => &$value) {
    $value[$key] = '123';
}
var_dump($values);

実行結果:

array(1) {
  ["a"]=>
  &array(1) {
    ["a"]=>
    string(3) "123"
  }
}

あれ? なんで配列が入れ子になるんだろうと不思議に思ったので、色々試してみたところ挙動が理解できた。

この場合 foreach でループを回す際の $value に & がついて参照になっていることがキモで、ループ内で新たな配列が作られた後、それが $values キー 'a' の値として上書きされているということになる。

分かりやすく代替コードで示すとこう。

foreach ($values as $key => &$value) {
    $tmp[$key] = '123';
    $value = $tmp;
}

参照をやめれば、当然ながら要素の上書きは起こらない。

$values = [
    'a' => null,
];
foreach ($values as $key => $value) {
    $value[$key] = '123';
}
var_dump($values);

実行結果:

array(1) {
  ["a"]=>
  NULL
}

クリスマスイブに「さくらの聖夜」というイベントに行ったら、とんでもない発表が行われていたw #さくらの聖夜

クリスマスイブの 12月24日 19:00 から DMM.make AKIBA で「さくらの聖夜」というイベントが開催されたわけですよ。さくらインターネットが不定期に開催している「さくらの夕べ」のクリスマスイブ特別版という位置づけで、今年で3年目になります。私はたまたま毎年参加しているので、今年も行ってきました。

sakura-kanto.doorkeeper.jp

2部構成の前半はさくらのこれまでのあゆみ

法林さんのイベント開始のあいさつのあとの最初のセッションは、さくらインターネット社長の田中さんとさくらインターネット研究所所長の鷲北さんによる、写真で振り返るさくらインターネットの歴史セッション。前身となった会社の初データセンターの写真とか、鷲北さんの前職のときの写真とか、ラックマウントサーバに絡みつくぐちゃぐちゃのケーブルとか、綺麗に整理されたケーブルとかw

こちらのセッションも軽妙なお二人のトークで大変面白かったのですが、それをふっとばす内容が後半に控えているとは、その時は露にも思わなかったのです…。

後半に IoT 絡みのすごい発表をぶっ込んできたw

後半は、今回の会場である DMM.make AKIBA を立ち上げ今年の8月に古巣のさくらインターネットにフェローとして復帰した小笠原治さんと、様々なネットデバイスを発表して飛ぶ鳥落とす勢いのCerevo 岩佐琢磨さんによる IoT 絡みのセッション。基本は小笠原さんの発表に岩佐さんが突っ込むという形式でした。

セッション冒頭でも「IoT」がバズワード化しているという話が出ましたが、小笠原さんがさくらに戻ったらすることは IoT 絡みの何かだということはすでに様々なメディアで語られているので、実際にどのようなサービス内容になるのか一部には注目を集めていたわけです。

weekly.ascii.jp

で小笠原さんが「これここで発表しちゃっていいのかなー」とか言いながら、さくらが来年サービスを開始する予定の「さくらのIoTプラットフォーム」の概要をしれっと発表しちゃったのでもう大変。おいおいさくらは一部上場しても暴れん坊だなw

さくらのIoTプラットフォームはオールインワンパッケージ

www.slideshare.net

小笠原さんから公表されたさくらのIoTプラットフォームは以下の構成要素から成り立っていました。

  • CerevoBlueNinja が乗った SIMモジュール
  • このサービスに特化した通信SIM
  • SIMのデータの送り先としてさくらのプライベートクラウド内のエンドポイント、DB、ストレージ、ルールエンジン
  • それらを外部から叩くAPI

小笠原さんが DMM.make AKIBA でさまざまなハードウェアスタートアップの人達と話して分かったのは、彼らの中でインターネット技術を理解している人は本当に少なかったことだったそうで、そういう人達が手軽に使えるようになるには上記のようなオールインワンのものが必要なのでしょう。

さくらインターネット先日発表したブロックチェーン関連のサービスで株価が爆上げ中らしいですが、こちらにも絡んでいる小笠原さんは、ブロックチェーンは別に FinTech だけのものではなく、IoT でデバイスから流れていくる連続データを抜けなく安全に処理することにブロックチェーン技術も使えるだろうとおっしゃっていました。

SORACOM とは真逆のサービス方向が面白い

IoT 専用の通信サービスとしては SORACOM さんが革新的で話題になっているわけですが、今回のさくら IoT も SORACOM も価格を圧倒的に安くするというユーザ目線は同じものの、そのサービスの方向は全く正反対とも思えるところが大変面白いです。

つまりこういうことです。SORACOM は AWS 出身の玉川さんがやっているだけあって、技術者が機能を隅々までコントロールしたいという目的のもとに設計されています。そのため最小限の使用では最小限の金額しかかからず、使った分だけ支払えば良いというモデルです。実サービスを構築するにはAWS IoTやその他クラウドサービス等を組み合わせて自在に使える技術力を、サービス設計者が持っていなければいけません。設計者にとってコスパに優れて使いやすい「技術要素」に徹するというのが SORACOM の特徴です。

対して今回発表されたさくらのIoTは、SIMモジュールからのデータの送り先はさくらのプライベートクラウドに限定されていて、一通りそこだけで完結する構成になっています。さらに外部からデータを利用したい場合はAPIを使って取得すればよいわけですが、ワンストップで全て揃っているのはサーバサイドに弱い人とってはそのほうが良いからでしょう。これまで IaaS に特化してきたさくらが、IoT を軸にしてようやく PaaS を志向しはじめたと捉えることもできて、個人的には大変感慨深いです。

少し考えれば分かるように、これはどちらの方向が正しいかではなく両方共正しいしどちらもあって良い、使う側の志向によって好きな方を選べば良いわけです。

IoT関連でも特徴的で面白い要素サービスがどんどん生まれてきそうで、来年は楽しみな年になりそうです。

NCMB Android SDK v2の設計方針の記事を書きました

Nifty Cloud Mobile Backend (NCMB)エヴァンジェリスト活動を現在おこなっています。

上記の記事にも書いたように、エヴァ活動の最初はNCMB Android SDK v2の設計と開発のお手伝いを主にしていました。9月いっぱいでそれも終わり、SDK v2は無事にリリースされました。

少し時期が開きましたが、その NCMB Android SDK v2 の設計に際して注意した点などを NCMB の Qiita ブログに書きました。

qiita.com

久々の Java プログラミングや、ほぼ初めての本格 Android 開発ということもあって、なかなか苦労したことも多かったですが、総じて楽しい経験をさせてもらったという感想です。

「落合陽一 meets DMM.make AKIBA/初回対談ゲスト:小笠原治」に参加した

www.facebook.com

ささけんの上の Facebook ポストで知ったイベントに行ってきた。

peatix.com

ホストとなる落合陽一さんは、イベントで登壇して喋っていることを観客席から何度か見ていて、超アグレッシブで面白い人だなぁと感じていた。

ささけんから『レポートよろ」とコメントついてたので、途中まで頑張ってログをメモってたんだけど、落合さんと小笠原さんという頭の回転の早いお二人の掛け合いが始まったあたりから、自分も脳みそフル回転で同じテーマについて考えながら話を聞いたほうがより楽しめるタイプのイベントだなということに気がついて、ログ取りをやめて話に集中するようにした。

落合さんは、筑波大の研究室ピクシーダストという自分の会社で

Digital Nature (デジタルネイチャー)

という単語をテーマに研究活動を続けていて、これは

Digital | Nature

という2つの単語の間の縦棒、壁をいかにしてぶっ壊すかという意味だとおっしゃっていた。世の中森羅万象の物事がすべてコンピュータで感知、制御できるようになった時に、自然と情報世界が同列に扱われる上位概念として Digital Nature を位置づけ、その視点でこれまでの様々なコトモノが再構築されていく。確かに、デジタルと自然って対立軸に置かれる場合が多いので、それを同一に見る視点で物事を考え、そこで何が必要かを考えるという発想は目ウロコだった。

帰りの電車の中でもやもや考えながら気がついたテーマは、さて Digital Nature の考え方で諸々再構築されていった場合「人間はそれに合わせてどのように変わっていくのか?」ということだった。イベント中に落合さんも「人間こそインターネットだ」ということを言っていたが、そこで話された人間モデルはあくまでも現在の人間活動だったように感じる。まだコンピュータの手の届かない場所は世界中のいたるところにあって Digital Nature と呼べる環境はまだ限定的だと思うけど、それでも都心で暮らしているとそれに近い状況にはもうすでになっているはず。

Digital Nature な場の中で生活していくことで、人の思考や行動はどのように変わっていくのだろう?

ぱっと思いつくのは、能動的受動的にかかわらず情報を生み出すことそのものがより価値になっていくだろうということ。生み出されるより多くの情報が、その人の個の存在の独自性を高めていくだろう。もちろんプラスにもマイナスにも作用するし、バカッター炎上案件のようにセンセーショナルな愚行があっという間に世界を駆け巡る例を、私達はいくつもすでに目撃している。

何にしてもエキサイティングで面白いイベントだった。2回目もぜひ参加したいと思う。

どうせなので途中まで取ったログも貼り付けておく。


「落合陽一 meets DMM.make AKIBA/初回対談ゲスト:小笠原治」参加メモ

LL Ring Recursiveで「エンジニア不足はいつまで続くのか」というセッションをやります

いよいよ LL Ring Recursive が開催される9月5日が来週に迫ってきました。

ll.jus.or.jp

「エンジニア不足はいつまで続くのか」を企画した経緯

私は今回、「エンジニア不足はいつまで続くのか」というパネルディスカッションのセッションを企画しました。

ll.jus.or.jp

カンファレンスや勉強会で、発表者のスライドの最後に「エンジニア募集中」「We're hiring!」という文章が当たり前に踊るようになってどのくらい経ったでしょうか。2000年代後半のソシャゲブームがはじまった頃には、すでにWebエンジニアの獲得競争が加熱していて、GREEDeNA の高額な人材紹介料が話題になったものです。

あれから世の中ではクラウドが一般的になり、ビッグデータ機械学習などの新たなトレンドも加わって、相変わらず Web 業界では人材不足が続いています。知人の会社から「どこかに良いエンジニアはいないでしょうか?」という問い合わせが来る頻度も、時とともに増えている印象です。

業界的に深刻な人材不足が続いているにもかかわらず、それが解消される気配が一向にない。もちろん様々な理由があるのでしょうが、もはや皆がそういうものだとあきらめムードに入っている感じもあります。雇われる側のエンジニアにとっては良い状況が続いていると言えなくもないのですが、加熱しすぎた人材獲得戦にはどこか歪んだものを感じてしまうのも確かです。

ということで、この辺りで冷静に状況を俯瞰して見て、Web 人材業界では今何が起きていてこれからどうなっていくのか、様々な視点から考察してみようというセッションを企画してみました。

登壇されるのは以下の方々です。

  • エンジニア向けの Web メディアを運用しエンジニアの転職事情にもお詳しい、エンジニアType 編集長の伊藤健吾 @itoken0226 さん

  • 株式会社ドワンゴ内でエンジニア文化の支柱になり、採用活動にも関わっている @meso さんこと清水俊博さん

  • 本イベント的にはナイスなタイミングでクラウドパックを退職されフリーランスとなった吉田真吾 @yoshidashingo さん

  • 従来の就職の形にとらわれず新しい働き方を模索しているクラウドワークスの吉田浩一郎 @yoshidaCW さん

もちろん私も司会者として登壇します。

このセッションを企画するにあたり、各種の統計資料や IPA が毎年発表している「IT人材白書」なども読み込んでみたのですが、ここで扱われる IT 人材は、大規模案件の下請けやいわゆる SI ビジネス的なものも多く含んでいて、少し自分の興味とは違うなぁと思っています。今回のセッションは、おそらく参加者の多くが居るであろう、Web 業界、インターネット業界に対象を絞って議論を進めたいと考えています。

鹿野さんデザインの当日パンフレットを見逃すな

Maker Faire Tokyo 2015 後の燃え尽き症候群から復活したスタッフの鹿野恵子さんが、当日パンフレットのデザインを昨晩仕上げてきました。すげーなんだこれww プロレス会場で行われるイベントに相応しすぎるスポーツ新聞チックなパンフレットです。

gyazo.com

ぜひともイベントに参加してパンフレットをゲットしていただきたいです。チケットは Peatix で3,000円で販売中です。

llrr.peatix.com

NIFTY Cloud mobile backend (NCMB) のエバンジェリスト記事が公開されました

先月、以下のブログ記事で報告しましたが、NIFTY Cloud mobile backend (NCMB) というサービスのエバンジェリスト活動の仕事を現在させていただいています。

koyhogetech.hatenablog.com

エバンジェリスト活動の一環で、NCMB の 6/15 リリースの新機能である Google 認証機能を Android で行うやり方の記事を Qiita に書きました。自分としての初エバンジェリスト記事です。

qiita.com

qiita.com

かなり丁寧に書いたので、いろいろ事前準備するだけで 1 記事を使うという贅沢っぷりですw まあその分この記事を読んでその通りにやれば、ハマる人はまあ出ないだろうという初心者に優しい記事になっています。

自分でやってみて分かったのですが、この辺の複数サービス連携機能は、こっちで生成した文字列をあっちに入力して…というのが複雑に絡み合っていて、ぱっと見すごく分かりにくいです。どこで何が必要かということを意識して整理して書いたので、その点は少しは分かりやすくなっていると思います。

Co-Edoで開催されている「エンジニアのための法律勉強会」は法律と向き合う肌感覚を教えてくれる

https://www.flickr.com/photos/paige-pics/2283584007/ cc by Paige

昨日は、Co-Edo で開催された「エンジニアのための法律勉強会 #4」に参加してきました。

この勉強会シリーズは、東京山王法律事務所野島梨恵氏を招いて、主にソフトウェア開発業務における各種法律を、実際の判例を題材にして解説していただくというものです。講師の野島さんがたいへん面白い方で、軽妙な語り口のぶっちゃけトークで、判例の読み方のキモや、トラブルに備えて普段からどのような点に気をつけていればよいかということを、わかりやすく解説して下さいます。

開始当初は3回くらいの予定が、内容がとても面白く評判も良いので、主催者の田中弘治さんがそのままシリーズ化したという経緯で、今回第4回が開催されました。

私はたまたま第1回から参加していて、野島さんの話の面白さにつられて毎回参加メモを gist に残していたので、この辺でリンクをまとめておきたいと思ってこのエントリを書きました。

勉強会が終了して、参加メモを gist にポストするたびに「こんな興味深い勉強会があったのか」とか「知ってれば行ったのに」という声を耳にするのですが、募集段階で私も何度か告知を拡散しているので、ちゃんとそれを拾ってきちんと勉強会に足を運んでください。

いやほんとよい勉強会シリーズなので。

第1回

coedo-dev.doorkeeper.jp

第2回

coedo-dev.doorkeeper.jp

第3回

coedo-dev.doorkeeper.jp

第4回

coedo-dev.doorkeeper.jp

第5回

coedo-dev.doorkeeper.jp

第6回

coedo-dev.doorkeeper.jp

第7回

coedo-dev.doorkeeper.jp

第8回

coedo-dev.doorkeeper.jp

第9回

coedo-dev.doorkeeper.jp

第10回

coedo-dev.doorkeeper.jp

第11回

coedo-dev.doorkeeper.jp

(開催のたびにここに情報を追記していく予定)