ハイパーメディアというアプローチ

かなり久々のブログ更新となりました。Twitterでは日々諸々を垂れ流し、pixivには大量の妄想文章を吐き出しています。


前口上

私の本業はITエンジニアです。今のところ、アプリケーション部分のバックエンドからフロントエンドまでを担当している、ソフトウェア寄りが守備範囲の人間です。今年春からの案件で初めてフロントエンドのJavaScriptフレームワーク・Reactを触ることになりました。

……あれ、なんか面倒くさいですね?

Reactこわい(マジで)

今担当している案件は他社で開発されていたものが巡り巡ってうちにお鉢が回ってきたシステムの改修案件です。バックエンドロジックについては妙に細かい仕様書(実質的にコーディング指示書)がある一方、フロントエンドはイメージ図と要件仕様書だけで設計書が全く存在しないという両極端な案件です。

設計書がない、そしてReact初心者というダブルの不利を受け、単純そうな改修に1週間を要してしまいました。改修を通して構造を一定程度理解して振り返ったら、1日でカタがつくようなレベルでした。次回からは秒殺で処理します。

初心者である以上、何重にも階層化されたReactコンポーネントの構成がベストプラクティスなのかゴミなのかの判別もつかない、すなわち元のコードがダメなのか、それともReactの宿命なのかはわかりませんが、とにかくアレはちょっと触りたくないです。

……仕事として片付けなければならない以上やりはしますが、なぜあれがフロントエンドを構築するのに有力な技術となったのかよく分からないというのが正直な感想です。なんとかなりませんかね。

ハイパーメディアシステム?

そう考えているところに、技術評論社の「Software Design」の本の紹介ページに『ハイパーメディアシステム htmxとRESTによるシンプルで軽やかなウェブ開発』という本を見つけました。表紙に「『React疲れ』していませんか?」という問いかけの言葉が書かれていたのが決め手でした。

本の半分ほどはこの本の著者が開発したJavaScriptライブラリ「htmx」を解説する書となっていますが、本の冒頭はそこに至るまでの道筋として、ハイパーメディアシステム(World Wide Web / HTML / HTTP / 本来の意味でのREST)に再入門します。そこで現代のウェブを席巻するJavaScriptベースのシングルページアプリケーション(SPA)との対比を行いつつ、ハイパーメディアシステムの各構成要素を拡張するアプローチを示し、ハイパーメディアシステムを大いに活用することで、多くの分野でSPAよりもシンプルな手法でアプリケーションを構築できることを述べています。

短い感想

実は「htmx」は、その単語を初めて聞いた2024年2月頃に一瞬だけ触ったことがありました。その時は仕事が忙しかったのもあってすぐに忘れてしまいましたが、時を経て再度勉強し、試してみると、とても面白そうだと感じられました。少なくともReactのようにHTMLタグ風の不思議な命令を記述し、あまり読みやすいとは言えないアロー関数や状態保持用の変数を定義する『呪文』、TypeScriptによって記述する場合にあちこちに型定義を置く必要があるというとっつきにくさを回避できる場面が生まれるのは魅力的です。

もちろん、既存システムの改修を受託開発で行う案件では、よほどのことがない限りシステムの構成要素を大幅に取り替えることはしない(できない)のですが、大幅に取り替えるべき時が来た時に選択肢として検討できるよう「遊んで」おきたいです。