知っておくと話が早い。
Vue.js
- フロントエンドフレームワーク
- TypeScript+SCSS+HTMLで実装する
- 同様のフレームワークとして他にReactなどがある
- 記法としてVueはSFC、ReactはJSXを活用するものが主流
- JSX記法は過去の遺物である
TypeScript
- 型宣言付きのJavaScript
- VueやReactなどのフロントエンドフレームワークの実装言語として採用されている
- フレームワーク抜きで単独使用するケースはほぼ無い
JavaScript
- ブラウザ上で実行できる(ほぼ)唯一のスクリプト言語
- Node.js という実行環境を導入することでサーバサイドでも実行可能
- Node.js のパッケージマネージャとして代表的なものに npm がある
- npm 管理下のパッケージ群は package.json ファイルに記載される
- npm 管理下のパッケージ群は node_modules ディレクトリ下に格納される
nginx
- Webサーバアプリケーション
- 例としてWebフロントエンドを構築する場合などに使用する
- 軽量な他、リバースプロキシやスタブAPIなど必要な機能が手軽に扱えるのもメリット
- 同様のアプリケーションとして他にApacheなどがある
- Apacheは既に滅びた
Python
- 現状のトレンドであるスクリプト言語
- AI系の開発をする上でLangChain(LLMライブラリ)の機能を最大限扱える点が何より重要
- 他にPytorch(機械学習ライブラリ)、Nympy(ベクトル演算ライブラリ)などの存在も強力
- パッケージマネージャとして代表的なものに pip, pipenv がある
- pipenv 管理下のパッケージ群は Pipfile ファイルに記載される
FastAPI
- Webサーバフレームワーク
- Pythonで実装する
- 同様のフレームワークとして他にDjangoなどがある
- 実装に必要なソースコード量が少なく、直感的なAPIスキーマ定義が可能
SQLAlchemy
- Pythonにおいて最もメジャーなORMライブラリ
- SQLインジェクション耐性の観点からORMを使用しておくのが鉄板
PostgreSQL
- RDBMSの一種
- 同様のRDBMSとしてMySQLなどがある
- pgvectorという拡張機能によってベクトルDBとして扱えるようになる
- ベクトルDBの機能は後述のRAGを構築するために必要
LangChain
- アプリケーションに対しLLMを組み込むためのライブラリ
- オープン(≒ローカルに配置して実行可能)なものと比較して高精度なLLMを採用可能になる
- 最近そうとも言えなくなったのでLocalLLMが熱いという背景あり
- LocalLLMもLangChainから実行可能なのでどのみち採用しておくべき
- TypeScriptなどでも扱えるが、Pythonとの親和性が最も高い
RAG
- LLMの回答を特定の内容へ特化させたいときに採用できる技術の一つ
- 企業案件においてLLMを利用したいケースと合致するので流行している
- 特化利用の例としては「自社製品の紹介」「問い合わせへの回答」など
- 構築においては特化用の資料となる「データソース」と、ベクトル化したデータソースを保存する「ベクトルDB」の2つの概念が登場する
Docker
- コンテナ型の仮想環境プラットフォーム
- 環境を再現可能な形で独立させることにより、環境依存の排除や移植性の担保を実現する
DockerCompose
- Dockerの補助ツール
- 複数のコンテナからなるアプリケーションを開発する際に便利
- 例としてWebアプリコンテナとDBコンテナの2つが存在するケースなど