Crowi
使い方ガイド

ページの作成と編集

ページの URL 階層、作成、編集、移動、削除、公開範囲

Crowi のすべてのコンテンツは「ページ」です。ページは Markdown で書かれた 本文を持ち、その URL パスがそのまま階層構造 になります。フォルダのような 明示的なツリー構造はなく、/(スラッシュ)区切りのパスだけでページ同士の 親子関係が表現されます。

URL がそのまま階層になる

Crowi のページにはディレクトリという概念がありません。代わりに、ページの path に含まれる / が階層の区切りとして扱われます。

パス意味
/トップページ(ルートのポータル)
/dev「dev」ページ
/dev/setup「dev」配下の「setup」ページ
/dev/setup/macosさらにその配下のページ

/dev のような中間パスは、ページとして存在していなくても構いません。 /dev/setup/macos だけを作成しても、/dev 配下のページ一覧画面では /dev/setup/macos が子ページとして表示されます。

ポータルページ

末尾が / で終わるパス(例: /dev/)は ポータルページ と呼ばれる 特別なページです。

  • ポータルページは、そのパス配下のページ一覧と一緒に表示されます。 「ディレクトリのトップに置く案内ページ」として使えます。
  • ポータルページの公開範囲は常に Public に強制されます。配下の ページ一覧を見せる性質上、限定公開にはできません。

子ページはあるが ポータル本文 (ポータルドキュメント) が存在しない パスを開いた場合、ページ一覧の見出しはフォルダアイコンと末尾の / を伴って表示されます (例: 📁 awards /)。パンくず (Breadcrumb) で パス全体が示されるため、サブタイトルでパスを重複表示することは ありません。ポータル本文が存在する場合は、その本文が「Portal page」 カードに収められ、通常のページ操作付きで子ページ一覧の上に表示 されます。

Tip: チームやプロジェクトごとに /team-a/ のようなポータルページを 1 枚用意しておくと、新メンバーがそこを起点に関連ページをたどれます。

通常ページをポータルにする(ポータル化)

すでに /some-page(末尾スラッシュなし)に書いてしまったページを、その フォルダのポータルにしたいことがあります。ページ右上の「⋮」メニューから 「ポータルにする」 を選ぶと、確認のうえで /some-page/some-page/ へ移動し、ポータルとして表示されるようになります。

  • 子ページ(/some-page/...)はすでに正しい位置にあるため移動しません。
  • ポータル化では元の URL にリダイレクトを残しません。 /some-page は 空きパスになります(後述の「スラッシュ有無の二重作成」ガードにより、 そこへ別ページが作られて二重状態に戻ることはありません)。

また、/some-page(コンテンツ)が存在する状態で /some-page/ を開くと、 「Create Portal」ボタンの代わりに 「このパスにはコンテンツがあります。 ポータルにしますか?」 という案内が表示され、ワンクリックで同じポータル化を 実行できます。実行後は同じ URL がそのままポータル表示に切り替わります。

スラッシュ有無の二重作成はできない

/x(通常ページ)と /x/(ポータル)は別物ですが、両方を併存させると 混乱の元になります。そのため、片方が存在するときに対になるもう片方を 新規作成することはできません

  • /x があるとき /x/ を、/x/ があるとき /x を、エディタの新規作成・ API での作成・リネームのいずれでも作れません(エラーになります)。
  • 代わりに上記の ポータル化(/x/x/)を使ってください。自分自身を ポータル化する移動は許可されています。
  • すでに存在する二重状態のデータはそのまま残ります(この制約は今後の 新規作成のみを対象とし、既存データを自動で整理することはありません)。

ページを作成する

空のページ一覧からも作成できます: 子ページが 0 件のフォルダや、 本文がまだないポータルを開いたときも、一覧に 「ページ作成」 ボタンが 表示されます(ゴミ箱・ルート・他ユーザーの領域では非表示)。押すと現在の パスがあらかじめ入力された作成画面が開きます。

新しいページは、存在しない URL にアクセスして作成するか、編集画面から パスを指定して作成します。本文を空のまま保存することもできます。

ページ名(パス)にはいくつかの予約・禁止ルールがあります。以下のような パスは作成できません。

  • /_ で始まるパス(/_edit /_search /_history /_notifications など システムが使う予約パス)
  • /admin /login /logout /register /me /trash /installer /files /comments などの予約語で始まるパス
  • ^ $ * + ? # を含むパス
  • .md で終わるパス、/edit で終わるパス
  • //(連続スラッシュ)を含むパス
  • http:// / https:// で始まるパス
  • /user/<ユーザー名>/bookmarks のようなユーザーページ配下の予約パス

これらは内部ルートやファイルとの衝突を避けるための制約です。通常の ドキュメント用パスであればまず問題になりません。

下書き (draft) ページ

Crowi 2.x では、新しく作り始めたページは 下書き (draft) という状態で 始まります。下書きは「まだ公開していない、作成途中のページ」です。

  • 「New page」などからページを作成すると、その時点で実体のあるページが 下書きとして作られます。下書きには本物の pageId が割り当たるため、 作成途中でも添付ファイルをアップロードできます。
  • 下書きは 作成者本人にしか見えません。ページ一覧・検索・バックリンク からは他人の下書きが除外されます。リアルタイム共同編集の接続も作成者 以外は拒否されます。
  • 編集画面で 「保存」 すると、ページは下書きから 公開 (published) へ切り替わり、閲覧権限を持つ全員に見えるようになります。
  • この切り替えは 一方向 です。いったん公開したページを下書きへ戻す ことはできません。

Note: Crowi 1.x には「編集を始めると非公開ページを暗黙生成する」 仕組みがありましたが、v2 ではこの下書き状態がその役割を担います。 詳しくは RFC-0004 を参照してください。

同じパスへの競合

ある人が /docs/api に下書きを作っている間、別の人が同じパスへ新しい ページを作ろうとすると、作成は拒否され「このページは ◯◯ さんが作成中 です」というメッセージが表示されます。

割り込みや強制的な引き取りの仕組みはありません。そのパスで作業したい 場合は、表示された作成者へ直接連絡して調整してください。元の作成者が 下書きをキャンセルするか公開すれば、競合は自然に解消されます。

Creating pages ビュー (/me/creating-pages)

自分が作成中の下書きは、Creating pages ビュー (/me/creating-pages) で一覧できます。各下書きには作成開始時刻と、次の操作が表示されます。

  • Edit — その下書きの編集画面へ移動し、続きを書けます。
  • Cancel — 下書きを削除します(確認ダイアログあり)。削除すると そのパスが解放され、他の人がそのパスでページを作れるようになります。

下書きは自動削除されません。明示的に公開するかキャンセルするまで残り 続けるため、作りかけのページを失う心配はありません。逆に、不要な 下書きはこのビューから整理してください。

ページを編集する

ページの編集は /_edit?page_id=<ページID> の編集画面で行います。 Crowi 2.0 からこの編集画面は リアルタイム共同編集 に対応しており、 複数ユーザーが同時に同じページを編集できます。詳しくは リアルタイム共同編集 を参照してください。

保存すると、その時点の本文が新しい Revision(履歴)として永続化されます。 ページ本体は常に最新リビジョンを指し、過去のリビジョンは 履歴とロールバック からたどれます。

ページ画面のヘッダー

Crowi 2.0 から、ページ閲覧画面のヘッダーが再構成されました。タイトルの 上下に 2 つの行が並び、「いま誰がこのページにいるか」と「これまで誰が このページに関わったか」を視覚的に分離して表示します。

ライブプレゼンス行(タイトルの上)

ページタイトルのすぐ上に、いまこのページを開いて見ている人 のアバターが リアルタイムで並びます。

  • ページを開くと自動でプレゼンスチャネルに接続し、他の閲覧者のアバターが 数秒以内に表示されます。誰かが離脱するとアバターも消えます。
  • 編集中の人 には、アバターの隅に ✏️ バッジが付きます。これは その人がリアルタイム共同編集のエディタを開いて いることを示します。
  • アバターは最大 5 人まで並び、それを超えると [+N] に畳まれます。 [+N] をクリックすると、現在の全閲覧者を一覧するポップオーバーが 開きます(自分には「(あなた)」ラベルが付きます)。
  • 自分しかいないときは、この行ごと表示されません。 自分が見ていることは ブラウザのタブが示しているため、自分 1 人だけのアバターは出しません。
  • 狭い画面(モバイルなど)では、この行は [👁 N] のチップに畳まれ、 タップするとシートで閲覧者一覧が開きます。
  • プレゼンスのリアルタイム接続に失敗した場合は、この行は静かに隠れます。 ページの他の部分(本文・メタ行・コメント)は通常どおり動作します。

Note: ライブプレゼンスは「いま見ている人」のシグナルです。過去に 閲覧した人の一覧は、下のメタ行の「閲覧」チップから確認できます。

メタチップ行(タイトルの下)

タイトルの下のメタ行は、作成者・更新時刻といった静的な情報と、 4 種類の クリックできるチップ で構成されます。

[作成者アバター] 作成者名  ·  ⏱ 5分前に更新  ·  [👍 1] いいね  ·  [👁 2] 閲覧  ·  [💬 2] コメント  ·  [🔗 3] バックリンク

各チップは [アイコン][数][ラベル] の統一されたピル形式で、クリックすると それぞれ次の動作をします。

チップクリックすると内容
いいね「いいねした人」モーダルが開くこのページにいいねしたユーザーの一覧
閲覧「閲覧した人」モーダルが開くこのページをこれまでに開いたユーザーの一覧
コメントコメントセクションへスクロールページ下部のコメント欄へ移動
バックリンクバックリンク一覧へスクロールページフッターのバックリンク一覧へ移動
  • 数が 0 のチップ はグレーで表示され、クリックできません。ホバーすると 「まだいいねがありません」などのツールチップが出ます。チップが消えずに 残るため、行のレイアウトはページの状態によらず安定します。
  • いいねボタンを押すと、いいねチップの数はその場で更新されます。

Tip: コメント・バックリンクのチップは、長いページで該当セクションへ 素早く移動するためのショートカットです。スクロール後はその見出しに フォーカスが移るため、キーボード操作でもそのまま読み進められます。

v1.x の「閲覧者アバター行」はどこへ?

Crowi 1.x では、ページタイトルの下に「このページを閲覧した人」の アバターが重なって並ぶ行がありました。Crowi 2.0 ではこのアバター行は 廃止されました。

その役割は、メタチップ行の 「閲覧」チップ + モーダル に置き換わって います。閲覧チップをクリックすると、これまでにこのページを開いた ユーザーの一覧がモーダルで開きます。

この変更は意図的な整理です。タイトルの上に新設された ライブプレゼンス行 が「いま誰がいるか」の主シグナルになったため、「過去に誰が見たか」は コンパクトなチップに集約し、2 つのアバター列が紛らわしく並ぶのを 避けています。

設計の詳細は RFC-0005 を参照してください。

ページを移動する(リネーム)

ページの URL を変更する操作を「リネーム」と呼びます。リネームすると、 そのページに紐づくすべてのリビジョンのパスも一緒に書き換えられます。

リネーム時には以下の点に注意してください。

  • 移動先のパスが既存ページと衝突する場合、その既存ページが「リダイレクト 専用ページ」であれば自動で削除して上書きできます。それ以外のページが 存在する場合はリネームが拒否されます。
  • リダイレクトページの作成を選ぶと、元の古い URL に「新しい URL へ 転送する」だけのページが残ります。外部からの古いリンクが切れないように したいときに有効です。ただし移動先がポータルページ(末尾 /)の場合は、 リダイレクトページは作成されません。

Tip: 親パスをまとめて移動したいとき(例: /old-team/ 配下を /new-team/ 配下へ)は、サブツリー全体を一括リネームできます。 各ページの衝突チェックが事前に行われ、1 つでも衝突があれば全体が 中止されます。

ページを削除する

Crowi の削除には 2 段階あります。

  1. 論理削除(ゴミ箱へ移動): ページのステータスを「削除済み」に変更し、 パスを /trash/ 配下へ移動します。元のパスにはリダイレクトページが 残ります。論理削除されたページは ゴミ箱 から復元できます。
  2. 完全削除: ページ本体・リビジョン・コメント・添付ファイル・ ブックマーク・アクティビティをすべて物理的に削除します。復元は できません。

なお、/user/<ユーザー名> 形式のユーザーページ本体は削除できません (ユーザーに紐づく特別なページのため)。

公開範囲(grant)

各ページには公開範囲(grant)を設定できます。Crowi 2.x では次の 3 種類が 利用できます。

公開範囲内部値説明
Public1すべてのログインユーザーが閲覧・編集できます。デフォルト。
Anyone with the link2限定公開。明示的に許可されたユーザーのみアクセスできます。
Just me4作成者のみがアクセスできます。

Note: コードベース上には Specified users only(特定ユーザーのみ、 内部値 3)という公開範囲の定義も残っていますが、現行の UI では 選択肢として有効化されていません。実際に選べるのは Public / Anyone with the link / Just me の 3 種類です。

公開範囲は次のように扱われます。

  • 公開範囲が Public 以外のページは、閲覧・編集・コメント・履歴参照の いずれの操作でも grant チェックが行われます。
  • アクセス権のないユーザーがページ ID を直接指定してアクセスしても、 ページの存在自体を伏せるため「ページが見つかりません」として 扱われます(権限の有無を外部に漏らさない設計です)。
  • ポータルページ(末尾 /)は常に Public になります。

公開範囲はページ編集時に変更できます。Public から限定公開へ切り替えると、 操作したユーザーが許可ユーザーとして登録されます。

公開範囲の視覚シグナル

Public 以外の公開範囲が付いたページには、共有設定がひと目でわかる ように 2 つの視覚的なシグナルが添えられます。

  • 画面ヘッダーのすぐ下に、4px の細い アクセントストリップ が 表示されます。限定公開 (リンクを知っている人のみ) は濃い紫、 Just me / Specified は濃いクールグレーに着色されます。Public は ストリップが出ません。
  • ページタイトルの隣に小さな grant チップ が並び、アイコンと ラベル — Restricted は 🔗「Link only」、Owner / Specified は 🔒「Just me」/「Specified」— を表示します。チップのボーダーと 文字色は同じアクセント色を引き継ぎます。

両者は --page-grant-accent という同じトークンを参照しているため、 ストリップとチップの色が食い違うことはありません。Public ページに 意図的に視覚シグナルを付けていないのは、チーム内で読めるのが 標準的な状態であり、装飾を加える必要がないためです。

関連ページ

On this page