会議メモを担当者・期限・完了条件付きのアクションリストに変える
会議の要約だけで終わらせず、合意された作業と未決事項を分けます。合成の会議メモを、担当者、期限、成果物、完了の証拠を含むリストに変換し、同じ作業を支援する AI への依頼文も作成します。
シンプルなチーム向けファイル名規則を定義し、合成フォルダでテストして、何も名前変更や削除せずに確認レポートを作成します。チェッカーは構造エラー、無効な日付、未対応の拡張子を分けて扱います。
この翻訳はAIで作成しました。コード、単位、数値は原文と併せて確認してください。各言語のネイティブ話者による校閲は、まだ完了していません。 English
対象読者ファイルを共有またはアーカイブする前に、予測可能なファイル名と簡単な自動チェックを導入したいチーム向けのガイドです。
この例では YYYYMMDD_project_document_vNN.ext 形式を使用します。date は8桁で、実在する暦日でなければなりません。project と document には小文字の英字または数字を使用し、必要に応じて hyphen で区切ります。version は v の後に正確に2桁の数字を続けます。allowed extensions は pdf, docx, xlsx, csv, txt です。
YYYYMMDD_project_document_vNN.ext
Example:
20260920_alpha_test-plan_v01.pdf以下の filenames は合成データであり、この記事のために作成したものです。セットアップスクリプトを create_file_naming_demo.py として保存してください。空の files を8個作成し、4個は規則に従い、4個は意図的に違反します。
from pathlib import Path
SOURCE = Path("outputs") / "file_naming_demo"
FILENAMES = [
"20260920_alpha_test-plan_v01.pdf",
"20260920_alpha_results_v02.csv",
"20260921_beta_meeting-notes_v03.txt",
"20261001_beta_budget_v01.xlsx",
"2026-09-20_alpha_notes_v01.txt",
"20260920_Alpha_notes_v01.txt",
"20260920_alpha_notes_final.txt",
"20260230_beta_results_v01.csv",
]
SOURCE.parent.mkdir(parents=True, exist_ok=True)
SOURCE.mkdir() # Stop if the synthetic source already exists.
for filename in FILENAMES:
target = SOURCE / filename
with target.open("xb"):
pass
最初の4つの names は PASS になる想定です。5つ目は YYYYMMDD ではなく hyphenated date を使用しています。6つ目には uppercase project token が含まれます。7つ目は vNN の代わりに final を使用しています。8つ目は形自体は正しいですが、存在しない日付 2026-02-30 を含んでいます。
| Filename | 想定 status | 理由 |
|---|---|---|
| 20260920_alpha_test-plan_v01.pdf | PASS | 構造に一致し、date も有効 |
| 20260920_alpha_results_v02.csv | PASS | 構造に一致し、date も有効 |
| 20260921_beta_meeting-notes_v03.txt | PASS | 構造に一致し、date も有効 |
| 20261001_beta_budget_v01.xlsx | PASS | 構造に一致し、date も有効 |
| 2026-09-20_alpha_notes_v01.txt | FAIL | STRUCTURE_ERROR |
| 20260920_Alpha_notes_v01.txt | FAIL | STRUCTURE_ERROR |
| 20260920_alpha_notes_final.txt | FAIL | STRUCTURE_ERROR |
| 20260230_beta_results_v01.csv | FAIL | INVALID_DATE |
したがって想定合計は、checked files 8件、passes 4件、failures 4件です。3件は structural failures で、1件は filename の構造は有効ですが calendar date が無効です。
次のスクリプトを check_file_names.py として保存してください。filenames だけを読み取り、別の output folder に CSV report を書き込みます。source file の rename, move, edit, delete は行いません。
import csv
import re
from datetime import datetime
from pathlib import Path
SOURCE = Path("outputs") / "file_naming_demo"
OUTPUT_DIR = Path("outputs") / "file_naming_result"
REPORT = OUTPUT_DIR / "file_naming_report.csv"
ALLOWED_EXTENSIONS = {"pdf", "docx", "xlsx", "csv", "txt"}
NAME_PATTERN = re.compile(
r"^(?P<date>[0-9]{8})_"
r"(?P<project>[a-z0-9]+(?:-[a-z0-9]+)*)_"
r"(?P<document>[a-z0-9]+(?:-[a-z0-9]+)*)_"
r"(?P<version>v[0-9]{2})\."
r"(?P<extension>[a-z0-9]+)$"
)
def check_filename(filename: str) -> tuple[str, str]:
match = NAME_PATTERN.fullmatch(filename)
if match is None:
return "FAIL", "STRUCTURE_ERROR"
extension = match.group("extension")
if extension not in ALLOWED_EXTENSIONS:
return "FAIL", "UNSUPPORTED_EXTENSION"
try:
datetime.strptime(match.group("date"), "%Y%m%d")
except ValueError:
return "FAIL", "INVALID_DATE"
return "PASS", ""
def main() -> None:
if not SOURCE.is_dir():
raise FileNotFoundError(f"Source folder not found: {SOURCE}")
if OUTPUT_DIR.exists():
raise FileExistsError(f"Output folder already exists: {OUTPUT_DIR}")
files = sorted(path for path in SOURCE.iterdir() if path.is_file())
results = []
for path in files:
status, issue = check_filename(path.name)
results.append({
"filename": path.name,
"status": status,
"issue": issue,
})
OUTPUT_DIR.parent.mkdir(parents=True, exist_ok=True)
OUTPUT_DIR.mkdir()
with REPORT.open("x", encoding="utf-8", newline="") as stream:
writer = csv.DictWriter(
stream,
fieldnames=["filename", "status", "issue"],
)
writer.writeheader()
writer.writerows(results)
passed = sum(row["status"] == "PASS" for row in results)
failed = len(results) - passed
print(f"Files checked: {len(results)}.")
print(f"Passed: {passed}; failed: {failed}.")
print(f"Report: {REPORT.as_posix()}")
if __name__ == "__main__":
main()
python check_file_names.pyreport には source file ごとに1行が含まれるはずです。filenames は確認前にアルファベット順に sort されるため、output order は setup-script list ではなく sorted names に従います。
| 想定件数 | 値 |
|---|---|
| Files checked | 8 |
| PASS | 4 |
| FAIL | 4 |
| STRUCTURE_ERROR | 3 |
| INVALID_DATE | 1 |
以下の想定 console output は、合成 filenames と checker から手作業で導出したものです。実際に取得した execution log ではありません。
Files checked: 8.
Passed: 4; failed: 4.
Report: outputs/file_naming_result/file_naming_report.csv| 問題 | 確認すること |
|---|---|
| STRUCTURE_ERROR が多い | 書面化した team rule が、実際に使われている naming practice と一致しているか確認します。 |
| Uppercase または spaces が頻繁に現れる | 個別に files を修正するのではなく、一貫して禁止するか rule を見直すか決めます。 |
| 有効に見える date が失敗する | YYYYMMDD text が実在する calendar date を表しているか確認します。 |
| users が final や latest を使い続ける | 明示的な version numbers を使用し、file が approved または released になる条件は別に定義します。 |
| Renaming で references が壊れる | dependent systems と links を評価するまで rename を自動化しないでください。 |
filename convention は proper version control, document management, metadata の代わりにはなりません。v03 という file name だけでは、content が v02 より新しいこと、正しい person に承認されたこと、正しい project に関連付けられていることは証明できません。
この例では、1つの folder 直下の files だけを確認します。subfolders の recursive scan、複数 shared drives 間の uniqueness 強制、file contents の確認、project token が実在する project と対応しているかの検証は行いません。
team が convention を変更する場合は effective date を記録し、old files をそのまま認めるのか rename するのか決めます。実用的な rule は、覚えられる程度に安定し、自動チェックが有用な結果を出せる程度に厳格である必要があります。
2026-09-20 · 手作業で確認した例 · 対象: Python 3.12 · 標準ライブラリ: csv, datetime, pathlib, re · 未実行
説明と例は独自に作成しました。関連する動作や概念は、以下の公式資料で確認できます。