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