要約
今現在プログラマーがかっこいい職業ということになったのは、
2010年頃に必要な技術が出揃ったからだと思います。
それまでは、例えプログラミングができたとしても、
それを使って社会に貢献するのは難しいことでした。
ソフトウェアで何かをするには、
プログラミングスキルだけでなく、それなりの予算と大きな組織が必要でした。
それに対し、2010年以降はプログラミングさえできれば社会に貢献しやすくなりました。
その頃に何があったのかについて話したいです。
きっかけ
自己紹介記事を書いていた時に思い出したのですが、
2010年頃って本当に技術的に楽しかったよなーって思いました。
主にAndroidとかが出てきた時期です。
一般的には1990年代の後半がITの転換期とされていると思いますが、
僕はこの2010年前後が一番のターニングポイントだったと思っています。
プログラミングというものの持つ意味が大きく変わったなと総括できると思います。
この文章の狙い
僕と同世代の方には、そんな時代もあったな〜と当時を懐かしく思っていただければと思います。
僕よりちょっと年下だったりプログラミングを後から始めた方におかれましては、
今現在のプログラミング界隈の当たり前というのは、
比較的最近形成されたものなのだと知っていただければと思います。
それまでのプログラミング
僕は昔からプログラミングができたのですが、
自分が作ったものを他の人に使ってもらう手段はほぼなかったです*1。
だから、基本的にはプログラミングは個人の趣味でした。
プログラミングができるということとそれが社会との関わりになるということは全然別の問題でした。
今プログラミング能力が100の人が社会に与えられる影響が100だとしたら、
当時その能力値でできることは5くらいだったと思います。
そこからどのように個人のプログラマーにできることが広がっていったのか話します。
この頃に登場・普及した技術
Chromeが登場したのは、ウィキペディアによると2008年だそうです。
僕が使い始めたのは2009年頃だと記憶しています。
ここで初めて自分が作ったものを気軽に人に使ってもらえるようになりました。
それまで、Windows向けのデスクトップアプリとWebアプリでは表現力と性能に雲泥の差がありました。
しかしながら、デスクトップアプリを他人にインストールしてもらうのはハードルが高かったです。
だから、複雑なものはデスクトップアプリで作り、チープなものをWebアプリとして作っていました。
そこから、Ajaxやブラウザ戦争やHTML5/CSS3などの流れがあり、徐々にWebで本格的なアプリを作れるようになりました。
そして、Chromeの性能と普及率により、ついに何でもWebアプリで作ればいいということになりました。
僕はAudio APIを使ってみたときのことを覚えています。
iTunes的なものをWeb技術で作ろうと思ったのです。
出来たものを高校のクラスのみんなに使ってもらいました。
こんなに簡単におしゃれで便利なものを作ってみんなに使ってもらえるのかと興奮しました。
公平に言えば、それ以前にOperaやFirefoxといったデキのいいブラウザは存在しました。
しかし、あまり普及していなかったので、それを前提にWebアプリを作るわけにはいきませんでした。
また、別の要素として、当時はPCの他にガラケーとPSPのブラウザの利用率が高かったので、
Webアプリを作る時はそれらでも動くようにするべきということもありました。
Chromeの性能と普及率で初めてWebで本格的なアプリを作るという世界の扉が開いたと思います。
いくらプログラミングができても使ってもらう方法がないという問題のもう一個の決定的な解決がスマートフォンでした。
みんなが持ち歩く端末向けに自由にアプリを作って公開できるなんて革命でした。
しかも、カメラやマイクなど様々な機能にアクセスできました。
加速度がホントにJavaのコードから取れてびっくりしたのを覚えている。
この感覚、凄くわかります。
fushiroyama.hatenablog.com
なかでもAndroidは
- 開発にMacがいらない
- マーケットの審査がゆるい
- 野良アプリも配れる
- 端末が安い
という点でiPhoneよりも大きな役割を果たしたと言える気がします。
それまで、サーバーを借りることに大きな制約がありました。
サーバーホスティングサービスなどもありましたがお値段が高かったです。
なので基本的には共有サーバーを使っていました。
多くの共有サーバーでは、CGIは許可されていました。
プロセス常駐型のサーバーサイドアプリは使えませんでした。
そのため、言語の選択やアーキテクチャなどでとても不自由しました。
VPSという選択肢もありました。
しかし、アプリやOSやApacheなどのミドルウェアが落ちることもあり、
監視・復帰メカニズムを作ろうと思うとまた大変でした。
その点、GAEは安くてJavaが使えてサーバー運用が不要だったので、
簡単にアプリを公開しやすくなったと思います。
ユーザーの端末が当たり前に高速ネット回線に繋がっていることが期待できるようになり、
ソフトウェア開発の幅がグッと広がりました。
PICなんて結構昔からあったらしいですね。
だから普及とは言わないと思います。
まあそれはさておき、この時期にちょっとしたハードウェアなら自力で作れるようになりました。
身の回りにタッチパネル製品が増えだした頃だったので、
逆にロータリーエンコーダーやトグルスイッチのような手触りがある入力デバイスのほうが親切な局面がありました。
例えば、僕が昔作った業務管理システムでは、
- 画面上の特定の箇所をスクロールするためだけのロターリー
- ある事件が起こると光って点滅するボタン(押すとそのページが開く)
- あるボタンを押しながら喋ると、別室のスピーカーで音が出る
のような左手デバイスを作ったら喜ばれました。
上と同じような話ですが、NFCやBluetoothを積んだスマホが安価に手に入るようになったり、
NFCタグがどんどん安くなったことで、
物質世界と絡めたようなシステムを作りやすくなりました。
Dart/TypeScript/Kotlin/Swift/Go...
プログラム言語周りの発展も重要でした。
昔はWeb系ではサーバーでもフロントエンドでも動的型付け言語が主流でした。
それで困らなかったのかなって思うでしょ?
困ってました。
他にも、
- まともなimport機構
- 公式フォーマッター
- 公式ライブラリリポジトリ
- 依存管理機構
こういったものがちゃんと用意され始めたのもこの頃からでした。
更に、CI/CDサービスやSwaggerなどの開発効率系ツールも充実してきました。
単純にプログラミングの生産性も10倍くらいになった気がします。
何ができるようになったのか
これまでは、大きな業者に高いお金を払わなければ実現できなかったようなことが、
一人のプログラマーの力で実現できるようになりました。
例えば、飲食店のホールさんが持っているような端末についてです。
あるいは、倉庫や配達の現場で使うようなハンディターミナルでもいいです。
あのようなものを導入するにはすごくコストがかかります。
もちろん業者さんも意地悪をしているわけではありません。
ハードウェアが高いしSDKも高いのでどうしてもリース価格が高くなるのです。
しかし、Androidなら安くて簡単です。
端末は、Nexus 4なら5万弱、Nexus 7なら2万円弱で市販品を買うことができました。
アプリも自由に作れます。
その気になれば情シスさんが一人で必要な装備一式を作ることができました。
僕もよくそういうことをしていました。
このように、それまでは例えプログラミングができたとしても、それを使って会社の業務を良くしようと思えば大きな予算を獲得しなければいけなかった時代から、担当者一人でどんどん会社を改善していける時代になりました。
結論
あの時の、自分がだんだん強くなっていく感覚が楽しかったなーと思い出しました。