このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

Catyの目的とか方針とか:今日は前置きだけ

明日9月30日に、Caty最初のリリースをします。つっても、アーカイブをどっか(たぶんbitbucket)にコソッと置くだけですけど。

ソフトウェアがそれ自身について語れるといいのですが、今の段階では、Catyをインストールして実行してもらっても、「へっ? なにこれ」という反応になりそうです。僕(人間の檜山)がソフトウェアについて語らないと意図が伝わりそうにありません。[追記]いずれは、Caty自身がCatyについて語れる、つまり自己記述的にするつもりです。[/追記]

CatyはWebフレームワークです。実装は、開発用Webサーバーも含めてフルPythonです。が、プログラミング言語中立になるように注意しています -- Webサイト/Webアプリケーションの構築の際には、実装言語(Python)とは別なスクリプト言語スキーマ言語を使います。コマンド(と呼ばれるソフトウェアコンポネント)を書く人以外は実装言語を意識する必要はありません。

Catyは、現存する多くのWebフレームワークとは違った仕様や方式を採用しています。「なんでこんなことをするんだ?」「何を考えてんだ?」といぶかしく思うかもしれません。別に奇をてらったわけではありません。Catyは、その目的や想定している使い方が多くのWebフレームワークとは違うのです。異なった目的を持てば、異なったメカニズムになるのは不思議ではないでしょう。

で、その目的とは、Webサイト/Webアプリケーション/Webサービスを作る工程のなかでプログラマの出番を出来るだけ少なくすることです。ここでプログラマとは、通常の汎用プログラミング言語(今のCatyではPython)によるプログラムを書く人のことです。プログラミング作業をゼロには出来ないにしろ、その量を少なく、しかも限定的にしたいのです。

これ以上話を進める前に、誤解をまねかないように、「プログラマ」とか「Web制作者」という言葉を、Catyの説明の文脈ではどういう意味で使うのかを前置きすることにします。このエントリは「前置き」だけで終わって(力尽きて)しまいますが、引き続く説明のなかでもこの「前置き」の注意は適用されます。


プログラマ」、「Web制作者」という言葉は、職種や職能のことではありません。個人を分類するラベルでもありません。単に作業上の役割を指している言葉です。ですから、一人の人間が「プログラマ」であり「Web制作者」でもあってもいいのです。Pythonコードを書いているAさんは役割としてプログラマであり、同じAさんがHTMLファイルを作っているときは、役割としてWeb制作者なのです。

Catyでは、Catyスクリプト/Catyスキーマ言語/テンプレート言語といった人工言語を使いますが、これらのスクリプトスキーマ/テンプレートを書く役割は「プログラマ」と呼ばないことにします。汎用プログラミング言語でプログラムを書く役割が「プログラマ」です。それ以外の作業 -- HTML, CSS, JavaScriptなどによるコンテンツを作ったり、サイトの階層構造、ページ遷移/ナビゲーション、ユーザビリティなどを考える役割は、総称として「Web制作者」と呼びます。

ファイルやデータベースなどのストレージに関しては、Web制作者が論理的な要求をまとめ、プログラマが具体的な実現方法を考えるということになります。ストレージにアクセスするロジックは、Catyスクリプトやテンプレート言語で直接的には書けません。プログラマが汎用言語で書いたコマンド(と呼ばれるソフトウェアコンポネント)を経由してストレージにアクセスします。ただし、既に目的のコマンドがあれば、スクリプトからそのコマンドを呼ぶだけでストレージを操作できます。

さて、「Web制作者」という役割(くどいが、職種・職能、個人などを意味しない)に対して、次の知識・技量は仮定、あるいは期待するとします。

  1. ファイルとフォルダの概念を理解している。
  2. HTML文書を作れる。
  3. URLとHTTPのごく基本的なことを知っている。
  4. JSONデータを読み書きできる。

これらの前提は、「常識だ」とは言い切れないのかもしれませんが、これらに関する知識・技量を獲得するための資料・手段・機会は世の中に豊富に準備されていると思います。ですから、新たにお勉強するとしても「特別なお勉強」ではないでしょう。

今列挙した知識・技量だけでCatyが使える、とは言いませんが、これらに対する比較的自然な拡張(例えば、HTMLに対してテンプレート構文を加える)を学べばCatyは使えます。学習コストは小さいと考えます(実証はまだないです)。少なくとも、Model-View-Controllerだの、三層アーキテクチャだの、データベース設計だのという、難しげな概念を持ち出すことはありません。比較的小規模で、ビジネスロジックもさほど複雑でないWebアプリケーションに対して、そんな大げさなことを言う必要性なんてありません。ずっとずっと素朴な発想で十分です。

その素朴な発想については、リリース(アーカイブのセッティング)後に説明します。