(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ'ω`) < Moinmoinのサブページの概念を理解する

(ヽ´ω`) < え?マクロの説明は?

ナビゲーションに関するマクロの説明をするうえで、サブページの概念を説明しておかないと意味不明なことになるので、急遽予定を変更してサブページの説明をいれることに。

(ヽ´ω`) < サブページとはなんぞや?

Moinmoinではページの階層化を実現するために、サブページという機能を提供している。

これはファイルシステムでいうところのディレクトリの概念と同じで、ある事柄に関連したページは、まとめて階層化しておいたほうがわかりやすいよね。ということ。

(ヽ´ω`) < 具体的にはどんなの?

例えばMoinmoinの公式Wikiを見ると、

Moinmoinのバグに関するページは http://moinmo.in/MoinMoinBugs 以下に、MoinMoinBugs/***とURLがサブディレクトリが区切られているように、ページが作成されている。

また、機能要望に関するページは http://moinmo.in/FeatureRequests 以下に、FeatureRequests/***というページが大量に作られている。

これらは、URLを見るとMoinMoinBugsFeatureRequestsの2つのサブディレクトリ内にページが作成されているように見え、ページの分類が階層的に行われている事が理解できる。

(ヽ´ω`) < どうやってサブページを作るの?

あるページ内で/から始まるリンクを作成すると、そのページを起点としたサブページが作成される。

また、/を途中に挟むリンクを作成した場合も、サブページが作成される。

(ヽ´ω`) < なるほど、ぜんぜんわからん

というわけで、今回もシナリオベースで考えてみる。

  • あるRPGゲームの攻略Wikiでの出来事
  • 装備品の一覧を作成したい
  • 装備品の情報は以下の通り階層化されている
装備品
  ├── 武器
  │      ├── ナイフ
  │      │     └── 果物ナイフ
  │      ├── 剣
  │      │     ├── クレイモア
  │      │     └── 日本刀
  │      └── 斧
  │             └── ウォーアックス
  └── 防具
          ├── 鎧
          │     ├── ビキニアーマー
          │     ├── プレートアーマー
          │     └── レザーアーマー
          ├── 兜
          │     ├── ゴーグル
          │     └── フルヘルム
          └── 盾
                 ├── タワーシールド
                 ├── バックラー
                 └── ラウンドシールド
  • 末端のアイテムは今後も増えていくことが予想されるため、ページ数が膨大になることは容易に想像できる。

(ヽ´ω`) < 実際にサブページを作成するには

この時、ページを以下のように作成すると、カテゴリを使わなくてもページ全体を階層化して管理ができる。(もちろんカテゴリも併用したほうが、検索の利便性は上がる)

まずは装備品一覧への入り口ページ

= 装備品の一覧 =
 * [[/武器]]
 * [[/防具]]

Moinmoinでは[[]]で囲った文字列は、その文字列を名前としたページヘのリンクとなるが、ページ名の頭に/が付いている。

このページへのリンクは、先に説明したとおり現在のページ(装備品一覧のページ)のサブページへのリンクとして作成される。

f:id:tsugi-hagi:20141021150922p:plain

このリンクをクリックしてみると、装備品/武器のサブページは未だ作成されていないので、新規作成画面が表示されるが

f:id:tsugi-hagi:20141021150934p:plain

この通り、ページのタイトル・見出し・URLがサブページの様式となる。(ファイルシステムでのディレクトリと同じような役割)

(ヽ´ω`) < 深く…

当然ながら、階層は深く進めることが可能なので、シナリオ通り武器の中でも更に種別を分ける事が可能。先ほど新規に作成した装備品/武器の内容を以下の通りに記述する。

= 武器の一覧 =
 * [[/ナイフ]]
 * [[/剣]]
 * [[/斧]]

f:id:tsugi-hagi:20141021150950p:plain

(ヽ´ω`) < 階層化とは無関係のページからのリンク

この調子で末端のクレイモアまで作成していく。

= 剣の一覧 =
 * [[/クレイモア]]
 * [[/日本刀]]
= クレイモアの説明 =
 * 攻撃力 xx
 * 重量 xx
 * 装備可能職業

この時、クレイモアへのリンクはhttp://hoge/装備品/武器/剣/クレイモアとなるので、階層とは関係のないWiki内のページからは

= XXX攻略Wiki=

=== リンク文字列そのまま ===
[[装備品/武器/剣/クレイモア]]

=== リンク文字を変える ==
[[装備品/武器/剣/クレイモア|クレイモアに関する情報]]

=== もちろんURLそのままでもOK ===
http://hoge.com/装備品/武器/剣/クレイモア

という記述でリンクが張れる。

f:id:tsugi-hagi:20141021151428p:plain

(ヽ´ω`) < URLと同じと思ったらわかりやすいね!と思ったらわかりにくい

ページの階層化はURLの階層化とほぼイコールなのだが、誤解しやすい点が一つ。

HTMLでリンク対象のURLとして/hogeなどとすると、絶対パス指定となる。
Moinmoinでは、上記の通り、/を頭にリンクを作成すると、現在のページからのサブページが作成される(相対パス的な挙動)ので間違えないように。

(ヽ´ω`) < ビキニアーマー

(ヽ´ω`) < 小学生の時にDQ3の女戦士を初めて見た時の衝撃