0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめて作ったミニアプリについて(2026GW RUNTEQミニアプリweek)

0
Last updated at Posted at 2026-05-23

この記事について

イベント「ミニアプリweek」でアプリを作ったので、基本情報、発生したエラー等をまとめました。


アプリの概要

  • アプリ名:観察日記

  • 内容:ユーザーがたいせつに育てているものを記録していくためのサービス。
    現在、開発途中。アルバムとして画像や日記を残したり、これからやることを書き記せるメモ機能等を実装予定。

なぜこのアプリを作ったのか

自分が植物を育てているので、その生長を記録したいと考え、作成した。

現在の主な機能

  • ユーザー管理
    新規アカウント登録、アカウント削除、ログイン、ログアウト
  • 投稿管理
    投稿(タイトル、内容)
    投稿の一覧表示、新規作成、編集、削除

使用技術

  • バックエンド:Ruby 3.3.6 , Ruby on Rails 7.2
  • データベース:PostgreSQL / Neon
  • 開発環境:Docker
  • インフラ・デプロイ:Render
  • バージョン管理:Git / GitHub
  • その他ライブラリ・ツール:Tailwind CSS

使用技術の選定理由

使用した技術は、基本的には学習中の言語、ツールである。学習した知識・技術の定着を図るため、日頃の学習で使用しているものを選定した。
また、Docker、Git等の技術は実務でも使用することが多いと認識しており、そういった実用性の面も考慮した。

主要なエラー

1. 環境構築〜デプロイ: Nodeのバージョン変更

(1) 概要
Nodeのバージョンについて、長期サポート版「v24.15.0(Latest LTS: Krypton)」に変更しようとしたが、デプロイ時にエラーが出た(一部ファイルの変更漏れのため)。

(2) 対応
実装時はやむなく、RUNTEQの参考ページに記載されていたバージョンv20.20.2に戻した。
イベント後、v24.15.0に更新した。

(3) 後日更新時の変更箇所

  • 1.Dockerfile
    • バージョンを24.15.0に変更
  • 2.Dockerfile.dev
    • 余分な"&&"を削除(構文エラーがあった)
    • Node.jsのシェルスクリプトの重複箇所を削除
    • Node.jsのシェルスクリプトのバージョンをv24に変更
  • 3.package.json
    • バージョンを">=24.0.0"に変更
  • 4.test/fixtures/users.yml
    • テストユーザーの登録情報がNULLにならないよう、登録情報を明記
  • 5.RenderのEnvironment Variables
    • 「NODE_VERSION 24.15.0」を設定(現在、Renderのデフォルトが24.14.1なので)

2. 実装中: 422 (Unprocessable Content)エラー

(1) 概要
ローカルにて新規登録したユーザーで、デプロイ後のブラウザからログインしようとした。

(2) 原因
開発環境(localhost:3000)と本番環境(Render)では物理的に異なるデータベースを使用しているので、登録情報等は共有されない。
→ (1)を試みると、登録されていない情報でログインしようとしたので、422エラーになった。

(3) 詳しく
config/database.ymlの中身で指定されている。

development:
  database: myapp_development
production:
  database: myapp_production

(4) 補足
各データベースに保存されているデータの確認方法は以下のとおり。

● ローカル
docker compose exec web rails c → User.all/User.count 等

● デプロイ後:以下の2通り。

  1. Neon上のダッシュボード → Tables
  2. Neon上のダッシュボード → SQL EditorでSQL文を打つ。普通のSELECT文でOK。
    条件指定も可能だし、COUNT(*)でユーザー数の確認もできる。

3. 公開直前: 誰の記事でも編集できるようになっていた

(1) 概要
個人ブログのような機能になっているはずが、他のユーザー全員の記事を閲覧&編集・削除できる仕様になっていた。

(2) 対応
投稿(posts)のコントローラのindex、edit、update、destroyアクションで「current_user.」と条件を指定する。
→ 自分の投稿だけを表示、編集できるようにした。

@posts(または@post) = current_user.posts.order(created_at: :desc)

(3) 補足
Gemfileの「gem 'sorcery'」中で定義されているから使える。
自分で定義してもいいが、gemを使う方が楽だし実務的、と認識している。

フィードバックから気づいたこと

1. UptimeRobotが機能していない

(1) 概要
アプリが見えてなさそうな感じがしたので、調べてみると、UptimeRobotのアプリのURLを間違えて設定していたことが発覚した。

(2) 前提、知っておくべきだったこと
Renderの無料プランは、15分でサーバーがスリープ(※)する。

※ サーバーのスリープ中はサーバーが動いていないので、リクエストの応答に時間がかかる。
(待ち続ければ応答される。ただし、すごく待つ)

(3) UptimeRobotの仕組み
任意のWebページのURLを登録しておけば、無料プランの場合は5分おきにUptimeRobotがアクセスしてくれる(監視機能)。
→ なんらかの理由でアクセスできなくなるとdownと表示され、メールで通知される(通知機能)。
→ この通知機能により、アプリ管理者は素早く障害に対応できる。UptimeRobotが勝手にトラブルを解決してくれるわけではない。

(4) 対応
URLの設定を修正すると、up状態になり、見えるようになった。サーバーでエラーが発生した場合等は、相応に対処する必要がある。

2. 改善案や考え方等 【メモ】

  • 新規登録時のエラー文言
    …この辺は見てなかった。ありがたく訂正する。ja.ymlで定義する?
  • 画像の投稿
    …実装予定。ひとまずActive Storageを使ってみる。
  • カテゴリを設定できる(育てているものの種類等)
    …使いやすそう。複数のものを記録する前提なので必要だと思う。
     投稿時から分けておくより、タグの一種として実装するのがいい?
  • ピックアップ機能(部分によって)
    …いろいろとソートできそうで、面白そう。これもタグの一種にするといいのかも。
  • 記録できるものを増やす(天気等)
    …栽培管理的にもだが、メンタル面で「自発的に空を見上げる」のっていいと思う。
     アイコンを選ぶ形だとスマート? 作業メモの実装と一緒にできそう。
  • アラート機能
    …結構切実に欲しい。
     アプリ内通知の実装方法から考えるが、デスクトップ、スマホにも通知したい。
  • 豆知識が出る
    …初心者向けイメージなので、これは自分も欲しい。2~3文だと気負わずに読めていい。
     ソース元の選定だけ気をつけて、ヘルプと一緒に載せる?
     ローディング時にランダムで出すのもいい?
  • 他のユーザーの日記を閲覧する、「いいね」等の交流
    …楽しそう。誰かの存在を感じられると嬉しいな、とフィードバックを見て気づいた。
     閲覧は「.current_user」の絞り込みをいじれば実装できる?

フィードバックの受け取り方法について

RUNTEQ内のソーシャルポートフォリオで確認。

どんなフィードバックがあったか

「いいね」を含め、熱意にコメントいただけてハッピーだった。
GitHubの方も見てもらえて嬉しかった。いたたまれない気持ちもあり、もっとがんばっていこうと思えた。

フィードバックを受けて対応したこと

以下2点については作業中。

  • バリデーションの注意文
  • 画像投稿機能

そのほか、技術的に実装できるかどうかを含めて検討する。

苦労したこと・学び

422エラーが印象的だった。いつも開発環境で学習しているので新鮮。
データベースの違いについては実装終盤で気づいたので、結構時間を取られてしまった。
同じエラー名ばかり見ていると飽きるな〜と思った。

今後のアップデート予定

  • 作業予定を記入できる、作業メモ機能
  • 上述のフィードバックの関連
  • デザイン全般

最後に

初めてミニアプリを開発しました。不安や焦りはありましたが、楽しかったです!
普段の学習では意識しない部分に着目でき、よかったなと思いました。
実装したいことはたくさんあるので、のんびりやっていく予定です。
見てくださり、ありがとうございました。

* 感想はnoteに書きました。

0
1
0

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?