tree

TREE

What is TREE?

高校では、チームで何かしらのプロダクトを開発する授業がありました。 そこで私は、メンバー3名と共に、 在校していた高校の図書館の蔵書を管理するシステム を構築することにしました。

基本的に以下の機能を実装しました。

  • 蔵書検索機能
    • あいまい検索、げんみつ検索、タグ検索の3種類から選べる
      • あいまい検索:いわゆるキーワード検索
      • げんみつ検索:検索対象をLIKE句を用いて検索
      • タグ検索:ユーザがその本につけたタグから検索
    • 本、著者、出版社を検索することができる
  • キャンペーン機能
    • 図書館で何かしらのイベントや告知をする際に使用
    • 関連本などを紐づけることができる
  • 司書向け機能
    • 蔵書登録
      • 一冊ずつ登録するモードと、csvファイルから登録するモードがある
    • ヘルスチェック
      • 後述するいくつかのサービスが正しく機能しているかのチェック
        • 特にElasticsearchとMySQL側でデータの整合性を担保しなくてはいけないため、その辺のチェックは充実
    • その他、キャンペーンやタグの管理

担当

リーダー / バックエンド

技術スタック

共通

  • Docker -> 仮想環境構築ツール

サーバ(ディレクトリ名 : app)

  • npm -> パッケージ管理ツール
    • expressやsequelize、jsonwebtoken、log4jsなど
  • node.js -> サーバサイドのjavascript実行環境
    • typescript -> javascriptに静的型付けやオブジェクト指向を付け加えたプログラム言語
    • express -> フレームワーク
    • ejs -> テンプレートエンジン
    • Sequelize -> ORM
    • MongoDB -> インメモリで動作するNoSQL(ドキュメント指向データベース)。テストで使用
    • Jest -> JavaScriptのテスティングフレームワークの一種
    • ドメイン駆動設計 -> 設計手法

DB(ディレクトリ名 : db)

  • mysql -> DBMS

検索エンジン(ディレクトリ名 : elasticsearch)

  • Elasticsearch -> オープンソースの検索エンジン

※ リポジトリから引用しました

画面

検索フォーム

あいまい検索の例

管理画面

管理画面一覧

本詳細画面

本詳細画面