473

公式ぷよのリプレイデータ補完計画の案

by
takezou
takezou
●目次

○はじめに
・この記事の目的
・歴史的資料としてのプレイ記録

・計画目的
・なぜリプレイデータか

○プレイ記録のデータ形式
・「動画」形式
・「リプレイデータ」形式
・「棋譜」形式

○プレイ記録について
・プレイ記録の活用
・プレイ記録の2次利用許可
・リプレイデータの2次利用ガイドライン

○セガ社へ求める最低限の機能
・リプレイデータの蓄積
・リプレイファイル1次配布サーバの公開
・PC版のリプレイ再生ツールの提供

○ユーザー開発部分
・リプレイファイル2次配布サーバ
・リプレイデータベースサービス

○その他
・活用例
・観戦機能との関連

○理想に近づけるためのさらなる改善案


=================================
●この記事の目的

この記事はあくまで計画案の構想メモであり、直接セガ社に働きかける内容ではない。

公式ぷよ上のプレイ記録の欠けを減らすためにユーザーが対処できない問題部分解決に必要な最低限の機能を勘案し、
実現可能性を高めるためにセガ社の手間や費用を極力減らすことを優先した方法を模索し、具体案を煮詰めること。



=================================
●歴史的資料としてのプレイ記録

プレイ記録とは歴史的資料である。
過去に行われたプレイを正確に考証するときには、その客観的証拠となるプレイ記録を元にして進めることになる。

1991年アーケードぷよぷよ初代の稼働時のプレイ記録は一切残されていないが、今からそのプレイ内容に対して考証することができず、その機会が失われている。
稼働時に新しいパズルゲームが多くのプレイヤーにお披露目され、何の攻略情報も持ち得ないプレイヤーたちがどのように形を使い連鎖の上達をしていったか、その変遷を知ることができない。

プレイ記録が残されていないことを責めたいわけではなく、記録が残っていないということはその出来事について考証できずその機会を失った状態にあることを言いたい。
体験談や伝聞などの主観的証拠を根拠に考証することもできるが、それらは主観であり勘違いや過小過大な表現により間違っている可能性を含んでいる。


==========
上記のような全くプレイ記録が残されていない空白期間があるという極端な事例ではなく、現状のようなプレイ記録に欠けがある状態ではどうか。

多少の手間は掛かるが動画記録を残したい人は動画サイトで配信し残すこともできるし、
大会のプレイ記録も運営やプレイヤーの努力により動画として大体残すことができている。
上手い人の動画は残りやすいので、上達の参考にすることにおいては不自由は少ない。

完全ではないが多くの人がある程度納得できるプレイ記録の蓄積と公開ができる環境があり、それに対するを考証や分析を行える環境が実現できていると言える。

しかし自分としてはデータ蓄積の執着から来る欲求があり、もっと完成度の高い環境を目指したい。
あれこれと今計画が実現した際の様々な利点を探り、実現可能性を高めるために多くの人を納得させる方法を模索している。

ぷよぷよ文化が今後数十年、数百年と続いていく中で、プレイ記録の蓄積はいずれ解決しなければいけない問題であり、今記事はその解決手段の1つとして書いている。

遅かれ早かれいずれはリプレイデータを蓄積するようになるはずで、この問題解決は「いつやるか」であり、当然早いほうがいいに決まっているし、時期が遅くなるほど記録の欠けが多くなるのでなんとか進展させていきたい。



=================================
●計画目的

公式ぷよぷよゲームのリプレイデータの完全な蓄積と公開を目指す計画の目的。

○漠然とした目的。
・ぷよぷよの研究、練習、学習、評論、考証を行う環境の改善。

○具体的な目的。
・プレイ記録を残すためにプレイヤーの手間を減らすこと。
・イベント作業の自動化。
・完全な棋譜の確実な作成。
・2次利用可能なリプレイデータの蓄積と公開。
・プレイ記録という客観的な歴史的資料の蓄積と公開。

○個人的な目的。
・ぷよぷよの研究練習学習サイトを開発中なのでそれに活用したい。
・段級位制ネット対戦会「青連会」の構想があり、その対戦会で行われる全てのプレイ記録を自動的に蓄積したい。



=================================
●なぜリプレイデータか

動画形式は後世に伝えるにはファイルサイズが大きすぎて、メイン動画サイトの終息とともに潰えてしまうリスクがある。
動画からの棋譜化にやや問題がある。
それらを解決するデータ形式として、ファイルサイズ小さく、プレイの完全再現が可能で、完全な棋譜を確実に作成できる、といった理由からリプレイデータがプレイ記録の元データとして適している。

各種データ形式の利点と欠点については後述する。



=================================
●「動画」形式

プレイ模様を映像として記録したデータ形式。
人間の目で見たゲーム画面そのままのプレイ記録を動画として残せる。

○ファイルサイズ
画質によるが1時間のプレイで数百MBになるため、全てのプレイ記録を残すには大量のデータ領域が必要。
通常は動画サイト上にそのまま保存し公開する。

○利点
閲覧者は特別なツールを導入せずに、動画サイトを開くだけでプレイ模様を再生できる。
プレイ模様を手軽に見せることができる普及媒体で活用されているデータ形式として動画形式が適している。
実況音声を付けたり、その他の音や視覚情報を組み込むことで、ゲーム画面以外の要素を同時に映して動画化できる。

○欠点
動画形式をプレイ記録の元データとして採用した場合には、動画サイトの閉鎖やそれに伴う動画の移転をする場合に多大な手間が必要になる。
大手動画サイトが今後数百年後も残っている保証は無く、後世にプレイ記録を伝えるための元データの保存媒体としては動画サイトは適さない。
動画投稿者が管理放棄や移転拒否をする場合は、無断転載になるため動画の移転すらも危うくなる。
ローカル環境に蓄積するには動画形式はファイルサイズが大きすぎる。
そもそも大量の動画の移転作業が現実的ではない。

ライブ配信でプレイ記録を保存した場合に、何らかの理由により削除されることがあるが、
その削除に巻き込まれてプレイ記録が失われることがある。

○棋譜化
動画の画面解析をして棋譜を作成することは可能。
しかし、フィールドの確実な画面外認識ができないことと、画面エフェクトによる誤認識が発生することがあり、完全な棋譜の確実な作成が困難。

開発者の技術と努力によって、誤認識を極力防ぎ、画面外状態の推測による補完も行い、実用上問題ない程度の完成度での棋譜化は実現できる可能性はある。



=================================
●「リプレイデータ」形式

リプレイデータとは、対戦や1人用モードのプレイを完全再現するための操作記録データ。またはそのファイル形式。
このリプレイデータを再生機に読み込ませることで、フレーム単位の操作状態を読み込みプレイを完全再現できる。

○ファイルサイズ
圧縮形式によって数倍の差が出ることがある。
圧縮後のファイルサイズは1時間のプレイで 40~100KB程度と推測。
小さいファイルサイズでプレイの完全再現が可能なため、欠損のないプレイ記録の元データ形式として適している。

○利点
プレイを完全再現可能でなおかつファイルサイズも小さいため、
データ保全の難易度が下がり、後世にプレイ記録を残すデータ形式として適している。

○欠点
リプレイデータは再生機が無いとプレイを再現できない。
再生機となるゲーム本体は有料なため、リプレイデータを再生できる環境を持つ人が限られる。

○動画化
リプレイデータと再生機があれば動画化できる。
普段はリプレイデータとして蓄積し、動画が必要になったときに動画化する。

○完全な棋譜化
ぷよスポの機種に関わらずリプレイデータ形式に互換性があることが前提。
steam版にリプレイファイルを指定して再生する機能を追加し、ゲーム内のフィールド状態を解析し正確な画面外認識とエフェクトによる誤認識を回避し、完全な棋譜を確実に作成できる。

あるいは、リプレイデータとゲーム内部処理の仕様を完全把握しリプレイデータから直接棋譜を作る方法もある。
ただこれは仕様が公開されない限りは技術的にとても困難で選択肢にない。



=================================
●「棋譜」形式

プレイ記録を最小限のフィールド表現で再現するためのデータ形式。

○棋譜の利点
・データサイズが小さい。
・テキスト形式でも扱える。
・再利用性が高く、プレイ内容を解析するのに適しているため、その元データとして重宝する。

○棋譜の詳細レベル
・「指し手配置と盤面転移」のみ記述した形式。
・上記に加えて「指し手時間」を記述した形式。
・上記に加えて「簡易な操作情報」を記述した形式。

○解析結果の活用
プレイ内容の解析結果は様々な用途で活用できる。

・統計データの作成。
・定石データベース作成。
・連鎖テンプレ作成。
・AIの機械学習の学習元データ



=================================
●プレイ記録の2次利用許可

個別に多くの人から許可を貰うことは大変な労力である。
公益的な新たな価値の創出をするために、無断でプレイ記録の解析などに利用しても特に問題になることは無いという考え方もある。
しかし、個人的には権利関係の問題は極力避けたい考えがあり、そういった問題を起こさないためにも2次利用許可を事前に取りプレイ記録を集める手段としても今計画に繋がる。

プレイ記録の2次利用許可を取らないやり方を批判するわけではなくて、自分の考える最良手段としてまず今計画を試みたいというだけである。

今計画が頓挫した場合には、プレイ記録を活用をするときに動画からの解析や棋譜化が必須になる。
公益的な活動であることを大義名分にして、個別に許可を取ったり、
あるいは多くの人に許可を取るのが現実的でないなら、プレイ記録の棋譜化や解析のために無断利用するが問題があれば言ってください、というやり方を選ぶことになるかもしれない。



=================================
●リプレイデータの2次利用ガイドライン

恐らくこのようなものになるのではないかという予想。
リプレイデータは操作記録なのでプレイヤーの権利の割合は大きいように思うが、
セガ社とプレイヤーがどのようなバランスでリプレイデータの権利を持つべきかはわからない。

・リプレイデータの所有権は「セガ社」か「プレイヤー」、またはその両方。
・許可無く営利利用することを禁止。
・許可無く動画化をすることを禁止。
・棋譜化は可。
・研究練習学習を目的としたプレイ記録の解析は可。

セガ社が公開しているプレイ動画規約を基にアレンジしたものに上記のような項目が追加されると予想している。
イベントの動画化は、イベントの規約で参加者に対して動画化の同意を得ればいいので問題ない。
無差別に動画化する利用者が現れることを防ぐため無許可の動画化は禁止。
動画化は本人が利用することも想定しているので、対戦であれば片方の許可があればいい。
プレイ記録を個人で楽しむ範囲で利用することは可。
棋譜化や解析などに利用することさすがに許可前提にして欲しいので願望も入ってる。



=================================
●セガ社へ求める最低限の機能

=============
○リプレイデータの蓄積。
理想を言うなら、「レート戦」「気軽部屋」「オフライン対戦」「チャレンジモード」の全てのプレイモードのリプレイデータを蓄積してほしい。

初めから全てのリプレイ蓄積機能を実装するのは難しいかもしれないので、
まずは妥協点として、イベントで必要な気軽部屋2人対戦のリプレイデータ蓄積を最低限求めたい。
それが上手く実装できたら運用状況を見て徐々に蓄積できるモードを増やすことを求めていきたい。

=============
○出力するデータファイル。

・リプレイデータファイル。リプレイファイル。
・メタ情報テキストファイル。メタ情報ファイル。拡張子「.txt」。

======
・リプレイデータの公開ファイル形式
ゲーム内部でどのようにリプレイデータが扱われているか詳細がわからないので提案するのが難しい。
リプレイファイルのデータサイズは圧縮形式と圧縮設定により数倍差が出てくる場合がある。
今後、数百万数千万ファイルといった膨大な量のリプレイファイルを蓄積することを考えると、なるべく小さいデータサイズのほうがいい。

理想は、非圧縮の生リプレイデータファイルを7zip形式の最高圧縮設定で圧縮し、7zファイルで提供する。
妥協するなら、非圧縮の生リプレイデータファイルをzip形式の最高圧縮設定で圧縮し、zipファイルで提供する。
あるいは、すでにリプレイデータの圧縮仕様も決まっていて変更しづらい場合は妥協してそのままのファイルを提供するのでも構わない。

非圧縮の生リプレイデータファイルを圧縮書庫ファイルから展開できれば、
それをユーザー側で高圧縮形式で再圧縮して蓄積する方法が取れるので、できれば非圧縮の生リプレイデータファイルを得られる形がいい。

圧縮形式の問題は後で変更することも可能なので初めから最善を求めなくていい。

======
・メタ情報テキストファイル形式

メタ情報テキストファイルの中身のパラメータ例。
[key = value]
file = リプレイファイル名。
size_real = 生リプレイファイルサイズ。
size_arc = 圧縮書庫リプレイファイルサイズ。
date = リプレイファイル出力時刻。プレイ終了時刻。
md5 = リプレイファイルのMD5ハッシュ。
time = プレイ再生時間。
mode = プレイモードの種別。「room/rate/offline/challenge」
name_p1 = プレイヤー1側のプレイヤー名。
name_p2 = プレイヤー2側のプレイヤー名。
rate_p1 = プレイヤー1のレート。
rate_p2 = プレイヤー2のレート。
conf_set = 設定。セット数。
conf_win = 設定。本数。

4人対戦ならp3とp4の項目も追加する。
設定項目を網羅して記載すすなら 「conf_設定名」のようなkey名を使う。

リプレイデータを解析して取得できる情報は省いても完全性を保てるが、対戦結果情報やプレイ設定情報も網羅されているほうが便利。
プレイ設定はリプレイデータに含まれているがリプレイファイルのバイナリ解析やゲームのメモリ解析をしないと設定値を取得できない。
メタ情報の項目が増えすぎるとセガ社側の手間が増えそうなので初めから全ては求めない。

リプレイファイル出力時刻の項目は、ファイル名の日時情報と重複しているので無くてもいい。
プレイ開始時刻の項目は、出力時刻とプレイ時間を逆算できるので無くていい。
メタ情報ファイルの中身はiniファイルでよく使われるような、1行ごとに「key=value」を記したような簡易なものでいい。

この2種のファイル名は、「ゲーム名」「機種名」「モード種類」「リプレイ出力時刻」「ファイル名被り防ぐ連番」の要素で構成されている。
リプレイファイルは「ppes_switch_room_YYYYMMDD_hhmmss_0.zip」
メタ情報ファイルは「ppes_switch_room_YYYYMMDD_hhmmss_0.txt」
拡張子を含めたファイル名はユニークな方が今後データを蓄積管理をするときにも間違いが少なくていい。

モード種類は例として、
・「レート戦 rate_ 」
・「気軽部屋 room_ 」
・「オフライン対戦 offl_ 」
・「チャレンジモード chal_ 」

=============
○「リプレイ蓄積公開許可」と「プレイ記録の2次利用許可」の設定

・「リプレイ蓄積公開許可」とは、2次配布サーバに蓄積し公開する許可のこと。
・「プレイ記録の2次利用許可」とは、研究練習学習へ活用するためのプレイ記録の2次利用許可のこと。

リプレイの蓄積と公開には多くのリソースを必要とする。
2次配布サーバやAPIサーバはユーザーによって非営利で運用されることになるので、そのリソースを利用する代わりに2次利用は許可してほしいという希望がある。
この「リプレイ蓄積公開許可」と「プレイ記録の2次利用許可」の2つの許可は1つの設定項目にまとめて,
「両方許可」か「両方不許可」のどちらかのみを選択できることを要望したい。

=============
○リプレイ蓄積に関する許可設定項目の追加。

既存のシステムにはログ上限50件のリプレイデータ保存機能が存在する。
この機能に変更は加えず残しつつ、新たにリプレイ蓄積公開機能を追加し共存するほうが、システムの変更点は少なくなる。
既存のリプレイ保存機能を無くすことはゲーム機能の劣化であり、使っている人が困るので廃止すべきではない。

・許可設定項目はマイデータの設定画面に追加する。
設定項目は保存される方が便利なためマイデータに設定項目を追加するのが適している。

・対戦が終わった後に「リプレイ蓄積公開ボタン」を表示したり、自動蓄積ON/OFFの設定項目を追加する。
この実装はUI変更が多くなるが親切。

・マイデータでリプレイ蓄積公開許可がON設定になっている場合、自動で蓄積可能な全てのリプレイの蓄積を実行する。
この実装はUI変更が少なくて済むが、蓄積したいプレイを個別に選べなくなる。
ただし蓄積漏れが減るので完全な蓄積に近づく。


=============
○リプレイ蓄積機能の実行タイミング。

「リプレイ蓄積公開許可設定」がOFFの場合は、リプレイ蓄積は行わない。

=====
「リプレイ蓄積公開許可設定」がONの場合は下記のようにする。

・自動蓄積設定の項目がある場合。
「自動蓄積設定」がOFFの場合は、プレイ終了メニューのリプレイ蓄積ボタンを押された時のみリプレイ蓄積が実行される。
「自動蓄積設定」がONの場合は、プレイが終えると自動でリプレイ蓄積が実行される。

・自動蓄積設定の項目が無い場合。
プレイが終わると自動でリプレイが蓄積される。

=============
○リプレイファイル1次配布サーバ

1次配布サーバはセガ社側が用意しセガ社側が運用する。
転送量削減のため不特定多数には公開せず、限られた2次配布サーバ運営者のみアクセスできるようにする。

データ公開方法は、サーバのディレクティブ設定でファイルリスト公開ONにしてファイルを直接ダウンロードするようなもので十分。
日付ごとにディレクトリを作りその中にリプレイファイルとメタ情報ファイルを置く。


/
/ppes/switch/20200801/ppes_switch_room_20200801_210101_0.zip
/ppes/switch/20200801/ppes_switch_room_20200801_210101_0.txt
/ppes/ps4/20200801/ppes_ps4_room_20200801_220101_0.zip
/ppes/ps4/20200801/ppes_ps4_room_20200801_220101_0.txt
/ppes/steam/20200801/ppes_steam_room_20200801_230101_0.zip
/ppes/steam/20200801/ppes_steam_room_20200801_230101_0.txt

・リプレイデータ保持期間。
2次配布サーバ運営者がダウンロードする猶予期間としてデータ保持期間は10日。余裕があれば30日。最低でも5日は欲しい。
保持期間を過ぎた日付のディレクトリを自動削除する。
全てのデータは2次配布サーバ運営者が厳重にバックアップし保管する。


==========
○PC版のリプレイ再生ツール

PC版はsteam版のことを指す。
ぷよスポの機種に関わらずリプレイデータ形式に互換性があることが前提。
コマンドラインで1つのリプレイファイルを指定して再生する程度の機能で十分。

もしそのままのリプレイデータでは再生互換性に問題があるなら、steam版で再生可能にするための何らかの変換処理が必要になる。

・別の機能提供方法
steam版ではなくwindows版としてリプレイ再生機能のみを含んだ「ぷよスポ リプレイ再生ツール」を開発し公開するという方法もある。
むしろこちらの方がsteam版に手を加えずに別のプロジェクトファイルとして開発できるので、開発の手間が減る可能性がある。


=============
○リプレイ再生時に完全棋譜生成補助表示モード。

完全な棋譜を作成するためには、特に画面外13段目のフィールド状態の取得が重要になる。
ユーザーが再生中のプレイから画面外を含めた完全なフィールド状態する取得という方法を選択してもいいのならば今項目の機能は必要ない。

しかし様々な規律的な事情によりそれを選択できない場合は、なんらかの完全な棋譜生成の補助をする表示モードをセガ社から提供してほしい。

具体案としてはいくつかある。
・通常のゲーム画面から、エフェクト非表示、画面揺れOFF、お邪魔予告非表示、画面外の13段目フィールドを常に表示する、といったモードを用意し、棋譜生成に適したフィールド表示を行う。

・小さい別ウィンドウに、余計な表示が一切ないフィールド図を表示し、13段目までのフィールド状態を単純な色ブロックで表現しリアルタイムで表示更新する。


=============
「セガ社へ求める最低限の機能」の項目はここまで。



=================================
●リプレイファイル2次配布サーバ

2次配布サーバは単純なミラーリングサーバを想定している。
1次配布サーバからダウンロードコピーした「リプレイファイル」と「メタ情報ファイル」を蓄積させる。
後は有志を募り、メインの2次配布サーバからミラーリングサーバへコピーし負荷分散させる。

ディレクティブ設定を使いファイルリスト公開ON設定にしてディレクトリとファイルを配置し公開する。
ディレクトリ構成は「/タイトル/機種/YYYY/YYYYMM/YYYYMMDD/xxxxxxx.rep」のようにする。


/
/ppes/switch/2020/08/20200601/ppes_switch_room_20200601_210101_0.rep
/ppes/switch/2020/08/20200601/ppes_switch_room_20200601_210101_0.txt
/ppes/ps4/2020/08/20200601/ppes_ps4_room_20200601_220101_0.rep
/ppes/ps4/2020/08/20200601/ppes_ps4_room_20200601_220101_0.txt
/ppes/steam/2020/08/20200601/ppes_steam_room_20200601_230101_0.rep
/ppes/steam/2020/08/20200601/ppes_steam_room_20200601_230101_0.txt



=================================
●リプレイデータベースサービス

不特定多数がプレイ記録に関連する「リプレイファイル」「棋譜」「その他情報」のデータをAPIを使い条件指定で取得できる機能を持つサービス。
ユーザーが開発し運用する。

==========
○機能
・サイト上でプレイ記録情報の検索
・サイト上で棋譜再生
・プレイ記録の付加情報の入力
・APIでプレイ記録情報の取得

==========
○APIデータ形式
「XML」か「JSON」、あるいはその両方。

==========
○API機能
・日時、プレイヤー名、レート、連戦本数などの条件検索。
・リプレイデータのメタ情報取得
・対戦を1本単位で指定し棋譜取得
・その他の情報取得

==========
○リプレイデータのメタ情報
・開始日時
・終了日時
・リプレイ再生時間
・プレイヤー名
・プレイ開始時のプレイヤーのレート
・ソース元リプレイファイルURL
・ソース元リプレイファイルMD5ハッシュ
・ソース元リプレイファイルサイズ
・ソース元リプレイメタ情報ファイルURL
・動画化されている場合はその動画URL
・詳細レベルごとの棋譜ファイルURL。
・タグ付けによる付加情報。レート戦、気軽部屋、イベント名、何々モード等。

==========
○その他の情報取得

今回はリプレイと棋譜に関することを中心に扱っているが、プレイヤーの情報や解析データの蓄積して、このAPIサーバにまとめることも考える。



=================================
●活用例

今記事で示した「セガ社へ求める最低限の機能(リプレイ公開とリプレイ再生ツール)」が実現した場合に、どのように活用されるか。

・大会やイベント、対戦会などで試合が行われるとリプレイデータが全て蓄積され公開される。
・リプレイデータの動画化と棋譜化。
・リプレイデータやメタ情報から試合結果を取得する。
・戦績を蓄積しデータベースに反映させる。

このような一連の作業や処理を運営者やプレイヤーの手間をかけずに全試合に対して全自動化できる。
当然足らない自動化ツールは自前で開発する必要がある。

=================================
●観戦機能との関連

リプレイ公開と観戦機能は解決できる問題が違うので、観戦機能の有無に関係なくリプレイ蓄積公開機能が欲しい

観戦機能が解決する問題は、主要な試合の動画化を満たせるが、全ての試合の動画化まではできない。
ただし、主要な試合の動画化の需要を満たせるなら、動画化することにおいてはリプレイ蓄積公開機能は必要なくなるかもしれない。



=================================
●理想に近づけるためのさらなる改善案

上記で長々書いた計画を改めて見返したら改善点が出てきた。

そもそも公式ぷよsteam版のゲーム本体でリプレイデータを再生して、そこからプレイ記録の情報を取得するのは無駄が多すぎる。
プレイ記録取得のためのsteam版への機能付加も手間がかかるし、プレイ記録の情報取得に時間が掛かりすぎる。
そしてゲーム本体が無ければプレイ記録を取得できないので、steam版ゲーム本体の動作環境を数百年数千年後も残すことが現実的ではない。
じゃあどうするか。

まず、観戦機能が付いた場合は、主要な試合の動画化が実現でき、動画化の需要はほぼ満たせるので、そこから発想を広げる。
リプレイ蓄積公開計画の重要な目的は、操作記録データとしてのプレイ記録なので、動画化は必須ではない。
そこで仕様が公開された新たなリプレイデータ形式を考える。

仕様が公開されているリプレイデータ形式からはプレイ記録を再現するのに公式ぷよのゲーム本体が要らないため、
リプレイデータを直接、各々が作成したリプレイデータ再生ツールに読み込ませるだけでプレイを再現できる。
この新たなリプレイデータ形式をセガの公式ぷよに採用してもらうことで更に理想に近づけると考えている。

ユーザー開発者側で新たなリプレイデータ形式の仕様を考えて、ライブラリをオープンソースで公開して、それをセガに採用してもらって、そのリプレイデータ形式によって全てのリプレイデータを蓄積公開する。

このようなプレイ記録蓄積のさらなる改善案を構想しても、計画の実現性がどんどん無くなっていく気がするが、それは置いておく。



=================================
=================================
 
更新日時:2020/11/16 20:25
(作成日時:2020/06/14 20:29)
コメント( 0 )
コメントするにはログインが必要です
シェア