Aokashi Room

作った作品の紹介やレビュー、トラブルシューティングとか色々

Node.js(Express)で動くWikiを作ってました。

11月1日~7日の7日間は大学の休講日でした。この7日間を利用してWikiのシステムを作ってみました。

github.com

現在はページの閲覧と編集、ページの一覧表示が出来ます。ページは名前(ファイル名)と内容からなり、タイトルは内容の見出しで代わりに使う形になります。

f:id:aokashi:20171112003338p:plain

検索機能は見た目だけ出来ていますが、まだ完成していません。今後は、以下の機能を実装する予定ですが、自身のWebサイトのリニューアルもあるのですぐには難しいと思います。

  • 検索機能の実装
  • ページのバージョン管理
  • メニュー(サイドバー)の実装
  • markdownの書式にちゃんと対応できるようにする
    • 上の図では、リスト1, 2, 3 と2つ連続していますが、そのうち片方は 1., 2., 3. と出すつもりでした。

仕様

リポジトリ名の「express-test」は仮称です。今後変更する予定があります。

作成の経緯

こちらはWebサイトで記事が完成した後に移転する予定です。

Wikiのシステムを作りたい理由はいくつかあって、インターネットにあった様々なWikiのシステムには惜しいところがそれぞれありました。

  • Pukiwiki(現在自分のサイトの資料集で使用中): markdown記法に正式に対応していない
  • dokuwiki: 同上
  • gollum: タイトルが日本語だと取り扱いに難がある*2
  • crowi(まだ使った経験が無いです): チーム内でしか見ることが出来ない(はず)

また、GitHubWikiも使っていましたが、ページ名が最初からサイドバーに付いていることとリポジトリ1つ作らなくてはならない制約から、資料集のような形で使うつもりはありませんでした*3

つまり、 日本語がちゃんと扱えて、markdownも使えて、周りから見える、たくさんページを持つことに適したWikiシステム を求めていたのです。

自分で作ろうと思ってはいたものの、なかなか動き出せませんでした。後になって色々な事情で悪いことがあって自信を失ったことから、技術力を上げるためにWikiシステムを短期間で作成することにしました。

動作環境はWebブラウザで動くアプリケーションをメインに開発しているため、JavaScriptで使えるNode.jsを選びました。

1人単独の開発のため、意見を出し合う時間が無くマイペースで開発を進めることが出来ましたが、決めた目標の定義が曖昧で「これでいいか」と思って中途半端に切り上げたことや、実装の仕方に悩むこともありました。しかしながら、今後npmで新しいパッケージが出てきたときに、短時間で組み込んで確かめられる機会が出来ました。

現在はQiitaのような情報共有サービスが進んだことから、自身がWikiを設立して備忘録の代わりに使うケースは減りました。私の場合は世界観の資料を扱うこともあって、Wikipediaのような百科事典のサイトが適していることから、開発を続けていくつもりです。

最後に

もしかしたら、実装の仕方に誤りがあるかもしれません。GitHubでIssue投稿やPull Requestをお待ちしております。あと早いうちに名前を決めます。

*1:2台の実行環境があって、片方がHome、片方がProのエディションを持っています

*2:ただしあくまで自分からの経験によるものです。

*3:開発関連の資料をまとめるのであれば、GitHubWiki機能は大変便利だと思います。