この作品について

散歩の記録から、
自分の傾向を見つける。

Walk Insightは、散歩コースとその日の気持ちを一緒に残し、あとから自分の記録を振り返るためのアプリです。

個人アカウントで操作できる、保存ありの試用版です。入力は実際のデータベースに保存されます。

試す順序

散歩日・コース・評価の小さな記録から始められます。固定サンプルの読み取り専用デモや共有アカウントではありません。

  1. 自分のアカウントで始める

    登録するとログインした状態でホームへ進みます。すでに登録済みなら、ユーザー名またはメールアドレスでログインできます。

  2. コースを作成・編集・複製する

    出発地・目的地・経由地を登録します。複製すると、地点の順序を引き継いだ別のコースを作れます。地図が利用できない場合も、入力済みの地点や日記の文字情報を確認できます。

  3. 日記を作成・編集・削除する

    コースを選び、散歩日と評価を記録します。気分や天候、本文は必要な分だけ追加できます。不要な日記は詳細画面から削除内容を確認して、個別に削除できます。

  4. 自分の記録を振り返る

    期間やコースで絞り込み、評価や気分の変化を見比べます。平均値と対象件数を併記し、記録が少ないときはそのことが分かる表示にしています。

  5. 使わないコースをアーカイブする

    アーカイブは削除ではありません。既存の日記を残したまま、新しい日記のコース選択候補から外します。

  6. 試用を終えたら本人が退会する

    「設定」から「削除内容を確認」へ進み、現在のパスワードを入力して退会できます。稼働中のデータベースから、アカウントと本人のコース・地点・日記・経路キャッシュを削除します。

利用にあたって

この試用版は、提供を停止する場合があります。障害や誤操作によってデータが失われる可能性があり、復旧や継続提供は保証していません。大切な記録の唯一の保管先にはしないでください。

本名・自宅・勤務先など、重要な情報や場所は入力しないでください。試すときは、個人の生活範囲が分からないコース名や内容をお使いください。

日記の個別削除、コースのアーカイブ、本人の退会は別の操作です。退会による稼働中データの削除と、バックアップが存在する場合の消去時期は別であり、バックアップの保持期間や復旧可能性は確定していません。

お問い合わせ:kazuki.piece.of.peace@gmail.com

停止時の告知方法は、公開前の確認事項として残っています。メールの到達や復旧対応を保証する案内はしていません。

情報の扱い

アプリに保存する情報

登録情報、コースと地点、日記などの入力は、このアプリのデータベースに保存します。コースと日記はログインした本人のアカウントで管理し、他の利用者へ公開する機能はありません。登録時の自動ログインは、メールアドレスの所有確認が済んだことを意味しません。

Google Mapsの利用

地図表示・地点検索・経路確認にはGoogle Mapsの機能・コンテンツを利用します。利用時には、検索語・IPアドレス・座標等がGoogleへ送信されます。アプリ内で本人の記録を非公開にすることと、外部サービスへの情報送信は別です。

Google Mapsの機能・コンテンツの利用には、Google Maps追加利用規約とGoogleプライバシーポリシーが適用されます。どちらも登録前に確認できます。

この紹介ページ自体には地図や地点検索を読み込んでいません。上の外部リンクを開くとGoogleのサイトへ移動します。

技術と採用理由

入力・保存・振り返りの流れを小さな構成で作り、所有者の確認をサーバー側に集めています。以下は採用した実装と公開に向けた構成の説明であり、本番の稼働確認を示すものではありません。

バックエンド:Python / Django
認証、フォーム検証、データ操作をDjangoでまとめ、各利用者の所有者条件をサーバー側で確認します。
フロントエンド:HTML / CSS / JavaScript
Djangoテンプレートでサーバー側からHTMLを生成し、CSSで画面の見た目を整えます。地点入力や地図操作など、ブラウザー上で動かす部分にJavaScriptを使います。
PostgreSQL / SQLite
本番用はLightsailホスト上のPostgreSQLです。データベースをアプリのコンテナから分け、制約やトランザクションで整合性を保つ構成です。ローカル開発には準備しやすいSQLiteを使い、両DBの試験で差を確認します。
AWS:Amazon Lightsail / Amazon SES / Amazon SNS
Amazon LightsailをアプリとPostgreSQLの稼働ホストに、Amazon SESをパスワード再設定メールの送信に使います。Amazon SNSはSESからの不達(バウンス)・苦情を運用者へメールで通知するために使い、設定と試験通知の受領を本人が確認しています。
Nginx / Docker / Gunicorn / WhiteNoise
Nginxを入口とし、Docker内のGunicornへ転送する構成です。WhiteNoiseで静的ファイルを配信し、アプリの実行環境を揃えます。ホストやドメインの設定・操作記録は、アプリとは別のインフラ管理リポジトリで扱います。
データベースのキューを使うメール処理
パスワード再設定要求をDBキューへ保存し、別のDjangoコマンドのワーカーが処理します。画面の応答と配送処理を分け、追加のキューサービスを増やさない構成です。CeleryやRedisは使っていません。
Google Maps Platform
Maps JavaScript APIとPlaces APIで地図・地点検索を扱い、徒歩経路はサーバー経由のRoutes APIで確認します。ブラウザー用とサーバー用のキーを分け、地図の不調で日記の文字情報まで読めなくならない設計です。
GitHub Actions
コードの書式・静的検査と、SQLite/PostgreSQLでの自動テストを行います。CIは検証のために使い、本番への自動配備は行いません。CI成功と、実ブラウザー・外部サービス・本番環境での確認を分けて記録します。

開発の進め方と役割

要件と受け入れ条件を整理し、実装、自動テスト、レビュー、実際の利用確認へ進めています。指摘と対応を文書に残し、確認済み・未確認を区別して次の判断につなげます。

本人が担当したこと

要件・優先順位・費用・公開方針の判断、AI生成物のレビュー、クラウド管理画面と秘密情報の操作、実際の利用確認を担当しました。

AIが支援したこと

設計案、実装、試験・レビュー、文書や操作手順の作成を支援しました。AIの設計・開発・レビュー担当を分けていますが、人間の第三者による監査ではありません。

紹介の制作完了とサイト公開は別の段階です。実Googleでの受け入れ、外部サービスの提供条件や保存条件の確認、公開判断は残っています。独立ステージングと、その環境での復元・監視・ロールバックの整備・試験は後日対応で、完了していません。