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

自作フレームワークで画像共有アプリを作って学んだこと

Posted at

はじめに

この3日間で、自作のマイクロフレームワークを使って簡単な画像データ共有アプリを作成しました。
まだ改善したい点や追加機能は多くありますが、ひとまず基本機能(アップロード/表示/除)の実装が完了したので、現時点での学びを整理します。

windsurfを使ってみて感じたこと

今回の開発では、AI搭載エディタ「Windsurf」を初めて使いました。
補完機能の精度の高さに感動しました。

少しコードを書くと、こちらの意図を先回りして予測し、的確に補完してくれる。
最初は「思考が鈍るのでは?」という懸念がありましたが、考え方が変えました。

作りたいものが明確で、どう実装するかのイメージがある状態で補完を使うと、

自分の予想どおりの補完が出る → 「理解できている」

見たことない補完が出る → 「そこに学びの種がある」

補完機能を予測の答え合わせとして使い、知らなかったコードや書き方を深掘りして理解を深める。
現状そんな使い方が自分には合っていると感じました。

Dockerで環境構築をして感じた低レイヤーの重要性

今回の開発で直面した課題と解決策については以下の記事で整理しました。

Dockerでのエラー対応を通して、「CPUがバリナリデータをどう処理するのかの仕組みを知っていると強い」と思いました。

僕のDockerに対する今の理解は、AWSで言うところの、「同じPC内に複数の仮想インスタンスを立てる感覚」。

これまでの以下の記事が理解の土台になったので、日々の積み重ねが活きたとも感じました。

画像データを扱う中での学び

普段はHTMLやJSONばかり触っていたので、画像のバイナリをHTTP経由で扱うのは良い練習になりました。

以下に理解したポイントを整理します。

  • 一意なファイル名をつけるのは、重複を避けるため(bin2hex(random_bytes(...)) など)
  • ファイル本体をDBに保存しない理由は、容量・パフォーマンス・柔軟性の面で不利だから
  • ファイルはディレクトリ(ストレージ)に保存し、DBにはそのパスやメタ情報を記録するのが一般的
  • 画像表示時の Content-Type ヘッダーは、拡張子やMIMEタイプに応じて変わる(例:image/png)

この設計は、後々S3やCDNと連携させることを考えると、拡張性が高いということも学びました。

おわりに

今回のプロジェクトでは

  • コマンドラインシステム
  • マイグレーション/シーディングシステム
  • ビューとロジックの分離
  • レスポンスレンダラー

など、一人で作りきることができました。
自信につながったと同時に、次に進むモチベーションにもなりました。

今後は Recursion のプロジェクト5 をさらに進めつつ、
コードの質を更に高めるフェーズに入っていけるのが楽しみです。

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