プログラミング未経験の初心者がハンズオン形式でWebアプリケーションを動かし、その仕組みを学ぶためのリポジトリです。
勉強会では開発環境としてGitHub Codespacesを使います。
GitHub Codespacesは、GitHubが提供するクラウドベースの開発環境です。
VS Codeをベースにしており、どのデバイスからでもすぐに開発を始めることができます。
https://github.com/codespaces/templates
Webアプリケーションは、クライアント(ブラウザやモバイルアプリ)とサーバーの間でリクエストとレスポンスをやり取りすることで動作します。以下はその流れです。
ユーザーがブラウザでURLを入力したり、ボタンをクリックしたりすると、HTTPリクエストがWebサーバーに送られます。
Webサーバー(例: Nginx, Puma)はリクエストを受け取り、アプリケーションサーバー(例: Railsアプリケーション)に渡します。アプリケーションサーバーはルーティングによって適切なコントローラーとアクションを特定します。
必要に応じてアクション内でモデルを通じてデータベース(例: MySQL, PostgreSQL)にアクセスし、データを操作します。
コントローラーは取得したデータをビューに渡し、最終的なレスポンスを生成します。
サーバーが生成したレスポンスをクライアントに返し、ユーザーに結果が表示されます。
各アプリケーションの依存関係(ライブラリ・ツールの種類やバージョン)をDockerイメージで固定することで、環境間の不整合を防ぎます。
複数のツールやソフトウェアをインストールする手間が不要になり、Dockerコンテナの起動だけで環境を構築できます。
プロジェクト単位で独立した環境を構築できるため、特定プロジェクトのライブラリやツールの種類・バージョンが他のプロジェクトに干渉しません。
Dockerfileは、Dockerイメージを作成するための設計図です。
Dockerイメージとは、Dockerコンテナを起動するための「テンプレート」のようなものであり、アプリケーションを実行するために必要なファイルや設定がすべて含まれています。
以下のような内容を記述します。
- ベースとなるイメージ(例: ruby:3.2)
- 必要なパッケージやツールのインストール手順
- アプリケーションコードのコピー
- コマンドの実行(例: サーバーの起動)
docker-compose.ymlは、複数のDockerコンテナ(例: アプリケーション、データベースなど)をまとめて管理するための設定ファイルです。
docker-compose.ymlのbuildセクションに基づいて、Dockerイメージを作成します。
docker-compose.ymlの内容に基づいて、必要なコンテナを起動します。 指定されたサービス(例: web, db)をまとめて起動し、それらを連携させます。
docker-compose build
docker-compose run --rm web bundle exec rails db:migrate
docker-compose run --rm web bundle exec rails db:seed
docker-compose up
docker-compose run --rm web bundle exec rails test