#6755

見えない橋を架けろ


web制作

新プロジェクトのためにwebサイト制作の環境構築を進めているのですが……。
これがどうにも難しくて想像以上に大苦戦しており、早くも前途多難な雰囲気があります。
改めて、現代のweb制作に求められる知識ハードルは15年前のそれとは段違いだと実感。
15年前のweb制作と言えばHTML、CSS、、PHPかPerl、Apacheができれば十分でしたが、
モダンなweb制作はそのうちjavascriptとPHPがフレームワークになり、
それによってコマンドラインの操作も必須になり、
さらにApacheが廃れてnginxになったことでhttp通信も複雑になり、
、Gitなどの普及によってネットワークをはじめとした関連知識も必要になり、
まあ早い話がレガシーな知識が通用しなくなってきていると。
直書きのプログラミングはそのお作法を覚えるだけですぐに使える手軽さがありますが、
フレームワークになると、プログラミングのお作法に加えてフレームワーク独自のルールもあり、
習得難易度は一気に上がります。
ただプログラミング言語を覚えるのとフレームワークを扱えるようになるのとでは、
算数と数学くらいの違いがあるのではないでしょうか。
フレームワークを扱うというのはそれだけ応用的だということです。

とはいえフレームワークもあんまりハードルを高くすると誰も使ってくれなくなるので、
簡単に扱えるような仕組みがあります。その点では直書きよりも便利な側面もあります。
何と言ってもコマンドひとつでインストールできるのは魅力的だし、
追加で欲しくなったらそれもコマンドで簡単に追加できるのはすごいと思います。
ただ、一方でフレームワーク同士を連携させるのがなかなか難しい。
いま、自分がつっかえているのはその連携周りです。

基本的にサーバーで処理すること(データベース連携など)はバックエンドに任せて、
バックエンドが処理した情報を受け取ってブラウザに表示する処理をフロントエンドがします。
これらそれぞれにフレームワークがあるのがモダンなweb制作のよくあるパターンです。
じゃあ、フロントエンドはどうやってバックエンドに処理をリクエストしてデータをもらうのか。
ベストプラクティスが何なのかはわかりませんが、
どうも自分が調べたかぎりではnginx(エンジンエックス)が仲介するのが無難とのこと。
nginxは受けたリクエストに対してルールを決めて向き先を仕分ける機能があるので、
たとえばURLに「api」と付くリクエストのみバックエンドに送ることもできます。
また、バックエンド側は来たリクエストを受理するかどうかを設定で変更できるため、
フロントエンドからのリクエストのみ受け付けることにすればハッキングの心配もありません。

これ自体は調べればできそうなものなのですが……。
実際には開発環境はDockerによってそれぞれが別の仮想ネットワークに所属しており、
なおかつ実際には同じローカルホスト内で通信しているので、わけがわからなくなっています。
正しいURLでAPIを叩いているはずなのに何度やってもnullが返ってきたり……。
バックエンド側のファイアウォール的な機能に原因があるのか?
それともnginxの記法が誤っているのか?
あるいはフロントエンドのリクエストの仕方がまずいのか?
今日は結構粘っていろいろ試行錯誤したのですが、ついに解決できませんでした。

思えばピクチャレ大会を作るためにPHPデビューしたときも、
最初は文字化けとデータベース接続にめちゃくちゃ苦戦して一度は匙を投げた記憶があります。
そのとき苦い思いをしたのと今回と、なんとなく重なるところがあります。
新しい技術に触れるとき、最初はネックになりがちなんでしょうかね。

コメントを残す