Go言語でオレオレMVCフレームワークを作ろうと思う

f:id:nasust:20161226221511j:plain

こんにちはnasustです。
Go言語でオレオレMVCフレームワークを作ろうとと思います。

何故作るかはGo言語の習得とコンポーネント指向のMVCフレームワークが開発できるのかの検証です。

最近のフロントエンドではUIのコンポーネント指向のフレームワークを使用して開発しています。

自分もその影響を受けて、じゃあサーバーサイドのコンポーネント指向はどんなものだ? という思いが出て来ました。そういうモヤモヤがあって、コンポーネント指向のMVCのプロトタイプを作成してスッキリしたいと思っています。

この自分のモヤモヤですが他にも色々あって、その中の一つにオブジェクト指向は本当に開発しやすくなったのか疑問に思えることです。

開発の仕事を受ける場合で機能の追加を受託する場合があります。それで今時のプログラムですから、もちろんオブジェクト指向で開発されています。

それで僕は機能追加する為にソースコードを分析する訳ですが、大抵のソースコードは分かりにくいです。機能追加するのに理解するのが時間が掛かったりします。

まあ僕が、そのへんのモブな戦闘力のプログラマーぐらいという理由もありますが、大抵、現場で開発されるオレオレフレームワークが組み込んであって、それを理解しないと機能を適切に追加出来ない事が多いです。

そのオレオレフレームワークオブジェクト指向で書かれていますが、自分の知っている技術書で解説される様な綺麗なオブジェクト指向では無くて、その場急ぎで作った機能の共通化のオブジェクト指向で開発されていることが多いです。それのどこが悪いかというと、各クラスの依存度が高い為に機能の追加がし辛いことです。

何故、そうなるのかは仕方が無いことだと思います。良い抽象化は概念的に抽象化されており機能も分離されていて、クラスを入れ替えやすいものだと思っています。しかし開発の現場では、その良い抽象化する為の吟味して検証して思考実験もする時間が無いのです。だから分かりやすい機能の共通化としてオブジェクト指向で開発します。

そのような依存関係が強いクラスをアジャイルやテスト駆動などの手法を用いることで結果的に防ぐことがありますが、そういう事ができる現場って全部自社開発なんですよね。受託開発だと結構な確率でそういう開発手法は無いです。

そういう仕事を続けている内に綺麗なオブジェクト指向というのは開発において実践的じゃないかと思えて来ました。

それからGo言語と出会いました。Go言語はクラスという機能が無いです。でも勉強で色々コードを書いてみましたがオブジェクト指向でなくても余り困らない感じなんですよね。ということは現場の開発ではクラスというのは必要無いじゃないかと思えてきた事です。

それでGo言語でオレオレMVCフレームワーク開発することで、オブジェクト指向が必要無いことや、最近流行っているUIのコンポーネント指向をサーバー側で実践できるのか、そしてコンポーネント指向として実装の依存を完全に分離できるのかを検証したいと思いになりました。

とりあえずメモに箇条書程度に設計してみて何だか出来そうなんですよね。ある程度できたらGitHubで公開 思います。

広告を非表示にする