Visualizer Top Development Theory (page1)
Feonix CCDのDeveloper's Packに収録されているVisualizer開発環境を使った開発法について、プログラム開発をする上で有用なエッセンシャルなセオリーを含めながらこの記事で説明したい。
Logical Oceanが原理、つまり実装のラインを組むということ、これが途切れたりズレなければエラーは出ない、組み上げるためにASIMOVを見切り、リファレンスを見てAPIを繋ぎ、プログラムを実行しながらバグ取りをする、ObjectiveにLightを書けば汎用的、ラインが折れ曲がって伸びているのが実装のアルゴリズムであり、特殊な折れ方をしているのがObjectiveな記法である
システムを視るためにData Link TableおよびBinary Link Tableを視る、プログラムのASIMOVを組む、Data Link TableでCrystal言語でtype-dのメディア構造を定義(このメディアはライブ反映)、Binary Link Tableのvoid method言語でメソッドを定義、パッチを繋ぐ、プログラムのASIMOVを組む、Chart Composer、ComposerおよびGHashおよびEdgeでパッチを編集、Playgroundで思考実行してInstance Viewでリソース管理及びDebuggerでデバッグ、eBooksの電子書籍とReferenceのAPIなどの開発情報による言語の習得、Binary Link Tableでのデザインパターンおよびアルゴリズム、Ksvnでビジュアル的にパッケージ管理、Testingでガイドライン評価、アルゴリズムからObjective記法がある、CrowdsのFDCでプロジェクト管理、FaceBookでメンバー管理、ガイドラインで使いやすくASIMOVに制限、リリース構成および署名、パッケージ化、ヒューマンインターフェイスガイドラインに制限して使いやすく設計する
プログラムをシステムに組み込んで開発するということは、システムツリーを構築するということに当たる、システムというものは枝分かれした先で一部枝先が接合し、また枝分かれするというツリー状のラインで表すことが可能だが、これはObjective Scriptiveの原理に依るものである、ツリーの一番下は起動ポイントであり、ドライバのラインはそれぞれのデバイスに繋がっている、システム全体でこのツリー全体が協調して動作することにより、システムの挙動が実現される
Visualizerにおいてはプログラムは構造体として構築するという発想で設計する。つまり手順を実行するという発想ではプログラムは作らない。これらは処理の流れとしてプログラムを視るのではなく、処理を行う機械のような構造体を構築するという非常にObjectiveな発想での開発思想といえる。
基本的にデータ構造体を定義しそのデータを変換して別のデータ構造体に流し込むメソッド変換器を定義する。これはhibrelation-fとして双方向にデータを同期する。トリガーに当たるものはデータ構造体およびデータ構造体のデータの変更であり、手順を実行するという発想でトリガーからイベントを起こすわけではないと思われる。
データ構造体は主にXMLで記述するのが普通だろうが、特殊な記法を用いることもあるかもしれない。普通はXMLでツリー構造を記述し、それを有機的な構造にまとめる手法になるだろう。データ構造体とメソッド変換器は継承を用いて別の原型のオブジェクトから派生して改造して作成することが可能であり、むしろこの継承する方法が推奨される。
データ構造体のデータはバインディングを用いライブ反映で反映され、リソースに負荷がかかりすぎるならflush Editorで反映の程度が制限される。Phoenix Desktopでは更新の頻度が高い場合はメモリ上でそのデータが扱われるため、ライブ反映でも基本的にストレージはシークしない。
モデルに当たるところはバックエンドはFirebirdやSQLであり、データ構造体として保持される。データ構造体にSpotlightを当ててInterface CreatorでGUIを自動生成するか、Interface DesignerでGUIを手動で設計する場合でも、これらのGUIに直結しているViewもデータ構造体としてのニュアンスを持つ。
GUI上のウィジェットのパラメータはユーザーの操作によって変動しても常にValidでなければならない。そうでない場合はライブ反映の性質が危険な挙動を示すだろう。反映させるために確定操作が必要な破壊的な操作の場合は適用ボタンを配置すればよいだろう。
古い言語で書かれたソースコードもアーキテクチャとしてhibrelation-fを適用すれば双方向化はおそらく可能である。(メソッドというものは情報工学的に逆向きにリバースして動作させる概念が原理的に適用できるからである。)ちなみにSTDDCやサービスを設計するなら既存の言語のプログラムではパラメータや標準入出力やファイルの読み込み、AppleScript/Eventなどのデータをやり取りするインターフェイスをこれらに割り当てればいいだろう。データ構造体を設計するならメソッドの引数と返り値をこれらに割り当てればいい。
宇宙のモジュールを作りたいなら仮想ファイルシステムの中で開発する、それと連係してlimiterの中でIDLEで空のアプリケーションを開発する、書き込みはプレイバックで確認
Data Link Table上でパッチからそれぞれのメソッドにラインを繋いで設計する、type-dのData Link TableでもViewもあったほうが良いように思うが、これもInterface Creatorで作成する
Data Link TableはInstance Viewと対応させて実行時の状況表示をする、これを使うとコードの問題箇所を特定しやすい
Instance Viewは履歴も表示できたほうが良い、全体の履歴や一部の履歴を切り替えて表示するか
Tcl/tk改めTcl/xultkはインタフェースを急造するのに有用、履歴機能があった方が良い、ファイル書き出しも有用、Visualizerを起動しなくても良い、内部コマンド方式を使う、ただInterface BuilderやInterface Creatorを利用できるからxultkはあまり有用ではないかも
XPCOMでインターフェイスを作ればシステムに対して破壊的でない空の開発が可能
Policy Layoutはウィジェットの構成や設計をガイドラインに合わせて制約することでユーザーにとってのアプリケーションを使いやすくする機能
Open QuicklyはCUI的なキーボード主体な機能もIDEやVisualizerに取り込むということ
イベントハンドラというかid・action、シグナルとスロットはコードと対応させるラインを表示する、インスタンスごとのスロットとか
テキスト的な開発とIDE的な開発とVisualizer的な開発ではやっている事自体は同じ、表示方法が違う
Automatorやシェルスクリプトはコマンドが完了するのを待って次のアクションに移るべき、こちらのほうが確実に使える
Plasmaは開発性が重要視される、コマンド的なCUIインターフェイス、空のインタフェースのVisualizer、依存のFramework、メディア処理系、シェルスクリプトで構成される、Plasmaは宇宙として理解して使うもの
ガベージコレクションを持っていない言語でもライブラリでそれらの機能を装備すればガベージコレクションを使うことは可能だろう
Chart ComposerやComposerやEdgeだけでなくGHashも使える
オブジェクトの相関関係を表したビヘイビアを登録しまくればGUIのレイアウトはスポットライトさえData Link Tableで割り当てれば自動で生成可能だろう
gitはKsvnのバックエンドか、Ksvnはビジュアル的にバージョンをツリーとして表示できる
Chart Composerも開発する、変数などは宣言に前後がある必要がないし前後があるとASIMOVなやり方でないので、チャートでオブジェクトの処理を書ける機能を作る、純粋に手順の処理系の部分は既出のComposerである、Binary Link Tableと連係してChart Composerの編集画面を展開する
コードの有用性と役割をユーザーから提示して、かつメソッドのインターフェイスを定義することに依って自動でグルーコードを書いて有用な部分のコードを組み合わせる機能を装備する
スポットライト理論はスポットライトの中にスポットライトが入ることもある、データベースからWebページを切り出したり、Data Link TableもCObjectをスポットライトで捉えて切り出す、GUIはテンプレートは選択するか自動割り当てか、データベースからレイアウトを設計する機能を開発する必要がある
基本的にスポットライト理論で当たったイベントハンドラとカスタムエリアからインターフェイスのウィジェットを自動生成する、GUIの設計は必要ない
Composerにはソースコードを埋め込むアクションも用意する、ComposerだけでなくGHashとEdgeも用意する
VisualizerではViewとXUL、Data Link TableとCairo Composerなど、Projectに必要なモジュールはシステムを表すチャートの中で表示部に寄せて強調表示
Playgroundは編集時にコミット必要、コミットされたプログラムの構造体がPlaygroundとして動作する、編集中のままで動作するわけではない、これは保存とは違う
ファイル形式は1Objectを書き込むだけなのでVisualizerでは非常に簡易に書き込み作成できる、Data Link Tableの1Objectをファイルとして書き込むだけ
リリース用のビルド構成というものも作れるようにする、デバッグ用とリリース用は別
基本的にそれぞれの利用形態に応じて画面を切り替える
スニペットパレットも装備、Edgeにテキストを貼り付けるのに役立つ
Instance Viewはアプリケーションバンドルのためにアプリケーション単位でも表示できるようにする
Visualizerで機能を開発する場合は簡易のテスト用のインタフェースがあっても良い、インタフェースを作らなくてもテストできる
VisualizerではコメントのスティッキーにRTFD及び画像を貼れる
Visualizerのインスタンスビューにはファイルリソースの監視機能も欲しい
Xcode Mini Mapって有用な機能だろうか?Xcode Mini Mapはソースコードのテキストエリアをサムネイルとして表す拡張機能、ソースコードの構成を把握するために役立つか、スクロールナビゲーションもできれば
VisualizerのEdgeではソースコードパネルの背景を暗色にするオプションを用意する、こちらのほうが目が疲れにくい
VisualizerのEdgeではソースコードパネルの並列スプリット表示もあり、ソースコードを比較できる
Edgeのメソッドの名前置き換え機能、メソッド名を特定して一括で修正した名前に置き換える
Fix-itを使えば間違って書かれているコードを優先すべき修正候補から修正できる
VisualizerのEdgeではソースコードパネルの横幅に合わせてグレーアウトの枠を表示する機能があっても良い、コードの一行分の長さを見分けやすくなる
マクロは体系化して装備した方がいい、これは自動化、SiriやテキストAIを備えればObs近くのナビゲーションレイヤーにもなる、これは自動化とは別のレイヤー
マクロの操作待ちを使えば間隙の操作はユーザーがこなせる、ここの操作をマクロとして開発してもよいが、これは手間がかかる、汎用的である処理はマクロにすると良い、Ruby/tkとか使えばもっと組みやすくもなるか
手順で書くと単純化できるのでリソースは軽くなる、Darwinのようなハイブリッドカーネルはその目的でモノリシックなアーキテクチャを一部採用している、手順をオブジェクト指向でラッピングするのも有用な手法、本来はオブジェクト指向で構造化して書くべき。手順でオブジェクト指向をラッピングするのはオブジェクト指向なバックエンドモジュールを組み込んで手順の開発者がプログラムを作る時だろう
マクロ機能も有効、type-dかつLight(Firebird)なオブジェクト指向込みの用途別パッケージマネージャに依ってインストールできるマクロ、マクロは組み合わせ可能