自社システムにおける 最適なフレームワーク 2012/06/15 条件 • 機能は「自己評価」、「勤務表」、「掲示板」、 「ログイン機能」を想定 • 使用するフレームワーク等は全て無料である が未来があるものを使用する • 作るにあたり最適なフレームワーク、ソフトを 提供する • 画面はHTML5で作成することが前提 • PC、スマートフォンに対応できるような構成を 考えること 2012/06の言語ランキング Position Jun 2012 Position Jun 2011 Programming Language Ratings Jun 2012 Delta Jun 2011 1 2 C 17.725% +1.45% A 2 1 Java 16.265% -2.32% A 3 3 C++ 9.358% -0.47% A 4 7 Objective-C 9.094% +4.66% A 5 4 C# 7.026% +0.18% A 6 6 (Visual) Basic 6.047% +1.32% A 7 5 PHP 5.287% -1.31% A 8 8 Python 3.848% -0.05% A 9 9 Perl 2.221% -0.09% A 10 12 Ruby 1.683% +0.20% A 【参考】http://www.tiobe.com/index.php/content/paperinfo/tpci/ Status 言語ランキングの考察 • C、C++はWeb系が少ないため除外 →CGIで使うことは可能だがいまさらという感じ • .NET系はツールが有償なので除外 →制限付で無料版ツールもあるけど • Objective-CはiPhoneアプリなので除外 • Web系で検討できそうな技術は「Java」、「PHP」、 「Perl」、「Python」、「Ruby」となる • Perlはソース解析が難解のため除外 →記述する人によりソースに個性が出すぎる Java対スクリプト言語の比較 • スクリプト言語は開発環境において変更後に即時動 作可能(コンパイル不要) →JavaでもTomcatなどではオートリロードを有効にすれ ば同様のことが可能 • PHP等は変数定義が不要(定義していない変数がいき なり使える。実行時の警告) →バグを生み出す原因。大規模では厳しい • スクリプト言語のスピードが問題 →TwitterがRubyからJavaに変更後、スピード5倍 →JavaScript+スクリプト言語は遅い 【参考】http://www.publickey1.jp/blog/12/twitter51.html 言語の決定 • スクリプト言語をメインにするのは難しい • メインで使用する言語はJava言語 →JavaSE最新であるJDK7.0を使用する • ただし、BToBシステムではスクリプト言語が主流のた め、Javaのみで行くのはどうか? • Web全般はJavaとする • メイン以外の簡単な機能をPythonで作成 • JavaScriptは実行時にしかエラーがわからないためで きるだけ使わない →必要(AJAX等)に応じて使用するがJSゴリゴリにはしな い Pythonのメリット • Rubyより処理スピードが速い →ただし、Rubyのほうが案件は多い・・・。 • PHPは技術者が多い →PHP技術者はあふれている • PythonはGoogleが使用する三大言語のひとつで ある →Java、C++、Python • Python技術者がかなり少ない →競争相手が少ないためシェア獲得のチャンス MVCフレームワークの選定 • Struts1.X系はさすがに古い →既に使ったことある人がほとんど • Struts2.X系はActionSupportに依存しすぎである →依存を解消しようとするとStruts1.X系と同じよう な使い方となる →何より人気がないため使用するメリットが・・・ • そこで最近注目されている「Play Framework」を 使用する • 1系、2系がある Play Framework • フレームワークを使うメリットとしてソース量を減少させたい →RoR、codeigniter等と同じく設定より規約のため、設定ファイルを減らせる →エンティティのカプセル化を非推奨 • 開発環境の整備が容易 →開発環境にJavaEEサーバが不要(JavaEEの非依存) →Unit試験が容易(付属でUnit試験できるツールが付属) • 標準でいろいろなフレームワークが付属しているため、コスト(ローカル設 定)が容易 →ORM(JPA)、テンプレート 、AJAX、WebSocketなど標準で使用可能 • サンプルドキュメントが比較的そろっている(英語)が日本語情報が少な い(1系はそれなりにある) →まだ、日本では使用頻度が低く、シェアを獲得するチャンスである • 2系は最近(2012/04)リリースされたばかりであり技術者が少ない 【参考】 http://www.playframework.org/documentation/2.0.1/Home PlayFramework1系 or 2系 • テンプレートエンジンの差 →1系はGroovy、2系はScala(Groovyより高速) • 安定度 → 2系はバグが多く現状難しいという意見もある 【参考】 http://blog.flect.co.jp/labo/ • 2系のScalaテンプレートはView作成時に切り離しにくい →モックから画面作成へ工数が増加する可能性あり • リクエストマッピングが異なる →1系ではアクションの引数、2系ではscala経由でマッピング • PlayFramework1系を選定する →ただし、ScalaとViewを上手く切り離せるなら2系とする →付属サンプルはViewヘルパーを使っていてHTML原形が薄 画面側 • HTML5を使用することが前提 →入力チェックなどのフォーム技術を使用 • Groovyテンプレートを使用してデータ埋込 →Play Frameworkを利用 • 同じ画面を流用できる場合にはPC、スマートフォン切替を CSS3(Media Queries)で対応 →レスポンシブウェブデザイン(Googleが推奨) • JavaScriptはできるだけ使用しないようにする →パフォーマンス重視 • スマートフォン専用にはJQueryMobile1.1を使用 →スマートフォンGUIの開発が用意 →JQueryを使用していれば学習コスト低 モジュール構成 クライアント側 【View】 HTML5、CSS3 JQueryMobile Play Framework 【Controller】 【Model】 C-Mとの連携方法はSpring サーバ側 Webサーバ(HTTP)を検討 • HTTPサーバはApache、IIS、nginxが3大シェア • IISはWindowsサーバが必要なため除外 • Apache2とnginxの性能比較 →静的ページではnginxが圧倒的有利 →動的ページでは差がほとんどない(Apache2優勢) • nginxは動的ページを単独で動作できない → PHPを動作させたい場合はpfp-fpmが必要など • nginxを構築したことがある人が少ない → nginxのノウハウは会社としてプラス • HTTPサーバはnginx1.3.1とする APサーバの検討 • PlayFramework付属のAPサーバを使うべきか • 実案件として、付属のAPサーバを使う可能性が 低い • では、WebSocketに対応したAPサーバは? • Tomcat7.0.27からWebSocketをサポート →最近リリースされたばかり • APサーバはTomcat7.0.27とする →ローカル環境はPlayFramework付属のAPサーバ DBサーバの検討 • noSQL、RDBをどちらを使うべきか • 作成予定の機能「勤務表」、「自己評価」につい て、データ修正の可能性は高い →noSQLより、RDBのほうが有効 • RDBを使用することとする • MYSQL、PostgreSQLのどちらを使うか • 案件的にはMYSQLが圧倒的に多い →PostgreSQLは伸びる可能性低 • DBサーバはMYSQL5.5とする 検討結果 • • • • VPSサーバ上のCentOS6を動作させる nginx1.3.1+Tomcat7.0.27を連携する DBサーバがMYSQL5.5を使用する WebシステムのメインはPlayFramwork1.2.4(言 語はJava) →Scalaがクリアできれば2.0.1とする • 簡単な機能についてはPythonを使用 • スマートフォン向けのUIにJQueryMobileを使用 • JavScriptはできるだけ使用しないよう考慮する
© Copyright 2024 ExpyDoc