さて、前々からいろいろ書いてきたけれども、このサイトを検索するためのAPIサーバを自前で実装した。既に稼働している。今日ははやくゲームしたいので、詳細は後日書く(かもしれない)

このサイトは静的サイトだ。それゆえにサイト内の検索でいろいろ試行錯誤してきた。最終的に行きついたのがバックエンドの自作である。

動機


なんでそんなことをするのか??などということを書きだすと長くなるので省略するが、今までの試行錯誤とかも含めてだいたい下記に書いてる。

要するに静的サイトだけど、良い感じに検索したいよね。広告も表示されて欲しくないとかそんな感じである。

つくったやつ


フロント側はこのサイトの検索ページのとおりで、実際に動くところは下記で確認できる。

Search

バックエンドに限っては最近GitHubに草が生えていなかったので草を生やすついでに公開している。

lv-fox

名前の由来は以前書いているので詳細は割愛するが、lv-foxとかいてラヴ・フォックスと読んでいる(心の中で)。思った以上にレスポンスも速いし、まあいい出来なんじゃないかと思う。「パワーを、感じて欲しい。」

なお、静的サイトの生成結果を最終的にDBに突っ込んでいるが、そこにはツッコまないでほしい。

開発方針的なの


とにかく手を抜くをコンセプトにした。

ただし、このサイトでしか稼働しない。といったような実装はしていない。公開する以上はそこは最低限のラインで守っている。他の人が使えなくもないけど、他の人が使うには設計的な負債とかあるよね。くらいのレベルで作っている。

技術的なの


下記のスタックでやっている。当初Play Frameworkやcatsの勉強も兼ねたいと思っていたのだが、終わらせることを優先した結果catsは使ってないしで、あんまり学習効果的には薄かった。バックエンドのPlay Framework以外のスタックはほぼ今まで使っているものなので対して得るものも無かった気がする。

インフラ

  • AWS LightSail(もともと使ってるやつ)
  • Docker
  • Route 53
  • Let’s Encrypt
  • nginx
  • MariaDB

バックエンド (lv-fox)

  • Scala
  • Play Framework
  • Flayway
  • quill
  • circe
  • play-circe
  • ScalaTest (テストコードほとんど書いてないけど…)
  • Scalafmt

フロント(このサイト)

  • Vue.js
  • webpack
  • など

実装の過程


第6回以降を書いてないけど、第6回から本稼働までに紆余曲折あったりもした(CORSやPlayの問題など)ので、そこの部分は後で書こうと思う。(こう書くとだいたい書かない)

動作サンプル


動作サンプルをいくつかのせてみる。lv-foxが稼働していなかったケースなども想定してGoogleサイト内検索への動線とかも残している。

複数のキーワードでも検索できるようにはしている。

感想


改善の余地はあるけど、当面は別の勉強に時間を割こうとおもうのでしばらくやらない。ゲームして寝る。おやすみ。