Pine Frameworkの開発体制

Pine Frameworkの発端

Pine Framework(旧Feijoa Framework)は2013年より現在まで、私一人で開発が行われています。

元々は独立時代に受託案件用の自社製品として開発を始めましたが、日本のIT業界の致命的な問題から実際にシステム開発を受託するには至りませんでした。

その問題というのは『ソースコードを成果物として納品する事』が慣例となってしまっている事です。

これは著作権を放棄する事を意味し、せっかく技術と知識を注ぎ込んで良い製品を作っても、その労力に比べて遥かに僅かな開発費が支払われるだけで全て奪い取られてしまう事になります。

ですから日本では技術力のあるIT企業が育たず、大手が請けた仕事について仕様どおりに当たり障りなく作るだけのゼネコン構造が当たり前になっています。もっと言えば、そこに人を派遣するだけの人売り人買いが横行する事態となっています。

私が独立時代に懇意にしていただいた中小零細の経営層の方々もそういうやり方以外の経営手段を模索する事すらせず、従業員を人工(にんく)作業のような客先常駐派遣に就かせる事で収益を上げている会社がほとんどでした。

現場の技術者の能力は一様に非常に低く、生産されるソースコードも劣悪で商品価値などほとんど無いため、作る傍から技術的負債となっていく物ばかりでした。

そういった事を改善したくて作り始めたFeijoa Prototype Frameworkでしたが、前述のように著作権上の問題から実業務では全く利用が出来ず非常に歯がゆい思いをしてきました。

現在のPine Framework

現在のPineは長い年月を経て、リファクタリングにリファクタリングを重ねており、完成度も非常に高くなってきています。

しかし、個人開発では至らない部分もまだまだあり、あまり重要ではない機能については後回しになっている面もあります。

本来はソースコードを公開しオープンソース・ソフトウェアとしたいところなのですが、独立時代に見た日本のIT業界の腐った体質を考えると、それを躊躇せざるを得ません。

具体的には、

  1. ゼネコン体質が昂じて人売り人買い稼業化し、人権の侵害が頻繁に行われている事
  2. 人買い側は技術についてほとんど勉強せず知識が薄弱であるにも関わらず、金を払う側である事を理由に尊大な態度をとりがちである事、本来発注側がすべき仕事について下請けに丸投げしか出来ない事
  3. 売られる側は職務に対する希望を失っていて、やはり全く勉強せず、技術・知識・能力が極めて低い事
  4. 技術を生業としているはずなのに、著作権で保護されている他人の成果物を平然と盗む者も少なくない事

等々が上げられます。とても先進国とは思えない状況です。

特に人材受け入れ側の人間の尊大さは異常で、もし仮にPine Frameworkのような高機能で便利なフレームワークをオープンソース化させてしまったら、どんどん図に乗るのが目に見えています。彼らに便利な利器を与えてもそれよって短縮される開発工数はExcelシートへのスクリーンキャプチャ貼りのような狂った作業に変わるだけでしょう。そうなれば、同業のエンジニア達が苦しむだけです。

また、下流層にいる技術者の能力の低さも筆舌に尽くしがたい物があります。まともな日本語すら満足に話せない、言われた事しか出来ない者も少なくない状況で、本来ITとは高度で広範な能力を必要とする業界であるはずなのに、素人と大して変わりない者が長時間労働の力技でなんとかしているのは先進国として恥ずかしさすら感じます。

これらは全て、日本のIT業界のゼネコン体質の弊害と断じて良いでしょう。

ですから、現在Pine Frameworkの核となっているコアコードは暗号化し、クローズドソースのプロダクトとして公開しています。

それでもコアコード以外のアプリケーションコードについては自由に改変いただけますので、Pine Frameworkの便利さを実感するには十分でしょう。

Pine Frameworkは振る舞いを制御する設定のほとんどがコアコードから切り離されて設計されているので、コアコードが暗号化されている事による不都合はそれほど多くないはずです。

例えばヴァリデーター『UME』のヴァリデーション定義はサイト毎に独立して適用される非暗号化ファイルUMESetting.php内でクロージャとして記述されているため、定義を変更する事も、振る舞いを追加する事も自由です。

Pine Frameworkではクラスの継承を有効に利用しており、

Baseクラス
    └ SiteCommonクラス
            └ CommandCommonクラス
                    └ 末端クラス

のような継承構造となっています。

Baseクラスについてはコアコードのため暗号化されていますが、SiteCommonクラスよりも下の派生クラスは暗号化されていないため、アプリケーションとしての振る舞いについてはこの派生クラスにソースコードを追加・変更する事で不自由なく開発が行えるでしょう。

Pine Frameworkのライセンス形態についてはまだ考慮中であり現段階では制約もありますが、いずれはソースコードを公開し、より多くの人達に開発に参加していただいて、より多くの人達が利益を生み出せるような妥協点を見つける事を目指して開発を続けていきます。