11月1日~7日の7日間は大学の休講日でした。この7日間を利用してWikiのシステムを作ってみました。
現在はページの閲覧と編集、ページの一覧表示が出来ます。ページは名前(ファイル名)と内容からなり、タイトルは内容の見出しで代わりに使う形になります。
検索機能は見た目だけ出来ていますが、まだ完成していません。今後は、以下の機能を実装する予定ですが、自身のWebサイトのリニューアルもあるのですぐには難しいと思います。
- 検索機能の実装
- ページのバージョン管理
- メニュー(サイドバー)の実装
- markdownの書式にちゃんと対応できるようにする
- 上の図では、リスト1, 2, 3 と2つ連続していますが、そのうち片方は 1., 2., 3. と出すつもりでした。
仕様
- プログラミング言語: JavaScript(Node.js)
- アプリケーションフレームワーク: Express
- テンプレートエンジン: ejs
- 実行環境
リポジトリ名の「express-test」は仮称です。今後変更する予定があります。
作成の経緯
こちらはWebサイトで記事が完成した後に移転する予定です。
Wikiのシステムを作りたい理由はいくつかあって、インターネットにあった様々なWikiのシステムには惜しいところがそれぞれありました。
- Pukiwiki(現在自分のサイトの資料集で使用中): markdown記法に正式に対応していない
- dokuwiki: 同上
- gollum: タイトルが日本語だと取り扱いに難がある*2
- crowi(まだ使った経験が無いです): チーム内でしか見ることが出来ない(はず)
また、GitHubのWikiも使っていましたが、ページ名が最初からサイドバーに付いていることとリポジトリ1つ作らなくてはならない制約から、資料集のような形で使うつもりはありませんでした*3。
つまり、 日本語がちゃんと扱えて、markdownも使えて、周りから見える、たくさんページを持つことに適したWikiシステム を求めていたのです。
自分で作ろうと思ってはいたものの、なかなか動き出せませんでした。後になって色々な事情で悪いことがあって自信を失ったことから、技術力を上げるためにWikiシステムを短期間で作成することにしました。
動作環境はWebブラウザで動くアプリケーションをメインに開発しているため、JavaScriptで使えるNode.jsを選びました。
1人単独の開発のため、意見を出し合う時間が無くマイペースで開発を進めることが出来ましたが、決めた目標の定義が曖昧で「これでいいか」と思って中途半端に切り上げたことや、実装の仕方に悩むこともありました。しかしながら、今後npmで新しいパッケージが出てきたときに、短時間で組み込んで確かめられる機会が出来ました。
現在はQiitaのような情報共有サービスが進んだことから、自身がWikiを設立して備忘録の代わりに使うケースは減りました。私の場合は世界観の資料を扱うこともあって、Wikipediaのような百科事典のサイトが適していることから、開発を続けていくつもりです。
最後に
もしかしたら、実装の仕方に誤りがあるかもしれません。GitHubでIssue投稿やPull Requestをお待ちしております。あと早いうちに名前を決めます。