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

丸善丸の内本店で開催されている「プロが教える!読んでおきたい言語書籍フェア」に行ってきた

https://c2.staticflickr.com/4/3942/33056973633_c2034a8a6b_c.jpg

4月1日から丸善丸の内本店 4Fのロビー横の一角で、「達人選書!! プロが教える!読んでおきたい言語書籍フェア」が開催されています。これは、丸善丸の内本店とコンピュータ出版販売研究機構(CPU)の共同企画で、各言語コミュニティからおすすめ本を5冊選出してもらって、それに言語の紹介を加えるパネルを用意することで、販促につなげようという内容です。

t-wada こと和田卓人さんから、PHPで誰かやってもらえませんかというお誘いがあって、面白そうな企画だったので自分で引き受けることにしました。

コミュニティが解説を書いているプログラミング言語は以下の9つ。

あとCPUが書籍を選出している言語が4つあります。

展示場所に行ってみた

今日時間があったので、東京駅近くの丸善丸の内本店まで行ってみました。

https://c1.staticflickr.com/3/2876/33870375275_ac25ff94cd_b.jpg 展示場所は丸の内本店4Fの技術書棚近くのロビー横。

https://c1.staticflickr.com/3/2830/33485729600_5b06ec674a_z.jpg こんな形でパネルと書籍が展示されています。

https://c2.staticflickr.com/4/3940/33485729390_241d8be524_z.jpg

Ruby 高橋さんのパネル

https://c1.staticflickr.com/3/2905/33026486864_831f92db49_z.jpg

小山のパネル

https://c1.staticflickr.com/3/2840/33026486744_11696c7ecb_z.jpg

Python 鈴木さんのパネル

https://c1.staticflickr.com/3/2852/33870373335_aabe9f4584_z.jpg

Perl/Go 牧さんのパネル

https://c1.staticflickr.com/3/2879/33829273186_4735f4e41c_z.jpg

Scala 水島さんのパネル

https://c2.staticflickr.com/4/3727/33870371765_c386204668_z.jpg

HTML 吉川さんのパネル

https://c1.staticflickr.com/3/2921/33870372895_b0b70e7068_z.jpg

CPU の推薦書籍たち

https://c2.staticflickr.com/4/3856/33829273706_bacf64f7f0_z.jpg

言語の解説文が載っている小冊子はご自由にお持ち下さいでした。

私の紹介文

このフェア、Web的に見える部分にはコンテンツが存在しないようです。このままだと数年も経てばきっと検索に引っかからなくなる気がするので、せめて自分が書いた紹介文をここに記載しておくことにします。

あと本の紹介の際は

  • 1冊は初心者用のものを入れる
  • 1冊は言語に依らないお勧め本を入れる

という縛りがありました。

PHPの紹介

PHPの発端は、1995年にRasmus Rerdorf氏がC言語で書いたCGI用のツール集です。当時はウェブがまだ生まれたばかりで、ちょっとしたことをウェブサーバにやらせるための便利なツールとして徐々に広まっていきました。

ウェブに特化したプログラミング言語としてのPHPの位置づけが明確になったのは、1998年のPHP 3からです。他の言語から有用な構文をどんどん取り込んでいく一種の無節操さは、プログラミング言語に厳格さを求める人達からは嫌われましたが、「何となく書いてもそれなりに動く」というPHPのとっつきやすさがウェブプログラミングの敷居を大きく下げたのも確かです。

近年ではPHPにもモジュール指向の波が到来し、PHPライブラリのパッケージマネージャComposerを用いて多くのライブラリを利用し、また自分にあったフレームワークを使いつつ、効率的に開発を進めていくのがトレンドになっています。未だに乱立しているフレームワークも、徐々にモジュールベースに書き直され始めており、Composerを軸とした共通基盤ができつつあります。

2015年にリリースされたPHP 7は、内部構造の抜本的な改善によって大幅に性能を向上させています。今後は厳密な型チェックを可能にする方向で構文が強化される流れです。

お勧め本

確かな力が身につくPHP「超」入門

確かな力が身につくPHP「超」入門

確かな力が身につくPHP「超」入門

ウェブの動作の仕組みから、PHPの文法、データベースの連携までわかりやすく解説されています。

いまどきのアルゴリズムを使いこなすPHPプログラミング[開発テクニック]

PHPアルゴリズムを学ぶという大変珍しい書籍です。

PHPはどのように動くのか

PHPはどのように動くのか ~PHPコアから読み解く仕組みと定石

PHPはどのように動くのか ~PHPコアから読み解く仕組みと定石

PHPが内部でどのように動作しているのか、その内部構造を解説している貴重な本です。

Laravel リファレンス

Laravel リファレンス[Ver.5.1 LTS 対応] Web職人好みの新世代PHPフレームワーク

Laravel リファレンス[Ver.5.1 LTS 対応] Web職人好みの新世代PHPフレームワーク

近年大躍進しているPHPフレームワークの解説本です。

スティーブズ (1)

スティーブズ 1 (ビッグコミックス)

スティーブズ 1 (ビッグコミックス)

コンピューターが個人の手に届き始めた頃の熱いやつらの物語。最初から決まってることなんか無い。

自己紹介

フリーランスエンジニア。Webシステムの開発を行うかたわら、日本PHPユーザ会の運営に関わる。毎年開催される「PHPカンファレンス」には2003年よりスタッフとして関わる。共著書に「超・極める! PHP」「PHPエンジニア養成読本」「Laravelエンジニア養成読本」など。好きな作家は藤井太洋、好きな声優は杉田智和

おまけ

その他枠は少し悩んで、一般的なエンジニア向け名著と言われるものはきっと誰かが出してくるだろうと思ったので、ちょっと遊んで「スティーブズ」を選びました。蓋を開けてみたら、こちらが想定していた名著はあまり選ばれてなかったわけですが、まあいいやということでそのままスティーブズで行くことにしましたw

技術書に限らず出版業界は苦しい状況がずっと続いているので、このように複数の出版社と書店を横断した取り組みが行われるのは素晴らしいことだと思います。4月は新入社員としてエンジニアの門をくぐる人も多数いると思われるので、こういうことがきっかけでエンジニアリングの面白さに気づいてくれれば言うことはないです。

フェアはゴールデンウィークくらいまでは開催中だそうです。お近くに寄った際は覗いてみて頂けるとありがたいです。

デブサミ2017のランチセッションに登壇します

デブサミ2017

えらい久しぶりの更新ですw

さて、今週末に目黒雅叙園で開催されるDevelopers Summit 2017 通称デブサミ2017。その2日目2/17(金) のランチセッションに登壇することになりました。

event.shoeisha.jp

テーマはフリーランスの働き方について。ランチスポンサーはレバテックフリーランスというそのものずばりのサービスをやっているレバレジーズさん。

以前に、同じレバレジーズがやっているteratailの木下さんからコミュニティについてのロングインタビューを受けたことがあって、おそらくそれきっかけでお呼びがかかったのだと思います。

news.mynavi.jp

本日レバレジーズさんに伺って事前打ち合せをしてきたのですが、話はいくらでも広がるから30分はあっという間に過ぎるよね―という話で落ち着きました。パネラーは私の他には水野竜与志さん、フリーランス4年目のバリバリの若手の方です。セッションチェアはレバレジーズの林英司さん。お会いした印象はは気のいいお兄さんといった感じですが、実はレバテック事業部の事業部長さんです。

登録は満員になっていますが、デブサミは会場に余裕があれば当日参加も可能なシステムになっているので、並んでいればたぶん入れると思います。ご興味ある方はさくっと参加登録をどうぞ。デブサミ自体の参加申込みは明日2/13(火)の13:00までなので、急げ諸君。

日本のPHPコミュニティのあゆみ

ソフトウェアデザイン2016年9月号が発売されました。

この号の第2特集でPHPが取り上げられていて、私もコミュニティについて2Pほど執筆しています。

ソフトウェアデザイン編集長の池本(@XR230)さんから企画案をいただきまして、PHPのslackチャンネルで執筆者を募集して、実現された記事となっています。

私が執筆した第4章のコミュニティについての文章は、各グループの紹介にほぼ終始していて、あまり読み応えのある内容とはいえません。自分が締め切りすぎまでもたもたしたせいでページ数が減った結果、前半に用意していた導入部を全部ボツにするという判断で、現在のものになったのでした。

ということで、せっかく執筆した前半導入部なので、ここで公開することにします。

日本のPHPコミュニティのあゆみ

ソフトウェアデザイン2016年9月号 PHP特集ボツ原稿

コミュニティの発端

PHPに関するコミュニティらしきものが日本に生まれたのは、1997年のPHP-jpメーリングリストに遡ることができるでしょう。当時のPHPのバージョンは PHP2.0、「漢字patch」と呼ばれるものを各人が当てて日本語を使用していました。そのままでは日本語を扱えないものに対して、有志の人々が協力して日本語を扱えるように作業をし、そこでコミュニティが形作られていくのは90年代の日本のソフトウェアシーンとしてはごく当たり前の光景でした。

その後、PHP3.0.7に対して日本語を扱えるようにしたものを、日本のコミュニティとして独自に配布を始め、日本語も問題なく使用できるウェブプログラミング言語として評判になっていきます。そこからさらにコミュニティは発展して、2000年に「日本PHPユーザー会」の発足へとつながっていきます。この時はまだ自分はユーザ会には関わっていなかったですが、当時のニュース記事などを読むときちんとメディアを呼んで記者発表会が行われたようです。日本PHPユーザ会は、2000年7月2日に日本で最初のPHPカンファレンスを開催し、その後毎年欠かすことなく開催を続けています。

メーリングリストからブログへ

2000年代前半は、コミュニティのやりとりの中心はもっぱらメーリングリスト(ML)でした。普段MLでやり取りしている人達と、年に数回行われるPHPカンファレンスやLinuxConferenceなどのリアルイベントで顔を合わせて話すことで関係が深くなっていったということは、この頃なら誰しも経験していると思います。MLの流量も今とは比較にならないほどで、多いときは1日に100通以上が流れていたと思います。

そこから大きく変わってきたのは2004年頃にブログが流行ってきてからです。簡単な方法で広く世界に情報発信できるブログというツールは、その界隈での有名人を多く生み出すことになりました。PHPコミュニティでもその傾向はあり、PHPに関する情報を発信し続けるブログとそのコメント欄というコミュニケーション手段が加わることで、人のつながりが多層になったように思います。

情報をブログで発信する人が増えてくると、それをまとめて読みたい要望も生まれてきて、特定ジャンルの各ブログのRSSを一箇所に集約して配信する「プラネット」と呼ばれるサービスが流行したこともありました。

そしてSNS

今で言うSNSが最初に使われ始めたのは2004年頃でした。mixiGreeが日本発のSNSとして相次いでサービスを開始したのも2004年ですし、海外サービス勢もその後次々に日本に上陸してきました。しかしSNSが流行し始めた当初は、ITエンジニアコミュニティではさほど影響を与えていなかったように思います。

この流れが変化したのは2007年頃からのTwitterの流行だと思われます。Twitterは最初マイクロブログと呼ばれていたように基本的にはオープンな場で、人々の情報発信の敷居を大幅に下げました。ブログほど堅苦しくなく、日々の疑問やコードを書いていて感じたちょっとしたことなどがどんどん投稿されていき、そこから様々なコミュニケーションが生まれました。Twitterが広く一般に使われ始めるのは2010年頃からですが、それ以前よりIT関係者はこの新しいツールを上手く使いこなしていたように思います。

追って日本に上陸したFacebookも、ITエンジニアコミュニティにじわじわ浸透し、現在では一部のPHPコミュニティの主要コミュニケーション拠点にまでなっています。

あいまいになるコミュニティ

ブログやSNSがコミュニケーションの中心になることによって、ITエンジニアコミュニティに大きな変化が表れました。それは個人のブランド力の増大と、それに呼応した組織への帰属意識の希薄化です。2000年前後のエンジニアコミュニティは、組織や団体という看板を必要としました。そのメンバーの一員になるという帰属意識が、人々を結びつけるのに大きな影響力を持っていたのです。しかしブログやSNSでの活動は、それを書いているのが「どこのだれ」ではなく、ただ単に「だれ」ということのみが注目される傾向が強く、組織としてのコミュニティの役割は一面ではすでに失われつつあります。

個人が特定の組織に帰属することなく、その人それぞれの興味ある対象ごとに広くゆるく繋がっている状態、それが現在のITコミュニティの実態だと言えるでしょう。そういう意味では、GitHub上の各プロジェクトや、各Q&Aサイトも今風のコミュニティの一形態と見ることもできます。

PHP BLT #4 で 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/初回対談ゲスト:小笠原治」参加メモ