トップ » 技術記事 » オリジナル Wiki を作ってみよう!(1) - 既存 Wiki の紹介

オリジナル Wiki を作ってみよう!(1) - 既存 Wiki の紹介 はてなブックマーク数 このエントリーをブックマークに追加

どんな Wiki を作るのか?~アイデア

それでは、どんな Wiki を作るのか、アイデアをいろいろと考えていきます。それで、今回、私の目標は「完成させること」です。いきなり、理想が低いのですが、本連載のために、「内部の動作が分かりやすいもの」、「後からみんなが改造しやすいもの」を心がけたいと思います。

しかし、既に完成度の高い PukiWiki などのアプリケーションがある以上、同じものを作っても仕方がありません。どうせなら、これまでに無い機能を搭載して、みんなをびっくりさせたいものです。

みんなをびっくりさせるような「発明」をするためには、いくつかの法則が存在します。私はこの手の話が大好きなのですが、私が記憶している3つの法則を紹介しましょう。それは、以下のようなものです。

  1. 困っていることがあって、これを解決するために新しいものを作る
  2. 既にある製品同士をいくつか組み合わせることで新しいものを作る
  3. 何かしらの情報からインスピレーションを受けて新しいものを作る

一点目ですが、困っていることがあれば、それを何とか解決したいと思うのは当然のことですが、なかなか、誰でもそれを解決できるとは限りません。解決するだけの技術があるなら挑戦してみるのが大切でしょう。

次に、既にある製品を組み合わせて新しいものを作るのはよく行われる手法です。例えば、今では当然のようについている機能ですが、「携帯電話」と「腕時計」を組み合わせることで、スパイ映画に出てくるような通信機器を作ることができるでしょうか。また、「カバン」と「新聞紙」なら、通勤カバンに液晶モニタをつけて、ドキュメントビューワーにすれば、朝新聞を買い忘れても、ニュースをチェックできるようになるかも?!などなどのアイデアを捻り出すことができます。

そして、最後の点ですが、例えば、辞書をめくって適当に選んだ単語から何か面白いアイデアが連想できないかと考える手法です。ふとしたきっかけで、何でもないものから、次々といろいろなものが連想できるようになれば素晴らしいですね。私は、どうしようもなくアイデアに困ったときに、この手法を試しています。企画会議の前に面白いアイデアが出せないときや、原稿の締め切りが迫っているのに何も浮かばない時などに、試してみてはどうでしょうか。

今回は、この3つの法則のうち、1つ目の「困っていることがあって、これを解決するために新しいものを作る」を利用してみたいと思います。私は、普段から、PukiWiki を愛用しています。PukiWikiは、十分素晴らしいアプリケーションなのですが、やはり、使い続けていくと、要望も沸いてきます。そこで、PukiWiki にこんな機能があったら良いのに、という機能をつけていきたいと思います。

データベースへの対応

PukiWikiは、各ページのデータを1ページ1ファイルで管理しています。これはこれで分かりやすく、メンテナンスも楽なのですが、サイト内のページが増えすぎてしまうと、バックアップが面倒で動作も遅くなってしまいます。そこで、気軽に使える SQLite を使って、データベース対応の Wiki を作ってみたいと思います。

自動保存機能の対応

PukiWikiで原稿など長い文章を書いていて一番悲しいのは、キーを押し間違えたり、資料として開いたページでトラブルが起きてブラウザが閉じてしまった場合です。せめて5分前に戻ってくれたら良いのにと思うことがよくあります。gmail のように一定の時間ごと、自動的にデータを保存してくれるような機能に対応したいと思います。

ナビゲーション機能の充実

Wiki を使っていると、各ページごとに、個別のコンテンツが記述されるので、ページとページの間の関係が希薄になってしまいます。そのために、いちいち手動で別のページへのリンクを埋め込むことになります。ところが、この作業がなかなか面倒なのです。市販のHTMLエディタなどで書いていれば、エクスプローラーからファイルを一気にドラッグ&ドロップすることで、リンク一覧を作ることができるのですが、Wikiでこれを実現するのには、それなりの仕組みを作りこむ必要があります。

PukiWiki には、ディレクトリの概念があり、Wiki のページ名を「ディレクトリ名/ページ名」のようにしておくと、指定のディレクトリにあるページの一覧を列挙する機能があります。これは、とても便利な機能です。社内会議の議事録を付けておく場合に、「会議/2007年10月」や「会議/2007年11月」などと言う名前をつけておけば、これらの議事録の一覧をページ内に表示させることができるのです。なので、各ページにタグを設定しておいて、タグを指定してページ間のナビを作成するような機能を作って、ページ間のナビゲーションを実現したいと思います。

ファイルのアップロード

それから、PukiWikiでは、ページの中で使う画像や添付ファイルを1度に1つずつしかアップロードできないのですが、一度に複数の画像をアップロードできるフォームを作ったり、専用のアップローダーなどを作って、気軽にファイルをアップロードできる仕組みを作ってみたいと思います。あと、アップロードした画像を、本文に貼り付けるのが面倒なので、一覧から選んで貼り付けたり、画像を綺麗にリサイズしたりする機能をつけてみたいと思います。

テーマの機能

あと、ページや設定したタグによって、テーマを設定できるようになっていても面白そうです。コラムの話題などによって、テーマカラーやスキンを変更できると、かなり幅が広がります。

ログイン機能

そして、PukiWikiでは、ページを訪れるユーザーと、ページを編集するライターで、常に同じページが出ています。ライターにとっては使いやすいのですが、ページを訪れる人からしてみると、よく分からないメニューがたくさん出ていることになり、混乱してしまいます。そのため、ログインしている人と、そうでない人で表示されるメニューを変更できるようにしたいと思います。

ソースコードの貼り付け機能

さらに、一番不便に思っているのが、ソースコードの貼り付けです。PukiWikiでは、左端にスペースやタブを入れると、そこがソースコードと見なされて表示されるのですが、ソースコードをインデントするのが予想以上に面倒です。

できれば、{{ から }} まで囲うとソースコードとして認識されるようになると良いです。しかも、「{{//lang=Java」とかヒントを書いてあげると、Javaのソースコードとして、色分けできるといいですね。

その名前は?

最後に、これから作る Wiki に名前をつけましょう。ある意味、これが一番大切という要素なのです。もし、インパクトのある名前をつけることで話題を呼ぶこともできます。ものすごく面白い名前をつけようかとも思いましたが、ダジャレみたいなのでいいやと「KonaWiki(粉雪)」に決めました。粉雪のように、さらさらとプログラムが書けて、完成したらいいなぁという気持ちからです。

アイデアは所詮アイデアでしかない

・・・と、このように実現してみたいアイデアをいろいろ書いてみましたが、たぶん、全部実装できるのは、ずいぶん先になってしまうでしょう。アイデアは、所詮アイデアでしかなく、実装してはじめて役に立つものなのです。

しかし、何かモノを作る前には、いろいろ妄想してみることが大切なのです。こんな機能や、あんな機能があってと、実際に動いているところを想像してみると、より具体的に、どのように作るのが良いのかが道筋が見えてくることでしょう。

次回予告

今回は、どんなWikiを作るのかを、妄想してみました。今のところ、一応、ページを作って書き換えるところまで作ってあるので、実際に何か動くものをお見せしようと思ったのですが、紙面がつきてしまいました。次回は、PHP のテスト環境を構築し、Wiki を実際に動かしてみましょう。お楽しみに。

以下は、製作中の KonaWiki の画面

KonaWiki

KonaWiki

Series Navigation開発環境のセットアップ»

1 2

このサイトについて

八角研究所
株式会社八角研究所のWEBサイトですよー。 いろんなものを創り出すことのできる環境をコツコツ構築中。 いったい、いつになったらできるのか。 この技術情報サイトもそのための活動の一環のつもり。

執筆者紹介

クジラ飛行机

クジラ飛行机

くじらはんど(http://kujirahand/)にて、日本語プログラミング言語「なでしこ」(IPA未踏ユース採択)、テキスト音楽「サクラ」(OSPオンラインソフト大賞入賞)など多くのオンラインソフトを開発。著書に「Flexプロフェッショナルガイド」「なでしこ公式バイブル」、「一週間でマスターするActionScript3.0」など。

TrackBack URL :