フロイドの狂気日記

時は流れ、曲も終わった。もっと何か言えたのに。

PR

おじさんプログラマが時代に取り残されたと実感する時

PR

reactの勉強を初めて色々模索している。gatsbyなるreactを基にした静的ページジェネレーターを利用して静的ページで構成されたブログを独自ドメインで公開する、みたいなことまでやった。実際のところ、reactというデファクトとそれをめぐる世界について触れただけで、がっつりコーディングしたわけではない。

 

jqueryおじさんを長らくやっていてサーバを意識するというのは問答無用で脳が思考するのだが、サーバレスアプリという分野が花開いていることを知ってちょっと複雑な心境になった。どちらかといえばwordpress2.0的世界観なのだが、それを構成する裏側の技術が非常に新時代であるので興味深かった。

 

僕が何をしたかというとまずMacでnpmコマンドを用いてgatsbyをインストールすると、指定のフォルダに最小構成のプログラム郡が出来上がる。PHPフレームワークLaravelのcomposerがそうであるように、必要なライブラリを管理するgatsby-config.jsなるソースがあり、そこでnpmコマンドでインストールするライブラリ群の定義が見れる。

 

一体何が新時代か。

 

例えばjqueryおじさんだとrequre的な構文で必要なソースを読み込むが、その読み込むソースのセットアップは手動であったはずだ。ライブラリのソースをzipで落としてきて、自分でフォルダにコピペする。そして読み込むパスをソースに書き込むといった具合だ。今やnpmコマンドを叩くとnode_moduleフォルダ内に自動で配置され、import構文でライブラリ名を指定すると読み込まれ利用できる。自分で指定したフォルダにライブラリのソースを置くなどという作業は不要だし、パスという概念はなくなり、ライブラリ名を書くという儀式に取って代わった。自分で考える領域は狭まり、表示したいコンテンツに集中できるということなのだろう。

 

それだけではなくジェネレーターとサーバレスという独立した概念が結びつき、疎結合ながら密に連携するというサービス世界が出来上がっている。最初僕はgatsbyで3ページ程度のブログっぽいものを作成した。今サーバレスブログというのが技術者の間で話題になっているが、これはGitLabやNetlifyというサービスにソースをpushするだけでブログ化するといったことができる。

 

あるブログでGitLabを使うといいと進められていたのでgatsbyで作ったソースをGitLabにpushした。その後、GitLabのGUIに従ってCI/CDボタンを押すと、ymlファイルが自動で生成される。ここにnodeJsのversionだけ書き換えてセーブすると、ローカルでソースを書き換えてもpushするだけでジェネレイトされwebに即時公開されるというものだ。これによってサーバを意識しないでwebに公開できる。

 

GitLabは残念ながら発展途上でGitLabのドメインで公開できるところまではできたが、その後独自ドメイン設定で何度やっても反映されないという自体に陥って、2時間悩んだ結果諦め、日本語情報も多いNetlifyに切り替えた。Google DomainのCNAMEなどをNetlifyの設定画面に書くだけですぐさま独自ドメインでブログが見れた。しかもNetlify自体はGitLabと連携しているので、GitLabにpushしたソースがそのままNetlifyのホスティングで公開された。これがあまりにも簡単だったので、サーバレスという概念がすっと理解できた。

 

もし僕がはてなブログ以上の自由度を求めてブログを書きたくなったとき、jqueryおじさんとしては、まずさくらインターネットVPSAWSを契約しCSSなどを全部自分で手に入れて、サーバのセキュリティに気を配らねばならなかっただろう。

 

ところが今やGitでpushするだけでNetlifyなどのホスティングサービスが勝手にwebに公開してくれるのだ。今静的ページを公開したいなら、ディレクトリ構成もライブラリパスも意識しないで、git pushさえすればセキュアなwebページが公開できる。デザイン、ページャー、コメント投稿システムでさえgatsbyの公式サイトなどがcomponentを提供しているので適当に選んでnpmコマンドを叩けばダウンロードされ適用される。そしてドメイン料金を除けばほぼ無料である。もちろんGoogle Adsenseなんかも貼ることができる。

 

とはいえプログラマでもなければ非常にハードルは高いだろう。windowsでの開発方法は調べる気にもならないし、関数ベースのプログラミングが理解できないといけないし、基本的なgitコマンドも必要だ。GitLabは無償だが英語必須だし、ドメインの設定もコピペで済むとはいえ素人だと何をしていいかさえわからないだろう。ある種情強向けのサービスになっていて、完全素人ははてなブログアメブロをするほうが簡単だ。

 

ただこれの特筆すべきところは、次世代webサービスの運用開発の肝みたいなものが盛り込まれて理解しやすいところだ。今は静的ページをホスティングする程度だが、開発者としての方向性がここにある。

 

・ライブラリはコマンドベースで管理するべきでドラッグドロップなどの手作業をへらすべき

・CI/CDを設定し、pushすればテストされ、テスト後にサービスは自動反映されるべき

・サーバセキュリティをホスティングサービスに委託することで、サービス開発にリソースを裂き開発スピードを上げる

 

これらはjqueryおじさんたちが一種の労働力として期待されていた分野だ。それなりにセキュアなサーバ設定が可能で、要望に応じてライブラリを選定し、ディレクトリ構成を考えコーディングし、テストを行いリリースしてきた頭脳労働そのものと言える。

 

ところがフロントエンドの世界は変わりつつあり、テストを書きやすい言語やフレームワークで自動テストをしやすいようにコーディングすることが求められているのだろう。マルチプレイヤーより、より効率化するためのエキスパートが求められているように思う。

 

実装、リリース、運用を結びつける処理はなるべくスムーズになるように最初から流れを設計されるべき、というような価値観だ。大規模開発だとハードルが高い。こうなると一部の中小企業の技術者やあまり能力のないプログラマとのチーム開発では難しいだろうから理想はともかくとして、今後もjqueryおじさん的仕事は残るようにも思う。

 

それに静的ページだけでwebのすべてを構築できることはないので、まだまだ発展途上のようにも思う。複雑な処理はサーバサイドが欠かせない。DBも結局は必要となるし、それらをDI/CDで自動化するのはハードルが高すぎるように思う。サービスが大きくなるとホスティングサービスの無料利用で賄うことは不可能で、スケーラブルなサーバが必要になる。

 

そのため中小企業の社内システムは昔ながらのハードルが低いjqueryで行われ、大規模ユーザが利用するサービスでしのぎを削るためにreactなどが利用されやすいのではないか。そこには大きな壁があって彼我を分断している。

 

恐れるべきはreactマンがjqueryおじさんを飲み込むということよりは、jqueryおじさんを雇う企業が潰れていって、reactマンを雇えるような十分に意識が高く金もある企業が残っていくという可能性かもしれない。