趣味がシステムフレームワークという、弓削田です。
プログラム言語のフレームワークを使うと、webサービス開発がすこぶるはかどるので、これを知らない開発員はほぼいないとは思いますが、
初心者プログラマーの人で知らない人もいるかもしれないので、少しばかり解説も踏まえてフレームワークの有意義さをお伝えします。
そして、開発をする仕事現場で嫌われがちなオレオレフレームワークについて、個人的に趣味と仕事の実益を兼ねて便利に思った点を自分視点で考えてみました。
知らない人の為に、フレームワークって何?
ここで言っている「フレームワーク」とは、いわゆる「webアプリケーション・フレームワーク」になります。
開発を効率的に行うように設計された、サポートツールです。
フレームワークを使う目的は、開発の工程を軽減化することにあり、基本的にweb開発をする際に色々な決まりごとや、言語名ならではの初期開発作業など、
どのサービスでも同じような作業が発生する事を想定して、事前に設定済みになっていたり、その作業を簡易に行えるような機能を設けているので、効率化ができるという事です。
また、同じ作業を何度も繰り返している中で、プログラムにつきものの不具合などが含まれている事が無いとも限らないですが、そうした作業を安定したプログラムで行えるというメリットもあります。
とにかく、効率を追求する人はフレームワークを使うという事なんですね。
どんなフレームワークがあるの?
たくさんあるweb言語では、どれもフレームワークが便利に容易されています。
PHP
- Laravel
- CakePHP
- Symfony
- CodeIgniter
- Zend
- Phalcon
- Slim
- Yii
- FuelPHP
- Flight
Javascript
- React
- Vue
- Angular
- Backbone
Python
- Django
- Flask
- Bottle
- Tornado
- web2Py
Ruby
- Ruby on Rails
- Sinatra
- Padrino
- cuba microframework
- Ramaze
- HANAMI
Java
- Spring
- Java EE(Java Platform, Enterprise Edition)
- Apache Struts
- Apache Wicket
- Play
- Spark
- JSF(JavaServer Faces)
- SAStruts (Super Agile Struts)
- Hibernate
- GWT(Google Web Toolkit)
- Grails
- DropWizard
Go
- Echo
- Revel
- Gin
- Beego
- Goji
- iris
Perl
- Mojolicios
- Dancer
- Catalyst
- Amon2
- TripletaiL
- Ark
オレオレフレームワークとは?
webサービスを開発する際に、どんなサービスでもだいたい同じ内容を行う工程がある。
例えば、「ログイン機能」については、アカウント登録、ユーザー認証(メール確認等)、ログイン認証処理、パスワード忘れ処理、などなど、
他にも、時間がかかる作業がたくさんあり、実際に作ってみると、類似作業で時間が取られる事などは、よく分かります。
こうした作業内容を、パッケージ化して、どのサービスでも、少しのカスタマイズをすれば(または全くの共通化すれば)ハンパない効率化できることは間違い有りません。
そうしたパッケージを独自のフレームワークとして使っているモノを「オレオレフレームワーク」と呼ばれ、それを作った人は便利に使えますが、
実際に仕事で使う場合に、他人は嫌がる1つの要因になっていて、ネガティブワードのように扱われることが多いようです。
オレオレフレームワークのダメポイント
まず、仕事でwebフレームワークを使うという選択肢は、間違いなく良いことだと思います。
でも、そこでプログラムが稚拙な状態でのオレオレフレームワークは自分以外は極めて効率が悪くなる事が多いようです。
よく言われる事として「学習コストが高く付く」とありますが、確かに作った人しかわからないフレームワークは、使う場合にマニュアルも無ければ、サンプルも用意されていないことがほとんどのため、
使いづらいという意見が出やすいでしょう。
そして、実際に、別のサービスで使おうとした時に、想定外の使いづらさに汎用的なはずのフレームワークが汎用的でないという事もしばしばあります。
これはオレオレのレベルが低い時にこうした自体になりがちなので、プログラミング能力の低い人がオレオレフレームワークを作るのはあまりオススメできません。
こうした人は是非、上記にリストアップしてあるwebフレームワークを導入して、自己で研究して見ることをオススメします。
どのフレームワークもちゃんと汎用性が考慮されていて、自分のプログラミングスキルの向上につながるでしょう。
それでもオレオレフレームワークを進めるワケ
よく使われているフレームワークを使う時も、「学習コスト」は発生します。
恒常的に使うような機能であれば、1度使えば問題なく習得できますが、ドキュメントを調べながらや、ネットでの調査を行いながらの学習は、効率的ではない場合もあるでしょう。
僕は、自分の会社を立ち上げた時に、こうした事を考慮して、機能を1つずつ汎用構成のプラグインにし、それを組み合わせてwebサービスを作るフレームワークを構築して、1つのwebサービスの開発を劇的に短くすることができました。
そして、仕事を受けて、無い機能に関しては、どんどん追加をして行くことで、その後の作業はどんどん楽になって行くというなんとも夢のようなフレームワーク構築に成功しました。
もちろん、2度、3度と、エンジン部分の作り直しはありましたが、以下では以下のような対応が即座にできるようになっています。
- ランディングページ制作
- 高速なカルーセル機能の簡易搭載
- ファイルのajaxアップロード機能
- ブログ機能
- 独自データベース仕様
...などなど、他にもこれまで作った20以上のサービス全てに適用できるように構築されていて、今ではモックアップ作成は3日ほどあれば、簡単に行うことが可能になっています。
逆にいうと、既存のフレームワークを使う方がかゆいところに手が届かない事が多く、もはや後戻りできない状態です。
これを言語を超えてphp+nodejs+独自のshellでのサーバーサード処理などを組み合わせることができるようにしておくと、世の中の殆どのwebサービスが作れてしまうことは簡単に想像できると思います。
仕事でWEB開発が遅いとお悩みの方がいましたら、是非オレオレフレームワークをオススメしたいと思います。
0 件のコメント:
コメントを投稿