ウェブサイトの作り方/動かし方を、ドキュメントとデータベースを中心にみていきますーーまた、知識をつなぐ現代の意味ネットワークについても考えます。[※1]
- ※1
- とくに既存のパッケージでは対応できないような、独自の簡潔なコンテンツ管理やウェブサービスを、オープンソースのルールとツールで実現する手法を考えていきます。
さまざまなデータベースの形式
- ◯
- しくみ
データ形式:ツリー構造:XML, JSON, YAML
データ形式:関係モデル:RDB
データ形式:関係モデル以外:NoSQL
データ操作:ツリー構造の検索 〜 関数型プログラミング言語:XPath, XSLT
データ操作:関係モデルの検索と更新:SQL
- ◯
- つくる
XML文書を作る/XSLTインタプリタを使う:xsltproc
データベースサーバ(関係モデル)を設定する:PostgreSQL, MySQL/MariaDB
データベースサーバ(関係モデル以外)を設定する:Redis, MongoDB
さまざまなプログラミング言語
- ◯
- しくみ
項書き換えとS式:Wolfram, Lisp (Scheme)
関数型プログラミング言語とイミュータブルな設計:Haskell
論理型プログラミング言語と制約プログラム:Prolog (SWI-Prolog)
手続型プログラミング言語と2系統のオブジェクト指向:Smalltalk (Squeak) , Objective-C, C++, Ruby
手続型プログラミング言語でビジュアルプログラミング:Scratch
- ◯
- つくる
システム管理を楽にする:sh, PowerShell, Perl, AWK
アプリケーションを作る:Java, C++
アプリケーションを作る(OSネイティブ):C#, Kotlin, Java, Swift, Objective-C
アプリケーションを作る(バックエンド系):Go, Rust
文書の管理
- ◯
- しくみ
中間文書を作る(なぜ独自のタグを作るのか 〜 名前をつけて中身は柔軟にコントロール)
手間を最小にするコンテンツ管理(シングルソース・マルチユース)
単独のサイトから各種メディア連携へ(アーンドメディア、オウンドメディア)
文書のリンクから知識のリンクへ(ハイパーリンク、セマンティックウェブ)
文書の処理
- ◯
- しくみ
文書処理とパイプライン
フィルタとデバイス
- ◯
- つくる
シェルのパイプライン:sh, PowerShell
その他のパイプライン:Haskell, Ruby, JavaScript
静的なコンテンツ生成:中間文書を作る
- ◯
- しくみ
- ◯
- つくる
ひとつのツリーにまとめる(サイト/ブックの全テキストを1枚のファイルに):x:site, x:book
XSLとスイッチ変数(サイトの全スタイルを1枚のファイルに)
ページに分ける:x:page
アーティクルの分割と共有:x:note
ヘッダ/フッタの共有:x:head, x:foot
メニューの自動生成:メニュー、サイトマップ、パンくずリスト:x:menu
文書の細かい要素を、独自に定義する(段落、台詞、強調、表組、一覧、……)
内容がすこしだけ違う版のサイト群を生成する
多言語対応:x:lang
静的なコンテンツ生成:多メディア対応
- ◯
- つくる
メールの定型文を生成する:TEXT
スタイルシートを生成する(数値計算のあるテキスト):CSS
各種フレームワークのテンプレートを生成する:...
マークダウン文書を生成する:...
MSオフィス文書の一部を更新する:ワード/エクセル/パワーポイント:ODF
ページ単位の文書を生成する:XSL-FO, PDF
電子書籍を生成する:EPUB
図形や動画を生成する:SVG
機械学習(教師あり学習)のデータを生成する
静的なコンテンツ生成:知識を共有する
- ◯
- しくみ
文書情報と一般情報
データ形式:リソース記述(主語・述語・目的語):RDF
データ操作:リソース記述の検索:SPARQL
リソース記述と構造化データ:RDF, JSON-LD
記述論理と現代の意味ネットワーク=セマンティックウェブ:OWL
語彙の共有:Dublin Core, Schema.org
- ◯
- つくる
動的なコンテンツ生成:バックエンドとフロントエンド
- ◯
- しくみ
動的コンテンツのための8つの基本フィルタ/デバイス(インタラクティブなウェブ)
バックエンドのプログラミング言語:Ruby, Python
フロントエンドのプログラミング言語:JavaScript (TypeScript)
バックエンドとフロントエンドの連携:CGI, Ajax
- ◯
- つくる
バックエンドのウェブフレームワーク:Ruby (Rails) , Python (Flask, Django)
バックエンドとフロントエンドの統一:JavaScript (Node.js (Express, React))
インライン編集(見たまま編集/WYSIWYG )画面を作る:TinyMCE
各種SNSとの連携:Twitter, Facebook, Instagram
動的なコンテンツ生成:ウェブサービスのパーツを作る
- ◯
- しくみ
処理と表示を分ける(MVC、ビジネスロジック/プレゼンテーションロジック)
- ◯
- つくる
ユーザ認証
フォーム入力画面を作る
メールフォームを作る(メールとの連携)
ブログシステムを作る
掲示板を作る
スケジュール管理システムを作る
SNSを作る
コンテンツ管理の効率を上げる
- ◯
- しくみ
適切な権限付与
デザインポリシー適用の自動化 〜 画面デザインからフォルダ構成まで
CMSのCMS(管理システム全体のメタ情報の管理)
- ◯
- つくる
ワンクリックで生成する:AppleScript, VBScript
中間文書を複数のファイルに分ける(権限別/用途別):XSLT
変換ライブラリを抽象度に応じて階層化する:XSLT
ファイルのバージョンを管理する(ローカルのみ〜リポジトリの共有):Git
ウェブサイトの統合(各種フレームワーク、各種CMSの統合運用)