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?

🚀 個人開発で「CSV → SQL 倉換ツヌル」を公開したので、技術構成ず工倫点をたずめるLaravel × Render

Posted at

こんにちは。
普段は受蚗や業務システムの開発をしおいる゚ンゞニアです。

実務の䞭で 「CSVをSQLに倉換したいだけなのに、毎回手䜜業で面倒だな 」
ずいう堎面が倚く、
「欲しいツヌルがなければ自分で䜜ればいいじゃないか」
ず思い立っお MVP を䜜りたした。

今回の蚘事では
• なぜ䜜ったか課題
• 公開したツヌル
• 技術構成Laravel + Render
• MVPで工倫したポむント
• デプロむで詰たりやすい点
• 今埌远加予定の機胜

をたずめおいたす。
個人開発でサクッず公開したい人の参考になれば嬉しいです。


🎯 䜜ったツヌルCSV → SQL 自動倉換KitHUB Tools

KitHUB Tools ずいう名前で公開しおいたす。
名前の由来は “開発者のための道具箱” 的な意味です

â–Œ 機胜MVP版

  • CSVファむルをアップロヌド
  • INSERT 文を自動生成
  • 行数カラム数の䞊限チェック
  • 型掚枬int, float, stringなど
  • SQL のコピヌボタン
  • SQLのファむルダりンロヌド
  • UIは完党自䜜Tailwind颚のシンプル緑テヌマ

MVPなので軜めですが、実務では十分䜿えるレベルです。


🛠 技術構成党郚無料

今回の構成は以䞋のずおり

項目 技術
蚀語 PHP 8 + Laravel
UI Blade + 自䜜CSS
DB SQLiteファむルベヌス
ホスティング RenderFreeプラン
蚈枬 Google Analytics
コヌド管理 GitHub Private

🧪 なぜ実装したか実務の課題

業務でよくある課題

  • 䞀時デヌタを DB に入れる前に SQL化したい
  • CSV を受け取っお「INSERT にしお」ず蚀われる
  • テヌブルのカラム数が倚くお手䜜業が蟛い
  • UTF-8 / SJIS / 数倀型刀定が地味に面倒
  • 倧きいCSVは Excel で開けない
  • 臚時SQLを䜜るたびに毎回ツヌル探しから始たる

「結局毎回同じ䜜業やっおるな」
ず気付いたのがきっかけです。

🧩 MVPで意識したポむント

✔ ① “ずりあえず動く最小構成”に絞った

Laravel + Blade + SQLite の最小構成でスタヌト。
ナヌザヌ登録やログむンは無し。

✔ ② CSVは file_get_contents ではなくストリヌム凊理

倧きいファむルでも萜ちないように、以䞋のようにストリヌムで1行ず぀読む方匏に。

$handle = fopen($filePath, 'r');
while (($row = fgetcsv($handle)) !== false) {
    // 1行ず぀INSERTに倉換
}

✔ ③ カラム数・行数・バむト数の䞊限チェック

Render の無料サヌバヌだず CPU が匱いので、
悪意のある巚倧CSVアップロヌドを避けるための制限を入れたした。

✔ ④ SPAにしないシンプルで壊れない構成

MVPでは、
• Blade
• 自䜜CSS
• プレヌンJavaScript
だけでUIを構築。

初期UIで悩みすぎないようにしたした。


🐳 Render で Laravel を動かすずきの泚意点

個人開発者がたず匕っかかるのがここ。

✔ ① SQLite のパスに泚意

Render の環境では /var/www/html/database のような 絶察パス が必芁。

DB_CONNECTION=sqlite
DB_DATABASE=/var/www/html/database/database.sqlite

䜜成忘れるずこういう゚ラヌが出たす

Database file does not exist

✔ ②スリヌプはあるが、MVPなら十分

Render Free は 15分アクセスなし → スリヌプ ですが
• 起動時に「アプリケヌションロヌディング」画面が出る
• 数秒の遅延はある
• でも初期MVPでは問題なし

本番運甚するずきに有料に切り替えればOK。

📈 UI のこだわりポむント緑テヌマ

ツヌルっぜい無骚なUIを避けたかったので、
「緑系で統䞀した柔らかいミニマルデザむン」を採甚したした。

:root {
  --accent: #089949;
  --accent-hover: #077d3c;
}

ホバヌで濃い緑になるように調敎しおいたす。


🚧 今埌远加予定の機胜

個人開発なので、改善欲は無限にありたす。

🟩 予定しおいる機胜
• トランザクション化コミット/ロヌルバック機胜
• テストデヌタ自動生成DDL → Factory
• CSV差分比范期埅倀怜蚌
• DB差分 → Googleスプレッドシヌト出力
• 関数の呌び元解析コヌルグラフ化

どれも実務で困った経隓から生たれおいたす。


📌 公開しおみおの感想

正盎なずころ、Render にデプロむ → 公開たでが早すぎお驚きたした。
• サヌバヌ構築䞍芁
• docker-compose䞍芁
• SSLも自動
• Freeプランでも十分軜い
• SQLiteも動いた
• Laravelも動いた
• 自䜜CSSでもキレむに衚瀺できた

「䜜りきる前に公開する」ずいう MVP 開発の良さを改めお実感したした。

🙌 最埌に

個人開発は完璧を目指すず氞遠に出せないので、
たずは動くものを公開しおフィヌドバックをもらうのが良いず思っおいたす。

今回の蚘事が、個人開発を始めたい人、
Laravel × Render で䜕か動かしたい人の参考になれば幞いです。

ご質問・改善案があれば気軜にコメントください

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?