Kon's DX Lab - Case Study

Day 93|失敗しないファイル設計:アプリを整理するログ・バックアップ・staticの考え方

Published on 2025-07-03

🔬 Case Study Summary
Problem

(ここに課題を記述)

Result

(ここに具体的な成果を記述)


Tech & Process

(ここに採用技術とプロセスを記述) コードを詳しく見る »

こんにちは、コンです🦊

せっかく作った自作アプリ、会社の同僚や知り合いに「ちょっと触ってみて!」ってURLを渡せると嬉しいですよね。

でも、いざ配布してみると

「エラー出たけど何が原因か分からない」
「別の環境だとなぜか○○が表示されない?」
「最悪、アプリ/ツール壊れたらどうしよう…」

…って後から思うこと、ありませんか?


今回は、自分ひとりだけのアプリ「誰かに安心して触ってもらえるアプリ」にするための整理術 に取り組みました。


✅ ログを残して「どこでエラーが出たかすぐ分かる」
✅ staticフォルダで「配布ファイルが行方不明にならない」
✅ バックアップで「何かあっても昨日に戻れる安心感」


作っただけで終わらず、人に共有できるし、手伝ってもらえる状態に持っていきたい!🦊

1. 導入:この記事でできるようになること

「自分が作ったVPS上のアプリを、知り合い・会社の人・ネットの誰かが触ったときにも困らない整理方法」について、自分の疑問ベースでまとめました 。

  • 何かあったときに原因がすぐ分かるログの残し方

  • 公開ファイル(画像やCSS)を安全に分けて置く方法

  • 万が一壊れても元に戻せる最低限のバックアップの作り方

💡 なぜ必要?

  • 作ったのが自分でも、使うのは他人(非エンジニア)である場合も

  • バグが起きても「すぐ見つけて直せる」「証拠がある」だけで信用される

  • 失敗しても「昨日の状態に戻せる」だけで大事故が防げる


2. 背景・基礎知識

📦 「なんでログなんか残すの?」

→ 自分一人で遊んでるときは不要かもしれません。

でも知り合いや社内の人が「画面が真っ白なんだけど…?」と連絡してきたとき、ログが残ってないと、何が起きたのか自分でも分からない です。

✅ ログ活用のリアル例

📌 どんなときに助かる?

  • 「使えないんだけど!」と言われた
    → ログで「どのAPIでエラーが出たか」が一目で分かる

  • アプリが落ちて自動再起動した
    → どの時間帯に落ちたか?アクセス多すぎ?原因がログで分かる

🛠 どう整理すると便利?

  • ログファイルを日付で分けると探しやすい

logging.basicConfig(
    filename=f'logs/app_{datetime.date.today()}.log',
    level=logging.INFO
)
  • nginx のアクセスログも /logs/nginx/ にまとめる

  • 必要なら tail -f logs/app.log でリアルタイム監視

🪄 フロント側で活かすなら?

  • ログでエラーを検知したら、自動でSlackに通知しておく

  • ログに残した内容を可視化して「何件アクセスあったか」など簡易分析に使う


🌐 「staticって何?なんで分けるの?」

→ static は CSS、画像、PDFなど「誰でも見られてOKなファイル」 の置き場です。

アプリの本体と混ぜると、

  • 「どれがユーザー用?どれが秘密?」が分からなくなる

  • 消してはいけないファイルを間違って削除しやすい

だから /static に分けるだけで 事故が減る!

✅ static活用のリアル例

📌 どんなときに助かる?

  • バナー画像やロゴを更新したいとき、/static/ だけ差し替えればOK

  • ダウンロード配布ファイルを static/ に置けば誰でも取得できる

🛠 どう整理すると便利?

  • 画像は static/img/、CSSは static/css/ に分ける

  • 大きな動画やzipはCDNや別サーバーに置く手もある

🪄 フロント側で活かすなら?

  • 会社や知り合いに「画像URLを送るだけ」で最新バナーを共有できる

  • Reactなどフロントで public/ と static/ をちゃんと分ける基礎になる


🗂 「バックアップってどんなとき役立つの?」

→ 「自分が間違ってファイルを削除した」「サーバーが壊れた」
そういうときに 前の日に戻れる 仕組みです。

これがないと、

  • 1ヶ月かけて作ったコードが一瞬でゼロ

  • 誰も復元できない

1フォルダだけでも良いから取っておく!

✅ バックアップ活用のリアル例

📌 どんなときに助かる?

  • VPSの設定を間違えて全消ししてしまったとき

  • 誰かが操作を誤って古いコードに戻してしまったとき

🛠 どう整理すると便利?

  • backup/ は日付でフォルダ名をつける
    例: backup/2025-06-21/

  • cron で定期的に tar.gz を取っておく

  • 1週間で古いものは自動削除するスクリプトを組む

🪄 どう復元する?

  • 事故が起きたら:

tar -xzf backup/2025-06-21/app_backup.tar.gz -C ~/myapp/
  • DBも同じく:

mysql -u root -p mydb < backup/2025-06-21/mydb.sql

3. 実践パート

✅ ステップ1|最低限の構造を作ろう

mkdir -p ~/myapp/{app,logs,static,backup}
myapp/
 ├─ app/      ← コード
 ├─ logs/     ← 動作ログ
 ├─ static/   ← 公開ファイル
 ├─ backup/   ← 毎晩の控え

✅ ステップ2|Flaskでログを残す

import logging
from flask import Flask

app = Flask(__name__)

logging.basicConfig(filename='logs/app.log', level=logging.INFO)

@app.route("/")
def home():
    app.logger.info("アクセスがありました")
    return "Hello!"

if __name__ == "__main__":
    app.run()

✅ ステップ3|staticを分けて配信(nginx)

location /static/ {
    alias /home/ubuntu/myapp/static/;
}

これで、https://yourtool.xyz/static/logo.png が誰でも見られる!


✅ ステップ4|バックアップを取る

tar -czf ~/myapp/backup/app_backup_$(date +%F).tar.gz ~/myapp/app

4. つまずきポイントと対処法(FAQ)


5. まとめと次回予告

✅ 今回は、「作ったアプリを誰かに渡しても安心できる整理方法(ログ・static・バックアップ)」を一緒にやってみました。

単にフォルダを作るだけじゃなくて、

これがあると、他の人にも自信を持ってURLを送れる
「失敗しても“元に戻せる”安心感が、あなたの挑戦を増やす」

これが ログ・バックアップ・static を残す本当の意味です!

これだけで「自分だけの自己満アプリ」から、
「誰かに自信を持ってURLを送れるアプリ」に進化です。


🔜 次回は、自動バックアップ&cronの基本 について取り組む予定です!

#ConoHa VPS, #Linux, #SSH, #仮想サーバー, #ディレクトリ構造