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」などからページを作成すると、その時点で実体のあるページが 下書きとして作られます。実体があるので、作成途中でも 添付ファイルをアップロードできます。
  • 下書きは 作成者本人にしか見えません。ページ一覧・検索・バックリンク からは他人の下書きが除外されます。リアルタイム共同編集の接続も作成者 以外は拒否されます。
  • 下書きでは 他の人と関わるための表示が出ません。いいね・ウォッチ・ ブックマーク・共有リンクのボタンとライブプレゼンスの行は表示されず、 コメント欄の代わりに下書きであることを知らせる案内と編集ボタンが 並びます。公開すると通常の表示に切り替わります。
  • 編集画面で 「保存」 すると、ページは下書きから 公開 (published) へ切り替わり、閲覧権限を持つ全員に見えるようになります。
  • この切り替えは 一方向 です。いったん公開したページを下書きへ戻す ことはできません。

同じパスへの競合

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

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

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

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

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

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

ページを編集する

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

保存すると、その時点の本文が新しいリビジョンとして残ります。 ページ本体は常に最新リビジョンを表示し、過去のリビジョンは リビジョンとロールバック からたどれます。

ページ画面のヘッダー

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

なお 狭い画面(768px 未満)では並び順が異なります。ライブプレゼンスは タイトルの上ではなく、統計チップの下に置かれる専用のカードとして 表示されます。詳しくは モバイルのライブプレゼンスカード を参照してください。

ライブプレゼンス行(タイトルの上・広い画面)

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

  • 対象は認証済みユーザーがドラフトでも古いリビジョンでもない通常のライブ ページを開いたときだけです。 未認証での閲覧・ドラフト・古いリビジョン 表示ではプレゼンスチャネルへの接続自体が行われません。条件を満たすと 自動で接続し、他の閲覧者のアバターが数秒以内に表示されます。誰かが 離脱するとアバターも消えます。
  • 編集中の人 には、アバターの隅に ✏️ バッジが付きます。これは その人がリアルタイム共同編集のエディタを開いて いることを示します。
  • アバターは最大 5 人まで並び、それを超えると [+N] に畳まれます。 [+N] をクリックすると閲覧者一覧のポップオーバーが開きます(自分には 「(あなた)」ラベルが付きます)。一覧は最大 20 人までで、それを超える 分は残り人数の表示にまとめられます。
  • 自分しかいないときは、この行の見た目上の内容が表示されません(行自体 はレイアウト用の高さを保ったまま残ります)。自分が見ていることはブラウザ のタブが示しているため、自分 1 人だけのアバターは出しません。
  • この行が出るのは 768px 以上の画面 です。狭い画面では下記の モバイルのライブプレゼンスカード に置き換わります。
  • プレゼンスのリアルタイム接続に失敗した場合は、見た目上の内容が静かに 隠れます。ページの他の部分(本文・メタ行・コメント)は通常どおり 動作します。

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

モバイルのライブプレゼンスカード

768px 未満の画面 では、ライブプレゼンスはタイトルの上ではなく、 統計チップのすぐ下に置かれる 専用のカード として表示されます。 モバイルでのヘッダーの並びは次のとおりです。

タイトル
作成者 / 更新時刻
[👍 N] [👁 N] [💬 N] [🔗 N]         ← 統計チップ
┌───────────────────────────────────────────┐
│ (A)(B)(C)+2   5 人が現在閲覧中     ● Live │   ← プレゼンスカード
└───────────────────────────────────────────┘
───────────────────────────────────────────    ← 区切り線
本文

カードには次の情報が入ります。

  • 重なりアバター(最大 3 人) と、あふれた分の +N。編集中の人には ✏️ バッジが付くのは広い画面と同じです。
  • 「5 人が現在閲覧中」のような人数表示。この人数には自分も含まれます。
  • 接続状態のインジケータ。接続していて閲覧者情報を受け取れている ときだけ緑のドットと Live を表示します。接続確立中・自動再接続中を 含む、それ以外のすべての状態では灰色のドットと「再接続中…」の中立 表示になります。色だけでなく文字でも区別できます。

カード全体が 1 つのタップ領域です。タップすると閲覧者一覧のシートが開き ます(現在の閲覧者一覧・「(あなた)」ラベル・編集中の表示。最大 20 人 まで、それを超える分は残り人数の表示にまとめられます — 広い画面の ポップオーバーと同じ一覧コンポーネントです)。

  • 自分しかいないときは、カードと区切り線ごと畳まれます。 誰かが参加 すると、そのぶんの余白も含めて滑らかに開きます。読んでいる位置が ずれないようにスクロール位置を補正するため、本文が急に飛ぶことは ありません(OS の「視差効果を減らす」設定が有効なときは、この アニメーションとスクロール補正を行わず即座に切り替わります)。
  • 一時的に接続が切れても、カードはすぐには消えません。 自動再接続を 試している間は中立表示のまま、直前の閲覧者を表示し続けます。再接続 できない状態が確定したときにだけカードが消えます。
  • ページを下へスクロールしてヘッダーが 60px のコンパクト表示に切り替わる と、カードの代わりに小さなトリガーが並びます。Live 状態のときは Live · N を表示し、それ以外の状態では中立表示(ドット + 人数)に なります。タップすると同じ閲覧者一覧のシートが開きます。

Note: Live は「この接続で閲覧者情報を受け取れている」ことを示す 表示です。閲覧者の増減が反映されるまでには数秒かかることがあります。

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

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

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

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

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

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

ページを Markdown で持ち出す

ページ右上の「」メニューから、本文を Markdown のまま取り出せます。

  • Markdown をコピー — 本文をクリップボードにコピーします。
  • Markdown でダウンロード — 本文を中身とする .md ファイルを保存します。

コピーの方は、目次 (TOC) の下のボタンからも同じことができます。目次が 出ている画面ではメニューを開かずに押せる、という違いだけで、コピーされる 内容は同じです。

取り出されるのは 本文そのまま です。frontmatter やページのメタデータは 付きません。添付ファイルは同梱されず、画像のパスも書き換えられません。

ダウンロード時のファイル名

ファイル名は パスの末尾のセグメント から作られます。ポータルページの 末尾スラッシュは無視されるため、/foo/bar/foo/bar/bar.md に なります。

日本語のページ名はそのまま残ります。ただしファイル名に使えない文字 (\ / : * ? " < > | と制御文字 U+0000U+001F)は - に置き換えられ、 先頭と末尾の空白およびドットは取り除かれます。多くのファイルシステムがファイル名を 255 バイトに制限しており、日本語は 1 文字あたり最大 3 バイトを使うため、 名前は 100 文字 で切り詰められます。

パスから使える名前が取れない場合(ルートページなど)は、ページ ID を もとにしたファイル名になります。

本文が空のページでは何も起きません。中身のないファイルを渡しても 受け取った側の役に立たないため、ダウンロードは開始されず通知も出ません。

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

ページの 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リンクを知っている人のみアクセスできる限定公開。ページの ID URL(/<ページID>)を開いた認証済みユーザーは、初回アクセス時に自動的にそのページの編集メンバーとして登録されます。
Just me4作成者のみがアクセスできます。

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

  • 公開範囲が Public 以外のページは、閲覧・編集・コメント・履歴参照の いずれの操作でも grant チェックが行われます。
  • Anyone with the link に設定したページの ID URL を、認証済みの ユーザーが初めて開くと、そのユーザーは自動的にそのページの編集メンバーに なります。以降は正規パス(/ページのパス)への直接アクセスを含め、 閲覧だけでなく編集・移動・削除・共有設定の変更まで行えます — 閲覧専用のアクセスを渡すものではありません。この登録を個別に取り消す 手段は無く、編集メンバーの誰かが共有設定(公開範囲)を再保存すると リンク経由で加わった全員がまとめて外れます。Anyone with the link のページを開くと、画面上部に「リンクを共有すると編集メンバーを招待 できます」という常設バナーが表示され、共有 URL とコピーボタンが 案内されます。
  • Just me のページに対して、アクセス権のない ユーザーがページ ID を直接指定してアクセスしても、ページの存在自体を 伏せるため「ページが見つかりません」として扱われます(権限の有無を 外部に漏らさない設計です)。
  • ポータルページ(末尾 /)は常に Public になります。

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

公開範囲の視覚シグナル

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

  • 画面ヘッダーのすぐ下に細い アクセントストリップ が表示されます。 Anyone with the link は濃い紫、Just me は濃いグレーです。 Public はストリップが出ません。
  • ページタイトルの隣に小さな 公開範囲チップ が並び、アイコンと ラベル — Anyone with the link は 🔗「リンクのみ」、Just me は 🔒「自分のみ」— を表示します。チップのボーダーと 文字色は同じアクセント色を引き継ぎます。

ストリップとチップは常に同じ色で表示されます。Public ページに視覚シグナルが 無いのは、チーム内で読めるのが標準的な状態だからです。

関連ページ

On this page