詳細と付録

データフォルダとファイル形式

目次

データフォルダ(Markdownの世界では「Vault」とも呼ばれます)は、TandemLoopがすべてのデータを保存するフォルダです。中身はすべてごく普通のテキストファイル(YAMLヘッダ付きのMarkdown)で、設定時に選んだ場所(デバイス上またはiCloud Drive)にあります。そのため、ほかのツールやAIエージェントはもちろん、どのテキストエディタからでも読むことができます。

フォルダ構成

{データフォルダ}/
  AGENTS.md                  ← AIエージェント向けの手順書
  _inbox/                    ← すばやく追加したタスク(GTDのインボックス)
  bereiche/                  ← エリア(エリアごとに1つのサブフォルダ)
    {エリア}/
      area_{slug}.md         ← エリアのメタデータ
      _projects/             ← エリアのプロジェクト
      _singles/              ← エリア直下の単独タスク
      _folders/              ← 任意のフォルダ
        {フォルダ}/
          fld_{slug}.md      ← フォルダのメタデータ
          _projects/
          _singles/
  _config/                   ← 設定(タグ、属性、テーマ、表示、言語)
    tags.yaml
    attributes/              ← カスタム属性(属性ごとに1ファイル)
      {キー}.yaml
    themes/                  ← テーマ(テーマごとに1ファイル)
      {キー}.yaml
    agent.yaml               ← AIエージェントの最後の実行(エージェントが書き込みます)
    language.yaml            ← データフォルダの言語
  _views/                    ← 保存したビュー(サブフォルダ内も可)
    vw_{slug}.yaml
  _proposals/                ← AIからの提案
    prop_{slug}.md
  _archive/                  ← アーカイブ済みの項目(手動で編集しない)
  _conflicts/                ← 保存されたiCloudの競合コピー
  _system/                   ← スキーマと生成された参照ドキュメント

名前が_で始まるディレクトリはシステムフォルダで、Appが管理します。

項目のIDとファイル名の接頭辞

各項目は、フロントマターのidフィールドにUUIDベースの固定のIDを持っています。ファイル名はIDとは関係なく、読みやすいスラッグになります。IDにスラッグを含むのは、ビュー、ビューフォルダ(vf_…)、提案だけです。古いファイルには、スラッグ形式のID(例:area_arbeit)が残っている場合があります。

項目 接頭辞 IDの例 ファイル名の例
タスク tsk_ tsk_f66f123ebac0402f… tsk_design-logo.md
プロジェクト prj_ prj_03ebb2b6286f4a9f… prj_website-relaunch.md
エリア area_ area_4f8e2d1c0b9a4e… area_work.md
フォルダ fld_ fld_a1b2c3d4e5f647… fld_clients.md
マイルストーン ms_ ms_9fd12a6f440a4c… ms_sprint-1.md
タグ tag_ tag_a1b2c3d4e5f647… (_config/tags.yaml内)
ビュー vw_ vw_signal-tasks vw_signal-tasks.yaml
提案 prop_ prop_clean-up-inbox prop_clean-up-inbox.md
属性 attr_ attr_3f2e9a0b4c5d… _config/attributes/client.yaml
テーマ thm_ thm_7c1d0e9f2a4b… _config/themes/aurora.yaml

データの取り決め

ファイル形式は、次の3つの原則に従っています。

寛容な読み込み:フィールドが欠けていたり、不明なステータス値が含まれていたり、以前のバージョンの古いファイルだったりしても、Appはファイルを読み込みます。そのため、手作業で編集した項目やAIエージェントが作成した項目が原因で、App全体が使えなくなることはありません。

安定した書き込み:ファイルを更新するとき、Appは既存のフィールドの順序と既存の情報を保ちます。外部のエディタで追加された不明なフィールドもそのまま残ります。あとから追加されたフィールド(リマインドのremind_atなど)は、フロントマターの末尾に追加されます。空のフィールドはnullとして記述されますが、remind_atやrepeat:など一部のフィールドは、設定されていないあいだは記述自体がありません。

機械で読める形式:プレーンテキストのMarkdownファイルなので、AIエージェントやほかのツールはデータフォルダを直接読み込めます。どの変更を直接行ってよいかは、AIエージェントとの共同作業の章で説明しています。

カスタム属性

カスタム属性(設定の属性)を使うと、タスク、プロジェクト、マイルストーンにフィールドを追加できます。各属性は_config/attributes/にある小さなYAMLファイルで、ファイル名が属性のキーになります。

key: client
name: 顧客
type: select
applies_to:
  - task
  - project
options:
  - ACME
  - Contoso
description: どの顧客向けの作業かを示します。

値は、各ファイルのフロントマターのattributes:の下に保存されます。

attributes:
  client: ACME
  budget: 12000
  acceptance: '2026-11-30'
  • 種類:text、number(数値)、date('YYYY-MM-DD')、boolean(はい/いいえ)、select(オプションのいずれか)、url(リンク)。
  • キーは小文字、数字、アンダースコアで構成し、statusやdue_dateなどの組み込みフィールドと同じ名前にはできません。キーはあとから変更できません。
  • 空のフィールドは保存されません。属性を削除しても値は消えず、ファイルに残ったまま、インスペクタに読み取り専用の行として表示されます。
  • ビューでは、属性をattributes.キーフィールドとして、フィルタ、並べ替え、グループ分けに使えます。

AIエージェントは属性を自分で作成できます:たとえば「プロジェクト用に予算の属性を作成して」と依頼すると、エージェントが_config/attributes/にファイルを書き込みます。Appはすぐにそれを認識し、新しいフィールドを表示します。

繰り返しタスク

繰り返しのルールは、タスクのフロントマターのrepeat:に保存されます。たとえば毎週月曜日の場合は次のとおりです。

repeat:
  unit: week
  days: [mon]

unitはday、weekday、week、month、yearのいずれかです。必要に応じて、every(間隔)、dayまたはnth + weekday(毎月のルール)、from: completion(完了日から)、終了条件としてuntilまたはcountを追加します。series、occurrence、nextのキーはAppが管理します。エージェント向けの完全なリファレンスは_system/docs/data-model.mdにあります。

テーマ

各テーマは_config/themes/にあるYAMLファイルで、拡張子を除いたファイル名がそのテーマのキーになります(aurora.yaml → aurora)。テーマには、標準と異なる色だけを記述します。

name: オーロラ
description: 暗い面に映える落ち着いたティール。
appearance: system        # system、light、dark のいずれか
font_design: rounded      # default、rounded、serif、monospaced のいずれか
colors:
  primary:
    light: "#0F766E"
    dark: "#2DD4BF"
  danger: "#E5484D"       # 1つの値でライトとダークの両方に適用

色は引用符で囲んだ16進数の値で記述し、不透明度を含める場合は#RRGGBBAAとします。どの色のキーがあり、どれがほかの色から導き出され、どの標準値が使われるかは_system/docs/themes.mdに記載されています。このリファレンスはTandemLoopが自動的に管理しているため、AIエージェントはそれに沿ってテーマをデザインできます。どのテーマを有効にするかはデバイスごとに保存され、テーマファイル自体はデータフォルダと一緒に同期されます。

関連ブロック

インボックスのタスクを除くすべてのタスク、プロジェクト、マイルストーン、フォルダのファイルには、本文の末尾に機械で読める短いセクションがあり、親へのリンクが相対Markdownリンクとして保存されています。次の例は、プロジェクト「Website Relaunch」内のタスクの場合です。

<!-- tandemloop:relations:start -->
[Area: Work](../../../area_work.md) · [Project: Website Relaunch](../prj_website-relaunch.md)
<!-- tandemloop:relations:end -->

このブロックはAppが自動的に最新の状態に保つため、手作業で編集する必要はありません。AIエージェントは、新しいファイルではこのブロックを省略し、移動するときには削除します。このブロックにより、Appのメモリ上のインデックスがなくても、ツールやエージェントが階層の関係をたどれます。

データフォルダの言語

TandemLoopが自らファイルに書き込む一部のテキスト(関連ブロックのラベル(Bereich: / Area: …)、タスクの履歴の見出し(## Du — 21.3.2026 / ## You — 2026-03-21)、提案のセクション(## Diskussion / ## Discussion)、AIエージェント向けの手順書(AGENTS.md、_system/docs/))は、データフォルダの言語に従います。言語は_config/language.yamlに記載されています。

language: en

新しく作成したデータフォルダは英語です。このファイルがないデータフォルダ(以前のバージョンのもの)はドイツ語のままです。データフォルダの言語はデバイスの言語に左右されないため、どのデバイスも同じ内容のファイルを書き込みます。読み込むときは、TandemLoopはどちらの言語も認識します。

データフォルダを直接編集する場合は慎重に:ファイルはどのテキストエディタでも開けます。その際は次の点に注意してください。IDは決して変更しないでください。日付の値は、Markdownファイルのフロントマターでは一重引用符で囲み('2026-03-14T09:30:00')、ビューと設定のファイル(_views/、_config/)では引用符なしで記述します。_archive/フォルダは手作業で編集しないでください。構成の変更(プロジェクトの移動、タグの名前の変更など)には、Appまたは提案のしくみを使ってください。そうしないと、内部のインデックスに不整合が生じることがあります。

複数のデバイス:iCloud Driveによる同期

TandemLoopには独自のサーバはなく、自らインターネットにデータを送信することもありません。データフォルダはごく普通のフォルダなので、iCloud Driveに置けば複数のデバイスで使えます。iCloudがMac、iPad、iPhoneの間でファイルを最新の状態に保ち、TandemLoopは各デバイスで同じフォルダを読み込み、足りないファイルは必要に応じてiCloudからダウンロードします。

設定 › データフォルダ › データフォルダを切り替え… › iCloud Drive内のディレクトリを選ぶ

2台のデバイスで同時に書き込まないでください:クラウドサービスはファイル単位で同期するため、データフォルダの内部構造を把握していません。データの編集はなるべく一度に1台のデバイスだけで行い、同期が完了してから次のデバイスを使ってください。そうしないと、一部のファイルで競合コピーが作成されることがあります。AIツールがクラウド上の同じデータフォルダに同時にアクセスする場合も同様です。

同期はバックアップの代わりにはなりません:クラウドの同期では、削除もすべてのデバイスに反映されます。確実なバックアップには、Time Machineやクラウドサービスのバージョン履歴などもあわせて使ってください。