2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自前開発サイトをElixir/Phoenixへ移植してみた。

2
Last updated at Posted at 2026-04-27

はじめに

Laravel 版のつぶやきサイトを Elixir/Phoenix 版へ置き換えてみました。

参考:

現在の Phoenix アプリ本体は apps/tubuyaki にあります。ルート直下の docker-compose.yml で Elixir/Phoenix 開発用コンテナ、PostgreSQL、Adminer を起動します。

構成

tubuyaki_replase/
├── Dockerfile
├── docker-compose.yml
├── apps/
│   └── tubuyaki/              # Phoenix アプリ本体
├── data/
    ├── postgres/volume/       # PostgreSQL 永続化データ

ソース入手

ソースは以下になります。

git clone https://github.com/naritomo08/tubuyaki_replase_public.git
cd tubuyaki_replase_public

起動方法

ルートディレクトリでコンテナを起動します。

docker compose up -d

web コンテナが mix deps.get、DB 作成、migration、mix phx.server を自動で実行します。

ブラウザで http://127.0.0.1:4000 を開きます。

URL

初回の使い方

  1. docker compose up -d でコンテナを起動します。
  2. http://127.0.0.1:4000/register からユーザー登録します。
  3. 最初に登録したユーザーは管理者になります。
  4. /tweet で投稿、画像付き投稿、編集、削除、いいねが使えます。
  5. /account でプロフィール変更、パスワード変更、退会ができます。
  6. 管理者は /admin/users でユーザー管理と集計確認ができます。

実装済み機能

  • ユーザー登録、ログイン、ログアウト
  • つぶやき一覧、投稿、編集、削除
  • いいね
  • アカウント管理
  • 管理者向けユーザー管理
  • PostgreSQL migration
  • Phoenix controller test

Google OAuth 連携は導線のみ実装済みです。実際の Google 認証を有効にするには、GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET を使った OAuth フローの追加実装が必要です。

DB

Phoenix アプリは PostgreSQL を使います。

開発用接続情報:

  • ホスト: postgres
  • ユーザー: postgres
  • パスワード: postgres
  • DB: testsite_dev

Adminer で確認する場合:

  • URL: http://127.0.0.1:8082
  • データベース種類: PostgreSQL
  • サーバ: postgres
  • ユーザ名: postgres
  • パスワード: postgres
  • データベース: testsite_dev

8082 が使えない環境では、ADMINER_PORT=任意のポート docker compose up -d のように変更できます。

よく使うコマンド

コンテナ起動:

docker compose up -d

コンテナ停止:

docker compose stop

コンテナ削除:

docker compose down

web コンテナに入る:

docker compose exec web /bin/bash

テスト実行:

docker compose exec -T -e MIX_ENV=test web /bin/bash -lc "mix test"

このコマンドはテストを実行するだけで、ブラウザ画面は更新しません。

format:

docker compose exec -T web /bin/bash -lc "mix format"

このコマンドはコード整形だけを行うため、ブラウザ画面は更新しません。

手動 migration:

docker compose exec -T web /bin/bash -lc "mix ecto.migrate"

このコマンドは DB 構造を更新するためのものです。画面表示を確認する場合は、docker compose up -dweb が起動していることを確認し、ブラウザで http://127.0.0.1:4000/tweet を再読み込みしてください。投稿フォームはログイン後に表示されます。

開発 DB 初期化:

docker compose stop web
docker compose run --rm web /bin/bash -lc "mix ecto.reset"
docker compose up -d web

このコマンドは開発用 DB を作り直すため、登録済みユーザー、つぶやき、いいね、画像レコードは削除されます。アップロード済み画像ファイル自体は apps/tubuyaki/priv/static/uploads に残る場合があります。

おわりに

本サイトについて、codexを使用して駆け足でリプレースしたため、まだまだ拙い部分はありますが、少しずつ完成に近づけていきます

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?