thinkCMS - Webサイトのための、CMS機能を備えたWebサーバライブラリ
thinkCMSは、thinking-groupのホームページや、そのほか様々なサイトで利用することを目的とした、Webサーバライブラリである。amaniaによるPython実装の簡易CMS的Webサーバにインスパイアされている。
著名なWeb言語の一つであるDartで実装され、Cloudflare Workers環境及びDartSDK導入済サーバ環境(或いは実行可能ファイルの導入・実行可能サーバ環境)の両者をターゲットとしている。前者のターゲットにおいては、Wasmにコンパイルされ、JavaScriptによるブートコードから呼び出される。後者のターゲットにおいては、DartSDKによって直接に(或いはAOTコンパイル等を介して)実行される。
実装言語としてDartを採用した理由は次の通りである。
- 静的型付けであり、簡潔性(可読性)とエラー検出、実行効率を期待でき、堅牢なシステムを簡単に構築できる
- 高階関数など関数型のパラダイムを基本的な要素として採用しており、プログラムの読みやすさに寄与する
- 強力な代数的データ型(ADT)を採用しており、不正な状態を表現できないようにしやすく、またバグ混入のリスクを減らすことができる
- JavaScriptやWasmにコンパイルしてサーバサイド(Node.js)(やブラウザ)で実行できる
記事マークアップにはMarkdown、スタイルシートはTailwind又はSassを用いる。通常のMarkdownによる記事のほか、Marp仕様によるスライドもレンダリングすることが出来る。またMarkdownによる記事以外にも、生HTMLによる固定ページを置くことが出来る。
リスンIPアドレス、ホストドメイン、サイト名、OGP関係など諸設定項目はドキュメントルートに配置されるYAMLファイルに記述される。
そのほか、ドキュメントルートにはarticlesディレクトリ、slidesディレクトリ、templatesディレクトリ、assetsディレクトリが置かれ、それぞれ記事(Markdown)群、スライド(Markdown)群、テンプレートHTML群が収められる。Sassを用いる場合は追加でstylesディレクトリが置かれ、スタイルシート群が収められる。