====== 開発基盤としての DokuWiki 活用のススメ ====== DokuWiki を使っていると、様々な可能性に気づきます。 Wiki 本来の機能を活用した、ドキュメント基盤としての活用法はもちろんのこと、ユーザー管理、アクセス制御、ファイル書庫などの機能を使って、アプリケーション基盤としても活用できます。以下に、私が構築して上手くいっているパターンや、今後取り組もうと思っているパターンを紹介します。 ===== パターン 1 : DokuWiki をフロントエンドとした Web アプリケーション 1 ===== もっとも簡単なのは、DokuWiki のページをフロントエンドとした Web アプリケーションで、この方法でいくつかの実稼働サイトを構築しています。 DokuWiki では html 埋め込み機能を使って、任意のフロントエンドフレームワークを利用できます。私は vue.js を好んで利用しています。 また、DokuWiki のナビゲーションバーやサイドバーを活用したメニューシステムを構築でき、対象となるページにアクセス制限をかけておけば、アクセス制御も簡単に実装できます。 データベースとの連携部分は独自で開発しなければなりませんが、シンプルな WebAPI バックエンドを自作し、認証機能付きのディスパッチャ、コントローラクラス、モデルクラスなどを実装しており、とても便利に使っています。自作なので自分のお気に入りのロガーやメール送信などのサービスも簡単に組み込めます。 WebAPI の認証部分も DokuWiki 内部の認証メソッドを呼び出すことで、簡単に実装可能です。 但し、この方法にはいくつか欠点もあり、大きくは以下の通りです。 - DokuWiki で使用しているテンプレートの CSS フレームワークに制限される - DokuWiki を使用してのページ編集では、シンタックスハイライト等を利用できない - ビルド等が必要な、最新のフロントエンドフレームワークを利用できない - Git によるコード管理が利用しづらい 例えば、DokuWiki が Bootstrap3 テンプレートを使っていれば、アプリケーションで Bootstrap4 を使いたいと思っても、CSS がバッティングしてしまいます。 DokuWiki 付属のエディタでは、html や JavaScript のシンタックスハイライトが利用できないため、複雑なページの構築には向きません。 フロントエンドフレームワークもページに埋め込みの JavaScript を利用することになるため、バンドラ等は利用できません。 また、ページの差分は DokuWiki が行う場合、DokuWiki 独自の差分管理用のファイルが生成され、これを更に Git 管理をしようとすると、差分の対象が肥大化していきます。 ===== パターン 2 : DokuWiki をフロントエンドとした Web アプリケーション 2 ===== 上記の欠点を補うために考えたのが、DokuWiki ページの iframe に外部ページで実装したアプリケーションを埋め込む方法です。 この方法であれば、DokuWiki で使用しているフロントエンド CSS フレームワークからアプリケーションが切り離され、自分の好きな CSS フレームワークを利用することができます。 また、別ディレクトリで完全に分離した html JavaScript ファイルを編集するので、好きなエディタでシンタックスハイライト付きで編集ができ、バンドラ等も利用でき、また、ソースの Git 管理もできます。 ただ、これでも作成するアプリケーションは DokuWiki のページ単位に独立したものになります。それはそれでバージョンアップ等の管理は容易なのですが、SPA としてレイアウトやメニューは構築できません。 ===== パターン 3 : DokuWiki を管理サイトとした Web アプリケーション ===== 最後のパターンは、アプリケーションを完全に独立したディレクトリで運用し、管理サイトとして DokuWiki を利用するパターンです。それ以外は パターン 2 と全く同様です。 ===== どのパターンを使うか ===== DokuWiki や Web アプリケーション開発の初心者は パターン 1 が良いと思います。 バックエンドの実装は外部に委託するとしても、DokuWiki さえあればワイヤーフレームとしてフロントエンドは実装できるため、画面イメージを伝えることができます。 バックエンドも開発できる方は、パターン 2 や 3 から始めれば、自分の好きなエディタで開発ができ、フロントエンド系のツールを自由に選択できます。