# 工事記録用カメラアプリ

## アプリ概要

**工事記録用カメラアプリ**は、建設現場での写真記録に特化したスマートフォン向けカメラアプリです。現場写真に工事名や日時などのテキスト情報を重ねて記録できる「電子小黒板」機能を内蔵しており、従来の黒板を用いた撮影をデジタルで簡便に置き換えます。操作感は一般的なデジタルカメラアプリに近く、ズームやシャッターなど直感的な操作が可能です。建設業の担当者はもちろん、メモ代わりに写真へテキストを記録したい一般ユーザーにも役立ちます。

## 主な機能

* **電子小黒板機能**: 工事名・工種・測点・任意のコメント等のテキストを写真上に重ねて記録できます。現場の黒板情報をデジタルに管理し、写真ごとに保存可能です。
* **直感的なカメラ操作**: 専用のシャッターボタンによる撮影、画面スライダーや音量ボタンによるズーム操作など、スマホ標準のカメラに近い感覚で操作できます。
* **工事情報の管理**: 現場ごとの工事番号・工事名をアプリ内に登録・保存し、工事に紐づく「工種」や「測点」のリストを管理できます。登録した情報は黒板の入力補助として活用され、何度も入力する手間を削減します。
* **黒板テンプレート保存**: 黒板のレイアウト（背景デザインや入力したテキスト配置）を複数保存し、あとから呼び出して再利用できます。現場毎に異なる黒板デザインを事前に用意しておくことも可能です。
* **写真撮影と保存**: 撮影した写真は端末のギャラリーに自動保存されます。設定により、黒板情報入りの写真と黒板なしの写真を同時保存したり、写真に撮影日時やGPS位置情報を付加することができます。
* **クラウド連携**: 主要なクラウドストレージサービス（Box・Dropboxに対応、**Google Driveは今後対応予定**）と連携し、アプリ内から選択した写真を直接アップロード可能です。現場からオフィスへリアルタイムに写真共有ができます。

## インストール方法

本アプリはAndroid 6.0以上のAndroidスマートフォン/タブレットに対応しています。インストール方法は以下の2通りです:

1. **オープンテストテスターとしてGooglePlayからダウンロード・インストールする**: 本アプリケーションはオープンテスト段階にあります。https://play.google.com/store/apps/details?id=ono.denkoku.example.cameraapp  よりダウンロード・インストールしてください。
3. **ソースコードからビルド**: 開発者の方や最新コードを利用したい場合は、リポジトリをクローンしてビルドできます。以下は手順の概要です:

   * 本リポジトリをクローンします:

     ```bash
     git clone https://github.com/tetsuyaohno/SmartCamera.git
     ```
   * Android Studio などの開発環境でプロジェクトを開きます。
   * 接続したAndroid実機またはエミュレータ上でビルド・実行します。

## 操作手順の概要（簡易チュートリアル）

1. **アプリの起動と準備**: アプリを起動するとカメラ利用の許可を求められます。初回は必ず\*\*「許可」\*\*を選択してください。必要に応じて、事前に「工事登録・選択」画面で工事情報（工事番号・工事名）を登録したり、「工種・測点登録」画面で工事に紐づく工種・測点リストを設定しておくとスムーズです。
2. **黒板情報の編集**: 撮影前に黒板に表示するテキストを入力・編集します。黒板編集画面で工事名・工種・測点・任意のコメントを入力すると、画面上のプレビュー黒板にリアルタイムで反映されます。文字サイズや配置（左揃え/中央揃え等）も調整可能です。必要に応じて黒板の背景デザインを選択したり、現在の黒板レイアウトを\*\*「新規保存」\*\*してテンプレートとして保存できます。
3. **写真の撮影**: カメラ画面で被写体を映し、構図を決めて撮影します。画面右側のスライダーでズームイン/アウト（または設定によって音量ボタンでズーム操作）し、シャッターボタンをタップして撮影します。黒板表示をONにしていればプレビュー上に黒板が表示され、その内容が写真に写り込みます。撮影された写真は自動的に端末ギャラリーに保存されます（必要に応じて黒板なしの写真も同時保存されます）。
4. **クラウドへのアップロード**: 保存した写真をクラウドサービスに送信するには、画面上の\*\*「送信」**ボタン等からファイル転送画面を開きます。一覧からアップロードしたい写真を選択し（複数選択可）、**「送信」\*\*を実行します。**初回利用時**は各クラウドサービス（Box/Dropbox）の認証画面が表示され、ログインおよびアップロード先フォルダの選択を行います。その後、アップロードが開始されます。選択した全写真の送信が完了すると「全ファイルアップロード完了」と表示されます。
5. **アップロード完了と確認**: アップロードが完了した写真はクラウド上に保存されます。アップロード済みの写真は、ファイル転送画面内でステータスが更新され、**未送信**フィルターには表示されなくなります。クラウド上のファイルは各サービスのアプリまたはWebサイトで確認・共有・削除等の操作を行ってください。
6. **画像ファイルの保存場所（デバイス本体）**:　撮影した写真はローカルフォルダ直下のPictures(デバイス既定のフォルダ)内のStampedPicturesに黒板入りの写真が、XcameraImagesの中に黒板無しの写真がそれぞれ保管されています。　なお、設定で「黒板を写し込まない」を選択している場合は両方とも黒板無し写真となります。

## 詳細な機能ごとの解説

### 設定画面

設定画面では、カメラ、黒板、クラウドに関する各種設定を行うことができます。画面上部のタブで3つのカテゴリ（**カメラ設定／黒板設定／クラウド設定**）を切り替えて設定を変更します。

* **カメラ設定タブ**: 写真の解像度や画質、保存ファイル形式（JPEG または SVGレイヤ付き）、撮影時に日付を写し込むか、音量ボタンの機能割り当て（シャッター/ズーム/音量変更）などを設定できます。位置情報（GPS）の付加もON/OFF可能です。また、日時補正機能もあり、現在のシステム時刻にミリ秒単位の補正値を加えて撮影タイミングを調整できます（未来の日時は指定不可）。
* **黒板設定タブ**: カメラプレビュー上に黒板を表示するかどうか、黒板情報付きの写真を保存するか、黒板なしの写真を保存するか、といった基本動作を設定できます。さらに、黒板の標準サイズ（特大～ミニの5段階）や標準文字サイズ（特大～小の4段階）、黒板の背景色（青緑・緑・灰・白・黒などのカラー）、日付の書式（和暦・西暦・年月日など多彩な形式）のデフォルト値を指定可能です。また、写真に信憑性（改ざん防止）のための情報を付加する機能も設定できます（付けない/黒板付き写真のみ/すべての写真から選択）。
* **クラウド設定タブ**: 利用するクラウドサービス（Box/Dropbox/Google Drive）を選び、アップロード先となるフォルダ名、および連携に使用するアカウントの名称（メールアドレス等）を設定します。ファイル転送画面でのアップロード時には、ここで指定したサービス種別とフォルダ名が使用されます。

### 工事登録・選択画面

新規工事の登録や既存工事の選択を行う画面です。工事ごとの基本情報（工事番号・工事名）を管理します。画面上部のタイトルバーには「工事登録・選択」と表示されます。

* **工事一覧表示**: 登録済みの工事案件がリスト形式で表示されます（ID・工事番号・工事名の列）。一番上の行はヘッダーです。任意の行をタップするとその工事が選択状態になり、灰色のハイライト表示になります。
* **選択中の工事情報**: リストの下部にある入力欄に、選択した工事のID・工事番号・工事名が表示されます。ここで工事番号や名称を編集すると、自動的に保存され、画面上のリスト表示も更新されます。
* **新規工事の追加**: 入力欄に新しい工事番号・工事名を入力し、\*\*\[追加]\*\*ボタンをタップすると、その内容で新規工事が登録されます。新しい工事はリストの末尾に追加され、IDは自動的に採番されます。
* **工事の削除**: リストから削除したい工事を選択し、\*\*\[削除]\*\*ボタンをタップすると、その工事を削除できます。確認ダイアログが表示され、**OK**を選ぶと内部の保存データからも該当工事が削除され、リストから消えます（この操作は元に戻せません）。
* **工種・測点画面への遷移**: 現在選択中の工事について、\*\*\[工種・測点登録へ]\*\*ボタンを押すと工事IDを引き継いで「工種・測点登録画面」に移動します。そこで選択した工事に対応する工種と測点の編集が行えます。

### 工種・測点登録画面

選択中の工事に紐づく「工種」（工事の種別）および「測点」（測定ポイント）を登録・編集する画面です。画面上部のタイトルバーには「工種・測点登録」と表示されます。

* **画面構成**: 画面上部には選択中の工事ID・工事番号・工事名が表示されます。中央は左右2ペインに分かれており、左側に登録済みの「工種」一覧、右側に「測点」一覧が表示されます。それぞれのリストの最下行には新規追加用の空の入力欄が常に表示されています。画面下部には\*\*\[戻る]\*\*ボタンがあります。
* **工種・測点の選択**: リスト上の既存の工種名または測点名をタップすると、その行が選択状態になり編集が可能になります（選択中の項目はハイライト表示されます）。
* **名称の編集**: 選択した行のテキスト部分をタップすると直接編集できます。内容を修正し、入力後に他の場所をタップしてフォーカスを外すと、自動的に変更が保存され、内部データおよび画面上のリスト表示が更新されます。
* **新規項目の追加**: リスト最下段の空欄の入力欄をタップし、新しい工種名または測点名を入力します。入力が完了してフィールドからフォーカスが外れるか、Enterキーを押すと、新しい項目が登録されリストに追加されます。同時にリスト末尾に再び空行が生成されます。
* **項目の削除**: 削除したい工種名・測点名の項目を**長押し**すると、削除確認ダイアログが表示されます。ここで**OK**を選択すると該当項目が削除されます（内部データからも削除されます）。
* **画面の終了**: 画面下部の\*\*\[戻る]\*\*ボタン、または端末の戻るボタンで前の画面（工事登録・選択画面）に戻ります。

### 黒板編集画面

黒板に表示するテキスト情報を編集・レイアウトする画面です。工事写真に重ねる黒板の内容（工事名・工種・測点・任意のコメント）を入力し、見た目を整えます。入力したテキストは黒板プレビューにリアルタイムで反映されるため、仕上がりを確認しながら編集できます。また、黒板の文字サイズや配置の変更、黒板背景デザインの選択、黒板レイアウト自体の保存などが行えます。

テキスト入力欄は「工事名」「工種」「測点」「内容」の4項目があり、それぞれに文字を入力すると即座にプレビューの黒板画像上の対応箇所（工事名欄、工種欄、測点欄、内容欄）に反映されます。\*\*「工種」**や**「測点」\*\*の欄をタップすると、その工事で登録済みの候補リストが画面下部に表示され、リストから選択して素早く入力することもできます。文字サイズは「文字サイズ」フィールドに数値を直接入力するか、「小・中・大・特大」のプリセットボタンで切り替えて調整できます。また、文字の配置は横方向（左寄せ・中央・右寄せ）および縦方向（上寄せ・中央・下寄せ）を選択可能で、それぞれ即座にプレビューに反映されます。

画面下部には黒板編集に関する各種操作ボタンが並んでいます:

* **戻る／撮影に戻る**: 画面左上の戻るボタン（←アイコン）やカメラアイコンのボタンをタップすると、黒板編集を終了して前の画面に戻ります。現在編集中の黒板IDや背景画像の情報は保存され、復帰後も編集内容が維持されます（カメラ画面から遷移してきた場合は撮影画面に戻ります）。
* **新規黒板選択**: 黒板の背景デザインを変更する場合は、\*\*\[新規黒板選択]\*\*ボタンをタップします。アプリに用意された複数の、デザインを選択するとプレビューの黒板背景がその画像に切り替わります。
* **マイ黒板読み込み**: 以前に保存した黒板レイアウト（テンプレート）を呼び出すには、\*\*\[マイ黒板読み込み]\*\*ボタンを使用します。保存済み黒板の一覧が表示されるので、選択すると対応する工事名・工種・測点・内容、および文字サイズや配置設定が画面に再現されます。
* **上書き保存**: 現在編集している黒板内容を既存の黒板テンプレートに**上書き保存**します（開いている黒板IDのデータを更新します）。処理完了後、「上書き保存しました」というトーストメッセージが表示されます。
* **新規保存**: 現在の黒板内容を新しいテンプレートとして**新規保存**します。内部の保存ファイル上に新しい黒板項目が追加され、新しいIDが割り当てられて画面上に表示されます。以降、そのテンプレートは「マイ黒板読み込み」から呼び出し可能です。
* **削除**: 表示中の黒板テンプレートを削除し、黒板編集画面を初期状態（空の黒板）に戻します。ボタン押下時に確認ダイアログが表示され、「削除」を選択すると保存データからも該当テンプレートが削除されます。

### カメラ画面

黒板の設定が済んだら、実際に写真を撮影する**カメラ画面**で操作を行います。撮影選択時や黒板編集後に開くこの画面では、黒板の操作以外は通常のカメラアプリと同じです。
黒板の位置は指でスライドさせて決めてください。
黒板の向きが自動に設定されている場合は、カメラの向きに応じて90度回転します。黒板の回転は「黒板固定」をチェックすることにより止めることができます。
また、設定画面により縦、横いずれかの固定を選んだ場合は縦向きまたは横向きに固定されます。

* **ビュー表示**: カメラ画面では、端末の背面カメラ映像がフルスクリーンでリアルタイムにビュー表示されます。被写体を画面に収めながら撮影構図を確認できます。
* **黒板編集**: 右側上方の黒板編集補端をタップすると黒板編集画面に切り替わり、黒板ん編集が行えます。
* **ズーム操作**: 画面右端に縦方向のズームスライダーがあり、これを上下にドラッグすることでズームイン/アウトが可能です（上方向でズームイン、下方向でズームアウト）。また、設定によっては端末の音量ボタンにズーム機能を割り当てることもできます。
* **写真撮影**: 画面下部中央にある大きな**シャッターボタン**をタップすると写真を撮影します。ボタン押下時に一瞬ボタンが縮小するアニメーションが表示され、指を離したタイミングで撮影処理が実行されます。撮影後、写真データは自動的に端末ストレージ（ギャラリー）に保存されます。黒板を表示している場合はその情報が写真に合成されます。設定によっては黒板なし版の写真も同時に保存されます（現バージョンでは未実装）。
* **音量ボタンの機能**: 音量ボタンには設定画面で異なる機能を持たせることができます。\*\*「シャッター」**に設定した場合は音量▲／▼ボタンで撮影を実行でき、**「ズーム」**に設定した場合は音量▲でズームイン、音量▼でズームアウトができます（**「音量」\*\*に設定すると通常通り音量調節に使用されます）。
* **画面の終了**: カメラ画面の左上にある戻る（↩）アイコンをタップすると、カメラ画面を閉じて前の画面に戻ります。
* **補足**: 現在のバージョンでは、動画録画には対応していません。また、撮影機能を正常に動作させるために、初回起動時のカメラ・ストレージ権限は必ず許可してください。

### ファイル転送画面

撮影した写真をクラウドへアップロードするための画面です。カメラ画面などで\*\*「送信」\*\*ボタンを押すとこのファイル転送画面が開きます。

* **写真一覧の表示**: ファイル転送画面では、これまでに撮影した写真が縮小サムネイルの一覧表示されます。初めて開いた際など、ストレージ閲覧の権限が未許可であれば許可ダイアログが表示されることがあります。
* **フィルター切替**: 画面下部のラジオボタンで表示対象の写真を絞り込めます。\*\*「未送信」**はクラウド未アップロードの写真のみ、**「送信済」**はアップロード済みの写真のみ、**「両方」\*\*はすべての写真を表示します。選択を切り替えると対応する写真一覧に再読み込みされます。
* **写真の選択**: アップロードしたい写真をタップして選択します。選択された写真はハイライト表示され、画面下部に「〇件選択中」と現在選択されている件数がリアルタイムで表示されます。\*\*\[全選択]**ボタンを押せば一覧内の全写真を一括で選択でき、**\[解除]\*\*ボタンで選択をすべてクリアできます。
* **アップロードの実行**: 画面下部の\*\*\[送信]\*\*ボタンをタップすると、選択中の写真について設定されたクラウドサービスへのアップロード処理を開始します。事前に設定画面で選択されているクラウドサービス（Box/Dropbox 等）に応じて、必要に応じた認証画面やフォルダ選択画面が表示されます（初回利用時のみ認証が必要です）。各サービスで指定フォルダへのアップロードが完了すると、自動的にファイル転送画面に戻り、「全ファイルアップロード完了」のトーストメッセージが表示されます。アップロードに成功した写真は内部ステータスが「送信済」に更新され、以降「未送信」フィルター選択時には表示されなくなります。
* **写真の削除**: 写真の削除は削除ボタンにより行ってください。
* **注意事項**: Google Driveについては現行バージョンではアップロード処理が実装されていません。また、クラウドにアップロードされた写真の閲覧・共有・削除などの操作は、各クラウドサービス側のアプリまたはWebサイト上で行ってください。

## 対応クラウドサービスとアップロード手順

このアプリでは以下のクラウドストレージサービスに対応しています（※設定画面の**クラウド設定**タブで事前に利用するサービスを選択してください。現在のところ保存フォルダやアカウント名は入力しても機能しません、クラウドサービスの画面より設定してください。）。アップロード操作時には各サービスごとの手順に従い認証・転送が行われます。

* **Box**: 送信実行時にBoxのSDKを通じてクラウド連携処理が開始されます。初回時は認証（ログイン）画面が表示され、許可後にアップロード先のフォルダ選択画面が開きます。フォルダを選択すると自動的に写真のアップロードが行われます。全選択写真のアップロードが完了すると「全ファイルアップロード完了」と表示されます。
* **Dropbox**: Dropboxの場合も送信実行時に認証・連携処理が行われます。初回利用時はDropboxのログイン画面が表示され、認証後にアップロード先フォルダを選択します。選択完了後、自動的に写真のアップロードが開始され、全ファイルの転送完了時に完了メッセージが表示されます（処理フローはBoxと同様です）。
* **Google Drive**: 現在のバージョンではGoogle Drive連携は**準備中**です。設定画面でサービス自体は選択できますが、写真の直接アップロード機能は未実装のためご利用いただけません（今後のアップデートで対応予定）。

各クラウドサービスを利用するためには、事前に対応するサービスのアカウント取得および認証が必要です。また、指定したアップロード先フォルダはクラウド上に作成済みであることをご確認ください。アップロード後のファイル確認や共有・削除などの操作は各クラウドサービス側の機能をご利用ください。

## 注意点と既知の制限事項

* **ビデオ撮影非対応**: 本アプリは写真撮影専用であり、ビデオ録画機能は提供していません。
* **権限許可**: 初回起動時にカメラおよびストレージへのアクセス権限を求められます。\*\*「許可しない」\*\*を選択した場合、正常に撮影・保存ができないため、必ず権限を許可してください。
* **黒板情報の保存設定**: 設定で「黒板情報を写真につける」がOFFの場合、黒板なしの写真も保存できます（デフォルトはON）。ONにすると黒板情報付きの写真のみ保存されます。
* **設定項目の一部制限**: 設定画面には将来の機能拡張用の項目が含まれている場合があります（「未使用」と表示された項目など）。現バージョンではこれらを変更しても動作に影響はありません。
* **工事情報編集時の注意**: 工事登録・工種測点画面では、入力欄からフォーカスを外したタイミングで自動的に内容が保存されます。明示的な保存ボタンがないため、編集後は他の箇所をタップするなどして変更を確定してください。また、空のまま\*\*\[追加]\*\*ボタンを押すと無効な空データが登録されてしまう場合がありますのでご注意ください。その場合は削除ボタンより削除してください。
* **データ削除の不可逆性**: 工事情報や黒板テンプレートの削除操作は取り消しできません。一度削除すると元に戻せないため、重要なデータは削除前にバックアップを取ることをおすすめします。
* **クラウドアップロードの前提**: クラウド連携機能を利用するにはインターネット接続が必要です。また、アップロード先のクラウドフォルダは事前にサービス側で作成しておいてください。各クラウドサービスのアカウント認証が済んでいない場合、アップロード時にログインが求められます。
* **Google Drive連携の未実装**: 現在、Google Driveへの直接アップロード機能は実装途中です。本サービスへの対応は今後のアップデートまでお待ちください。

