Node.jsプロジェクト

実践的なWebアプリケーションとバックエンドAPIの構築

4,620円

内容

Node.jsによる実践的なプロジェクト集。Node.jsは、もはや単なるサーバー構築用のツールではなく、複雑でスケーラブルなアプリケーションを支える中核技術へと進化しました。本書は、その進化を踏まえ、実務で求められる「エンジニアの総合力」を養うことを目的とした実践ガイドです。リアルタイム通知や音楽配信といった現代的なユースケースを題材に開発を進めながら、コーディングだけでなく、アーキテクチャの選定や設計上の判断といった思考プロセスを深く学びます。断片的な知識にとどまらず、体系的な学習を通じて、初心者を脱し、現場で信頼されるエンジニアへとステップアップしたい読者にお勧めです。

関連書籍

目次

監訳者まえがき
まえがき

1章 Nodeの紹介とセットアップ
    1.1 VS Codeのインストール
        1.1.1 Macでのインストール
        1.1.2 Windowsでのインストール
        1.1.3 Linuxでのインストール
    1.2 Nodeについて理解する
    1.3 Nodeが際立っている理由
    1.4 内部では何が行われているのか? 
    1.5 Nodeのインストール
        1.5.1 Macでのインストール
        1.5.2 Windowsでのインストール
        1.5.3 Linuxでのインストール
    1.6 Node開発者になるには
    1.7 技術の習得
    1.8 本書でのFastifyの利用
    1.9 まとめ

2章 実用的なアプリケーション
    2.1 読者への課題
    2.2 計画を立てる
    2.3 プログラミングを始める
    2.4 ユーザー入力をCSVに変換する
    2.5 外部パッケージを利用する
    2.6 まとめ

3章 Node Webサーバーの作成
    3.1 読者への課題
    3.2 計画を立てる
    3.3 アプリケーションのスケルトンを作成する
        3.3.1 Fastifyを利用する
        3.3.2 ルートとデータを追加する
    3.4 UIを作成する
    3.5 UIを改善する
    3.6 まとめ

4章 安全なローカルパスワードマネージャーの作成
    4.1 読者への課題
    4.2 計画を立てる
    4.3 ローカルのコマンドラインマネージャーを作成する
    4.4 MongoDBを使ってパスワードを保存する
    4.5 まとめ

5章 コンテンツアグリゲーター
    5.1 読者への課題
    5.2 計画を立てる
    5.3 フィードの読み取りと解析
    5.4 アグリゲーターを作成する
    5.5 アグリゲーターにカスタム項目を追加する
    5.6 まとめ

6章 図書館API
    6.1 読者への課題
    6.2 計画を立てる
    6.3 APIのレイアウトからプログラミングを始める
    6.4 アプリケーションにルートとアクションを追加する
    6.5 データベースをアプリケーションに接続する
    6.6 まとめ

7章 自然言語処理によるセンチメント分析
    7.1 読者への課題
    7.2 計画を立てる
    7.3 文字列処理パッケージを使ってプログラミングを始める
    7.4 センチメントを分析する
    7.5 データベースの接続とデータの視覚化
    7.6 まとめ

8章 マーケティングメーラー
    8.1 読者への課題
    8.2 計画を立てる
    8.3 プログラミングを始める
    8.4 メーラーサービスのフレームワークを追加する
    8.5 データベースに接続する
    8.6 メールエンゲージメントのためのマーケティングピクセルを実装する
    8.7 タスクスケジューラーを統合する
    8.8 まとめ

9章 Webスクレイパー
    9.1 読者への課題
    9.2 計画を立てる
    9.3 プログラミングを始める
    9.4 ヘッドレスブラウザーでWebページをスクレイピングする
    9.5 まとめ

10章 アプリケーション認証
    10.1 読者への課題
    10.2 計画を立てる
    10.3 プログラミングを始める
    10.4 ログインフォームを作成する
    10.5 ユーザーアカウントの保存と保護
    10.6 JWTを用いたAPI認証
    10.7 まとめ

11章 コーヒー注文マネージャー
    11.1 読者への課題
    11.2 計画を立てる
    11.3 プログラミングを始める
    11.4 Redisサーバーを追加する
    11.5 堅牢なメッセージングシステムを統合する
    11.6 まとめ

12章 音楽レーベルのブロックチェーンマーケット
    12.1 読者への課題
    12.2 計画を立てる
    12.3 プログラミングを始める
    12.4 ブロックチェーンのコーディング
    12.5 実世界での実行
    12.6 まとめ

13章 Gemini APIを利用したAI学習アシスタントの作成
    13.1 読者への課題
    13.2 計画を立てる
    13.3 プログラミングを始める
    13.4 学習支援のためにAIアシスタントをカスタマイズする
    13.5 Fastifyサーバーをセットアップする
    13.6 データベースとユーザー認証のセットアップ
    13.7 まとめ

付録A Nodeチートシートとプロジェクトの初期化
    A.1 Nodeプロジェクトの初期化(npmを使用)
    A.2 推奨されるディレクトリ構造
    A.3 package.jsonとスクリプトを理解する
    A.4 Nodeの最新の構文パターン
    A.5 Nodeエンジニアの成長分野
    A.6 まとめ

付録B 開発ツールのセットアップ
    B.1 コマンドラインからGitを使用する
    B.2 おすすめのVS Code拡張機能
    B.3 Postmanを使ってAPIをテストする
    B.4 nodemonを使ってファイル変更を監視する
    B.5 まとめ

付録C Nodeプロジェクトでデータベースを扱う
    C.1 データベースが重要な理由
    C.2 核となる概念:スキーマ、テーブル、コレクション、ドキュメント
    C.3 MongoDB:柔軟なスキーマのためのNoSQL
        C.3.1 インストール
        C.3.2 MongoDBをローカルで起動する
        C.3.3 Mongooseを使って接続する
    C.4 PostgreSQL:SQLのパワーと構造
        C.4.1 インストール
        C.4.2 Sequelizeを使って接続する
    C.5 SQLite:軽量で組み込み型
        C.5.1 インストール
        C.5.2 Sequelizeを使って接続する
    C.6 ローカルデータベースとクラウドホスト型データベースの比較
        C.6.1 クラウドサービス
    C.7 Nodeアプリケーション用のデータベースの比較
    C.8 永続化レイヤーを選択する
    C.9 Redis:メモリ内での高速なキャッシュとキュー
        C.9.1 インストール
        C.9.2 Nodeから接続する
        C.9.3 Redisをキューとして使用する
    C.10 RabbitMQ:Nodeアプリケーションのためのキューベースのメッセージング
        C.10.1 インストール
        C.10.2 Nodeから接続する
    C.11 次のステップ
    C.12 まとめ

付録D サンプルコードの使い方とプロジェクトのコンテナー化
    D.1 GitHubリポジトリにアクセスする
    D.2 Dockerを使ってプロジェクトを実行する
        D.2.1 ディレクトリ構造と配置場所
        D.2.2 一連のDockerコマンドの実行手順
    D.3 Nodeプロジェクトをコンテナー化するメリット
    D.4 次のステップ
    D.5 まとめ

付録E 開発者アカウントとAPI認証情報のセットアップ
    E.1 APIキーの取り扱い
    E.2 GitHub
    E.3 MongoDB Atlas
    E.4 OpenAI API
    E.5 Google Gemini API
    E.6 まとめ

付録F AIコーディングエージェントはどのように動くのか
    F.1 イントロダクション
    F.2 コーディングエージェントを支えるハーネス
        F.2.1 エージェントループ
        F.2.2 ハーネスの役割
        F.2.3 ハーネスは最適化対象である
    F.3 プロンプトキャッシング
        F.3.1 プリフィルとデコード
        F.3.2 KVキャッシュ
        F.3.3 プロンプトキャッシングを生かすプロンプト設計
    F.4 コンテキストエンジニアリング
        F.4.1 サブエージェント
        F.4.2 どの層で実行するか
        F.4.3 コンテキスト圧縮
    F.5 評価基盤・トレース・可観測性
        F.5.1 例:MLflowによるLLMの可観測性
        F.5.2 継続運用におけるコンテキスト更新
    F.6 セキュリティモデルと委譲境界
        F.6.1 サンドボックスと承認ポリシー
    F.7 ケーススタディ:Stripeミニオンに見るコーディングエージェントの実装原則
    F.8 まとめ
    F.9 参考文献

索引


コラム目次
    Nodeの発展的な概念
    Fastifyの内部では
    1章の練習問題
    package.jsonとは何か?
    promisifyを使って同期関数をラップする
    2章の練習問題
    Webサーバーの開発について
    イベントループのブロッキング
    3章の練習問題
    4章の練習問題
    Fetch APIについて
    5章の練習問題
    HTTPメソッド
    アプリケーションを作成するための追加のステップ
    RESTfulなルーティング
    SQLiteとPostgreSQLの比較
    6章の練習問題
    NLP分析のための入力テキストのクリーニング
    7章の練習問題
    Googleでメーラーをセットアップする
    8章の練習問題
    HTMLについての簡単な説明
    Puppeteerを使って作業する
    9章の練習問題
    Handlebarsを使ってテンプレートを作成する
    パスワードをハッシュ化する
    セッション入門
    10章の練習問題
    JavaScriptにおけるキュー
    Redisについて
    なぜRabbitMQなのか?
    11章の練習問題
    ブロックチェーンの概要
    ブロックをマイニングする
    12章の練習問題
    大規模言語モデルとAI API
    プロンプトエンジニアリング:効果的なAI指示を作成する
    なぜSQLite3を使うのか?
    13章の練習問題
    Yarnとnpmの比較
    macOS用のHomebrewについて
    レート制限とクォータ
    リポジトリのセキュリティ対策

関連ファイル