作成: 2026-09-10 / 作成者: DFA Robotics
★最新のDDL(clean_watch_20260909.sql)をお送りいただき、ありがとうございました。★ (2026-09-09 受領。第6回でお願いしていた項目です)
また、★率のカラムを小数第一位まで持つ形(double(4,1))に変更いただき、ありがとうございました。★ ★当方からお願いしていた内容が、そのまま反映されておりました。★ これで当方の判定処理が正しく行えるようになります(詳細は第1部)。
本書は次の5部構成です。
| # | 内容 | 優先度 |
|---|---|---|
| 1. 照合結果のご共有 | いただいたDDLを当日中に照合しました。MariaDB の件と、★依頼2件の取り下げ★もこちらです | ★回答不要★ |
| 2. 接続先(ホスト名・ポート) | ★第6回からの継続。あとはこれだけです★ | ★最優先★ |
| 3. DDL の未反映項目(4件) | 採番・桁数・DEFAULT・索引の食い違いです | ★お手すきの折に★ |
4. precheck に入る値の範囲 |
反映時期と既存データの扱い | 中 |
| 5. 面積の型変更について | ★共有のみ。質問はありません★ | ★回答不要★ |
★今回は、お伺いすることを3件に絞りました。★ (★接続先 / DDL の未反映4件 / precheck の値域★) ★お伺いする件数が少ないほど、早くお返事をいただけると考えたためです。★ ★第1部と第5部は当方からの共有ですので、回答は不要です。★
第6回で「★受領しましたら、その日のうちに照合してご報告します★」とお約束していた件です。 ★2026-09-09 に受領し、当日中に照合を完了しました。★
★ローカルの MySQL に読み込み、09-07版・09-02版と information_schema で機械的に差分を取りました。★ 目視ではなく、列名・型の両方を双方向で突き合わせています。
| 変更前 | 変更後 |
|---|---|
tinyint unsigned(整数) |
★double(4,1)(小数第一位)★ |
対象は ★13列★ です。
| テーブル | 列 |
|---|---|
customer_summaries / facility_summaries |
operation_ratio / launch_ratio / clean_ratio / error_ratio(各4列) |
clean_status_histories / clean_statuses / clean_task_reports / robots / section_robot_statuses |
clean_ratio(各1列) |
★これで当方の判定が正しく行えるようになりました。ありがとうございます。★
当方は清掃完了率から4段階(◎○△×)の判定を行っており、 ★その境界値は 90.0 / 90.1 / 70.0 / 70.1 / 10.0 / 9.9 と、すべて小数第一位までです。★
整数で格納されていると、★例えば 89.6% が 90 に丸められて格納され、 本来「○」であるべきものが「◎」になってしまう★という問題がありました。 ★今回の変更で、この問題は解消しました。★
★CREATE TABLE は 39 で、09-07版・09-02版と同数です。★ テーブル名の集合も完全に一致しました。 ★列の増減もありません。★ 今回の変更は型(と一部の DEFAULT)だけでした。
なお、面積のカラムも decimal から double に変わっておりましたので、 この点だけ第5部で申し添えます(★当方に実害はありません★)。
★本書をお送りする前に、本番サーバが MariaDB であることをお教えいただきました。ありがとうございます。★
(09-09版のダンプヘッダが 5.5.5-10.11.13-MariaDB-log になっており、 09-07版までの MySQL 8.0.41 と異なっておりましたので、お伺いしようとしていた件です。 ★先にご回答いただけましたので、本書からは質問を取り下げました。★)
当方の対応状況を申し添えます。
| # | 内容 |
|---|---|
| 1 | ★アプリの実装に生の SQL は1件もありません。★ すべて Prisma のクエリビルダ経由ですので、★現時点で対応が必要な箇所はありません★ |
| 2 | ★DBクライアントのドライバも、すでに MariaDB 用のもの(@prisma/adapter-mariadb)を使っております★ |
| 3 | ★「どうしても MariaDB 特有の DML を使いたい場合はその箇所をお知らせください」とのご指示、承知しました。★ ★その必要が生じた際にご連絡します。★ |
なお、★当方のローカルの検証環境は MySQL です★ので、 ★今後もし生の SQL を書く場合は、MySQL と MariaDB の双方で通る書き方に注意いたします。★
第5回・第6回でお願いしておりました ★B-1(clean_timetable_id の外部キー/索引)★ と ★A-1(robot_error_reports の主キー)★ について、 ★当方の実装が固まり、いずれも当方側で支障が無いことがはっきりしました。★ ★今回の依頼から外させてください。★
clean_timetable_id の外部キー・索引)★当方は、これらのテーブルを全件取得し、アプリ側で突き合わせる実装にしました。★
clean_timetables / clean_status_histories / robot_error_reports を、 それぞれ ★WHERE 句なしの全件取得★で読み出していますclean_timetable_id をキーにした対応表をメモリ上に作り、そこで結合していますclean_timetable_id で「検索」をしておりません。★ ★索引は WHERE 句で絞り込むときに効くものですので、この実装では使われません。★★この実装はすでに完成しており、外部キーが無いまま清掃ログの画面が動いております。★
また、★どの索引が必要かは、実際のクエリの形と、実データの量・分布で決まります。★ ★当方はまだ実データを1行も見ておらず、絞り込みのクエリも書いておりません。★ ★この状態で特定の索引を名指しでお願いするのは、当方の根拠が薄いと考え直しました。★
★したがって、現時点で支障はありません。★ ★将来クエリの形が変わって索引が必要になりましたら、 その時点で具体的なクエリを添えて、あらためてご相談します。★
過去の確認書では外部キーの追加をお願いしておりましたが、 ★当方の実装方針が定まった結果、当方の見立てが変わりました。★ お手数をおかけしました。
robot_error_reports の主キー)error_id を識別子として使う方針は第4回のご回答でいただいており、当方はその前提で実装しております。
★主キーが無くても当方の実装は動いております。error_id に UNIQUE がありますので、 一意性は担保されています。★ ★当方の実装で支障が無い以上、DDL の変更をお願いする根拠がありませんので、 こちらも依頼から外します。★
★第6回でもお願いした件で、恐れ入りますが繰り返しになります。★
★参照用アカウントは 2026-09-08 にいただいておりますので、あとは接続先だけです。★
★接続先のホスト名(または IP アドレス)と、ポート番号★
をお教えいただければ接続できます。
| # | 確認したいこと | 補足 |
|---|---|---|
| 1 | ★接続元IPの制限はありますか★ | ある場合、当方の接続元をお伝えしますのでお知らせください |
| 2 | ★SSL/TLS 接続は必須でしょうか★ | 必須の場合、証明書の受け渡し方法もお教えください |
| 3 | ★接続先はステージング環境でしょうか、本番環境でしょうか★ | 当方の扱い(参照のみ / 負荷のかけ方)を合わせたいためです |
★接続情報さえいただければ、すぐに使える状態になっております。★
| # | 済んでいること |
|---|---|
| 1 | ★いただいたDDLからローカルにDBを作成し、実DDLと列レベルで完全一致させました★(差分0件を機械的に確認済み) |
| 2 | ★prisma db pull でスキーマを取り込み済みです★(今回の23列の型変更も反映済み) |
| 3 | ★施設マスタ・スケジュール・D-Secログ・D-Secアラート・清掃詳細ログの5画面が、そのローカルDB経由で動くところまで実装済みです★ |
★接続先をいただければ、接続文字列を差し替えるだけです。★
また第6回でお伝えしたとおり、接続でき次第、error_type の値の分布・robots.status の実出現値・ 週次サマリの week の値域など ★当方で数えられるものは当方で確認します★ ので、 ★その分だけ貴社への照会が減ります。★
★お忙しいところ恐縮です。3回目のお願いになります。★ 第5回・第6回でお願いしていた項目のうち、★4項目が 09-09版でも未反映でした。★
★今回のDDLは率と面積の型変更が主眼だったかと存じますので、 これらは単に今回のスコープに入っていなかっただけかと思っております。★ 状況だけ共有させてください。
| # | お願いしていた内容 | ★09-09版の実測★ |
|---|---|---|
| A-2 | 履歴テーブルの id を AUTO_INCREMENT で採番 |
clean_status_histories.id / clean_timetable_histories.id とも bigint(20) unsigned NOT NULL。AUTO_INCREMENT 無し |
| A-3b | facility_contacts.email を varchar(100) に |
varchar(255) DEFAULT NULL のまま(contact_type は tinyint(3) unsigned で反映済みです) |
| B-2 | robot_task_versions.clean_schedule_id にインデックス |
KEY は robot_task_versions_robot_id_foreign(robot_id)のみ。clean_schedule_id のインデックスは0件 |
| B-3b | security_status_histories.reported_at に DEFAULT |
timestamp NOT NULL、DEFAULT なしのまま |
1-5 で取り下げた2件(外部キー/索引・主キー)は、 ★「DBの設計をどうするか」という判断を伴うお願い★でした。 ★当方の実装方針が固まり、必要がなくなりましたので取り下げました。★
★一方、この4件は性質が違います。★ ★いずれも、採番・桁数・DEFAULT・索引の有無という、具体的で機械的な食い違いです。★
| # | 食い違いの中身 | 補足 |
|---|---|---|
| A-2 | ★採番の仕組み★ | id に AUTO_INCREMENT が無く、★誰が採番するのかが決まっていない状態★です |
| A-3b | ★桁数★ | 「email は varchar(100) とします」とご回答いただいた桁数が、★varchar(255) のまま★です |
| B-2 | ★索引の有無★ | ★定義書で fk と記載されている列★ですが、実DDLには外部キーも索引もありません |
| B-3b | ★DEFAULT の有無★ | timestamp NOT NULL に DEFAULT 句がありません |
★いずれも「どちらが正なのか」が当方には判断できない箇所です。★ ★意図的なものでしたら、その旨だけお知らせいただければ結構です。★
★いずれも当方の開発を止めておりません。★ ★お手すきの折に、まとめてご対応いただければ十分です。★
★急かす意図はありません。★ 状況が分かれば大丈夫です。 ★次回まとまった段階でDDLをいただければ、同じように当日中に照合してご報告します。★
clean_timetables.precheck に入る値の範囲をお教えいただけますでしょうかclean_timetables.precheck は現行 ★tinyint unsigned / 既定値 0★ です(09-09版でも変化なし)0 = 本清掃 / 60 = 60分前 / 30 = 30分前」のように、分前の数値をそのまま入れる方向で ご検討いただいている★ と伺っております20 なら20分前★ のように、任意の分数が入りうるとも伺っております| # | 内容 |
|---|---|
| 1 | ★この理解で合っていますでしょうか★ |
| 2 | ★いつ頃反映される見込みでしょうか★ |
| 3 | ★★既存のデータはどうなりますでしょうか★★ — ★1 / 2 のまま残るのか、60 / 30 に更新されるのか★ |
| 4 | ★★新旧の値が混在する期間はありますでしょうか★★ |
| 5 | ★0 以外に予約値はありますでしょうか★ |
★特に4番をお伺いしたいです。★ ★混在すると、当方は 1 を「1分前」と読み違えてしまうためです。★ ★値だけを見て新旧を判別する方法がありませんので、期間が分かれば当方で切り替え時期を合わせられます。★
★アラート画面で「60分前の異常」「30分前の異常」を出し分けるのに、この値を使います。★
★値の意味を取り違えると、現場への連絡タイミングの判断を誤ります。★ 「30分前のチェックで異常が出た」のか「60分前で出た」のかによって、 現場に間に合うかどうかが変わるためです。
なお、★DDL からは値の意味が読めませんでした★(カラムコメントが空のため)。 ★型は tinyint unsigned(0〜255)ですので、60 も 30 も 20 も、型の変更なしで入ります。★ つまり ★値の意味の変更は DDL には現れません★ ので、お伺いする次第です。
★★これは要望でも質問でもなく、事実の共有だけです。★★
09-09版で、面積のカラムも型が変わっておりました(★10列★)。
| 変更前 | 変更後 |
|---|---|
decimal(12,6) unsigned |
★double(12,6)★(customer_summaries / facility_summaries は double(14,6)) |
| テーブル | 列 |
|---|---|
clean_status_histories / clean_statuses / clean_task_reports |
task_area / clean_area |
customer_summaries / facility_summaries |
task_area / clean_area |
★この変更で当方が困ることはありません。★ 理由は2つです。
| # | 理由 |
|---|---|
| 1 | ★viewer に面積を表示する箇所は1つもありません★(画面に出るのは % だけです) |
| 2 | ★面積は完了率の計算材料としてのみ使う想定でしたが、率を小数でいただけるようになったため、当方で計算し直す必要も無くなりました★ |
★したがって、お戻しいただく必要はありません。★
当初は「率の小数化に伴う変更でしょうか」とお伺いしようと考えておりましたが、 ★上記のとおり当方に実害がありませんので、今回は質問といたしません。★ ★お伺いする件数を絞り、早くお返事をいただきたいためです。★
もし何か意図がおありでしたら、★次回ついでの折にお聞かせいただければ十分です。★
★今回は、お伺いすることを3件に絞りました。★ ★お伺いする件数が少ないほど、早くお返事をいただけると考えたためです。★
優先度をつけるとすれば次の順です。
| 順 | 項目 | 理由 |
|---|---|---|
| ★1★ | ★接続先(ホスト名・ポート)★ | ★アカウントはいただいておりますので、これだけで接続できます★。9月中のデモを実データで行えるかがここで決まります |
| 2 | precheck の値の範囲と反映時期 |
★新旧混在の期間があるかどうかを特に知りたいです★ |
| 3 | DDL の未反映4件(A-2 / A-3b / B-2 / B-3b) | ★お手すきの折で結構です。当方の開発は止まっていません★ |
★1(接続先)が最優先です。★ ★これだけ先にいただければ、当方で確認できることが一気に増え、その分だけ貴社への照会が減ります。★
なお、これまでお願いしておりました外部キー/索引(B-1)と主キー(A-1)は、 ★当方の実装方針が固まり必要がなくなりましたので、今回の依頼から外しました★(1-5 に経緯を記しました)。
率のカラムの小数化、そして本番が MariaDB であることのご教示、あらためてありがとうございました。 引き続きよろしくお願いします。