自社システムにおける 最適なフレームワーク 2012/08/03. 前提条件 機能は「自己評価」、「勤務表」、「掲 示板」、「ログイン機能」を想定 使用するフレームワーク等は全て無料で あるが未来があるものを使用する 作るにあたり最適なフレームワーク、ソ フトを提供する 画面は HTML5 で作成することが前提.

Slides:



Advertisements
Similar presentations
Integrated Personal Page C05823 森本万里子 C05829 西山礼恵 C05899 高木華子.
Advertisements

AWS + nginx + Node.js + Android ~ Android アプリ開発してみた~ 高知工科大学 情報学群 4 年 松下 和生.
Ruby on Rail の紹介 石渡正樹 Ruby on Rails とは? スクリプト言語 Ruby で書かれた web アプリケー ションフレームワーク 作者 –Devid Heinemeier Hansson という人だそうです ( 詳 しいことは知りません.
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
© 2005 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます prototype.js と Perl で Ajax 株式会社はてな 伊藤 直也
Struts VS SAStruts ・ STRUTS と SAStruts を比較します。. Struts のメリット1 STRUTS はディファクトスタンダード。 ↓ プログラマがたくさんいる。 ライブラリ、ツールがたくさんある。 ビジネス案件が豊富。 書籍などの情報元が豊富。
自社システムにおける 最適なフレームワーク 2012/06/15. 条件 機能は「自己評価」、「勤務表」、「掲 示板」、「ログイン機能」を想定 使用するフレームワーク等は全て無料で あるが未来があるものを使用する 作るにあたり最適なフレームワーク、ソ フトを提供する 画面は HTML5 で作成することが前提.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
卒業論文審査会 Web の読みやすさ実験ツールの開発 岩手県立大学 ソフトウェア情報学部 ソフトウェア情報学部 4 年 柴田 大樹 指導教員:鈴木克明 藤原康宏 市川尚.
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
Scala + Lift フレームワーク. Scala の概要 JVM 上で動作するオブジェクト指向+関数型言 語 JVM のスケーラビリティを適用できる Java との相互利用が可能 trait を利用した多重継承( Mix-In )が可能.
Scala + Liftフレームワーク その2.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
7-1.WEKOコンテンツ 一括登録 マニュアル Version2.5
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
T2V技術 Web製作ラボ 4/25, 2011 hayashiLabo 9.
Webアプリケーション開発の 基本的なポイント
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
社内システム進捗 前回までの決定事項 →システムは「Scala PlayFramework2」で作成
WordPressの基礎.
NC-2 情報通信基礎実験 WEBデザイン基礎実験 (2日目) 担当:清水,田代 副手:浦辺,石井.
稲葉 一浩 (k.inaba) Python と プログラミングコンテスト 稲葉 一浩 (k.inaba)
2008/03/01 D-BOF k.inaba はじめての initial D 2008/03/01 D-BOF k.inaba
上藤紳也 5月間報告.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
JSFによるWebアプリケーション開発 第11回
アプレット (Applet)について.
ケータイキット for Smarty のご紹介
技術トピックス 2014/08.
Microsoft Office 2010 クイックガイド ~ファイルの互換性編~
オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」
オペレーティングシステムⅡ 第3回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/16.
卒研:データベースチーム 第4回 DOMを使った処理
PHP Framework Update symfony 編 株式会社ディノ 月宮紀柳.
Webを利用した授業支援システムの開発 北海道工業大学 電気電子工学科 H 渋谷 俊彦.
JSFによるWebアプリケーション開発 第6回
最終課題 Webアプリケーション 〜ページのしおり機能〜
NC-2 情報通信基礎実験 WEBデザイン基礎実験 (1日目) 担当:清水,田代 副手:浦辺,石井.
基礎プログラミング演習 第1回.
第8章 Web技術とセキュリティ   岡本 好未.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
ホスティングサーバの作成と、 ラズベリーパイの利用
第12回 2007年7月13日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Excel 2002,2003基本14 テンプレートを作る.
プログラミング 4 記憶の割り付け.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
インタラクティブ・ゲーム制作 <プログラミングコース>
ネットショップデザイン入門Ⅰ・ⅡSEO 2013/12/18 Webデザイン入門 SEOの基本.
平成19年10月19日 図書系のための アプリケーション開発講習会
Jakarta Struts (2) ソフトウェア特論 第11回.
Javaによる Webアプリケーション入門 第2回
テーブル設計を後から変更 現場で使える小技のご紹介 株式会社ジーワンシステム 生島 勘富(イクシマ サダヨシ)
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
Javaによる Webアプリケーション入門 第11回
すべて読む Microsoft SharePoint ニュース
一歩進んだ Views の使い方 スタジオ・ウミ 山中.
北海道情報大学 情報メディア学部 情報メディア学科 新井山ゼミ 金子拓磨
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
Jakarta Struts (1) ソフトウェア特論 第10回.
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
JSPの基本 J2EE I (データベース論) 第8回 /
Googleマップを活用した 生物調査データベースの構築
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
Microsoft Office 2010 クイックガイド ~ファイルの互換性編~
JAVA入門⑥ クラスとインスタンス.
Presentation transcript:

自社システムにおける 最適なフレームワーク 2012/08/03

前提条件 機能は「自己評価」、「勤務表」、「掲 示板」、「ログイン機能」を想定 使用するフレームワーク等は全て無料で あるが未来があるものを使用する 作るにあたり最適なフレームワーク、ソ フトを提供する 画面は HTML5 で作成することが前提 PC 、スマートフォンに対応できるような 構成を考えること

先月までの検討内容 Java で開発だとスキルアップにならないのでは →PlayFramework1 系では新しい要素が薄くない? → まして 2 系でてるのに 1 系っていまさらないでしょ う・・・。 → じゃあ、他のフレームワークは? Lift ( Scala )ってどう?マイナーすぎないか。 → そもそも Scala ってどうなの? 対抗馬として Django ( Python )はどう? →Google App Engine で使われているよ。 → でも、開発案件で Python 使っているのほとんど無い → 動的型付けだと実行時にバグ生みやすく大規模厳しい とりあえず、 PlayFramework2.02(Java) 、 Lift2.4(Scala) 、 Django1.4(Python) で検討しましょう!

各フレームワーク比較 No 項目 PlayframeworkLiftDjango 1 言語人気◎( Java ) ×(Scala) △ (Python) 2 ドキュメント量( Web ) ○ △◎ 3 画面モックの流用△◎ ○ 4 画面レイアウト ○○○ 5 入力チェック◎△◎ 6 設定ファイル ( 少ないこ と ) ○○○ 7 使いやすさ◎△ ○ 総合点数 各種フレームワークを上記観点で比較。 詳しい説明については以下に記載。 HTML5 を使用することを前提にしているため、ビュー周りを中心に評価。 個人的な主観も入っていると思いますので、激しい突っ込みは勘弁していただけると・・・。 総合点数は◎: 3 、 ○ : 2 、△: 1 、 × : 0 で採点

1. 言語人気( 2012/07 ) Jun 2012Jun 2011ProgrammingDeltaStatus 12C18.331%+1.05% 21Java16.087%-3.16% 36Objective-C9.335%+4.15% 43C %+0.10% 54C#6.668%+0.45% 67Basic5.695%+0.59% 75PHP5.012%-1.17% 88Python4.000%+0.42% ・・・ 45?Scala0.237%? 【参考】 ※主要検索エンジンに検索された結果を元に算出しているようです。

2. ドキュメント量 No 項目 PlayframeworkLiftDjangoStruts 1 Web 全体 960,0005,710,0002,580,00051,100,000 2 日本語のみ 300,0001,400,0005,990,0005,580,000 3 日本語 +1 年 14,1006,48031,90033,000 4 日本語 +1 ヶ月 2,3701,2606,6506,360 5 日本語 +1 週間 ,0402,520 総合結果 ○ △◎ー Google を使用して測定( 2012/07/30 )、参考として「 Struts 」も記載。 検索キーは「 Playframework 」、「 Scala Lift 」、「 Python Django 」を 使用。 「 Playframework 」は「 Play 」と略されることが多いため若干不利? Django は日本語のみのほうが全体より多い、何故・・・、誰か教え て?? 直近も全般も Django が 3 つの中では人気が高い。 Struts とほぼ同じ件 数。 1 年間で言うと「 Lift 」よりも「 Playframework 」のほうが人気。

3. 画面モックの流用 Web 開発において、画面モックを流用できること は重要。 → 設計段階で画面モックを作成する → モックを流用できれば画面開発の工数削減 → ときどき、 EXCEL で画面作っている時代遅れな手法 を使う会社もあるけど・・・、ありえない、時間 の無駄です。 → また、 HTML の原型を残せないとデザイナーが必要 な場合、工数が増大 ではどういったテンプレートがいいか? →HTML の原型をできるだけ残せること 各種フレームワークについてみていきましょう!

3-1. モック流用 (PlayFramework) Form template helpers = } →HTML の原型が無く、使い物にならない・・・。 = routes.Application.submit()) { } →Form タグの部分は微妙だがぎりぎり使えそう。 もう少しいい方法があったら教えてくださ い・・・。

3-2. モック流用 (Lift) Lift2.1 以前では特殊なタグを使用していた。 Welcome to app at しかし、 Lift2.2 以降では CSS の class 属性経由でデータ更新可能 Welcome to your Lift app at Time goes here これをスニペット側で操作できる class HelloWorld { def howdy = ".time" #>Helpers.formattedTimeNow } つまり、ロジックを画面側に埋め込んでいない! → デザインとロジックの分離が可能

3-3. モック流用 (Django) 以下の HTML に値を設定することが可能 これをフォーム側で以下のように設定 def test(request): f = testForm({'name':'taro', return render_to_response('test.html', {‘form1': f}) つまり、ロジックを画面側に埋め込んでいない! → デザインとロジックの分離が可能 ただし、リスト等は { リスト名 } のようにロジック を記載するため、 Lift のように完全分離ではない。 Struts タグよりは分離できているためかなりいい!

4. 画面レイアウト Web サイトのほぼレイアウトが決まってい る 例えば、メニューが左側など。 Struts でいう、 Tiles のような機能がないと 画面修正が入った段階で厳しい・・・。 選定した 3 種類とも実現可能なため問題な し。 → 内容は想像できる感じなので省略

5. 入力チェック HMTL5 により、クライアント側でチェック ただし、 Web システムでサーバ側の入力 チェックは必須であり、簡素に記述できるこ とが重要 また、独自に拡張できることも必須 → これについては 3 フレームワークとも可能 Struts1 系のように Action クラスに記述したり、 XML ファイルに記述する方式は避けたい 各種フレームワークについてみていきましょ う!

5-1. 入力チェック (Playframework) チェックはコントローラで実施 Form testForm = form(Test.class).bindFromRequest(); if(testForm.hasErrors()) { // エラー処理 } public public String ; フォームに関連付けているエンティティにアノテー ションを記述 簡素でわかりやすい。 Struts2 系と似ている

5-2. 入力チェック (Lift) 各フィールドに対して記述(今回は desc ) object desc extends MappedPoliteString(this, 128) { override def validations = valMinLen(3, "Description must be 3 characters") _ :: super.validations } Play 、 Scala に比べわかりにくい → Scala に慣れていないのもあるが・・・。

5-3. 入力チェック (Django) 入力チェックはデフォルトで必須チェッ クあり class TestForm(forms.Form): name = forms.CharField(required=False, max_length=20) = forms. Field() Play 同様にシンプルでわかりやすい

6. 設定ファイル 基本的にどのフレームワークも CoC 系であ り、設定ファイルが少ない 細かい設定については省略 → マニュアル等を見てください・・・。

検討結果まとめ 点数で言うと「 Playframework(Java) 」で決 定? → スキルアップする要素が少ないので NG 。 次点の「 Django(Python) 」にする? → 人気言語 (Java 等 ) から Python へシフトする可能 性は低。大規模では厳しいので NG 。 最後の砦「 Lift 」で決まり? → 日本での人気も微妙で難易度も低くないため、 日の目を見ないリスクが高いので NG 。 ということで Playframework2 系 (Scala) でど う?

なぜ、 PlayFramework(Scala) ? Play は Java 系で人気が出る可能性有り →Java で CoC 系は少ない (Struts2 系もそうだが人気はぜんぜん出ていな い・・・。 ) →Play 技術者は少ないので高メリット。 (Google で検索してもサンプル ソースレベルばかり ) Scala テンプレート評判悪くない? → 使えなかった場合、「 Groovy Templates plugin 」で 1 系と同じ感じで可 能。 (2 系のコンパイル時にエラーが出せる思想が台無しですが・・ ) そもそも、 Scala って人気無いでしょう? → 関数型のスキルアップチャンス ( 気がついたら「 Java ではこうだっ た」のにと恥ずかしい人にならないために ) スクリプト系 (PHP 、 Ruby) から Scala へ流れる可能性あり → 海外サイトでは一部、そういった傾向あり JDK8 では JDK7 以前には無い Scala 同等の機能がある →Scala で事前にスキルを身につけておくことで今後スムーズ!

JDK8 の機能って? ラムダ式 → クロージャは微妙な実装みたいですが・・・。 高級関数 → 高級関数を使用したコレクション処理は便利ですね。 → 特にフィルタ機能はソースが簡素になっていい! 関数連鎖 → 俺が慣れてないだけかもしれませんが見にくい・・・。 仮想拡張メソッド →Scala だと「 trait 」 上記の意味がわかってない人は勉強不足のため、少な くても概要程度は調べておくことをお薦めします。 【参考】

最終結果 Web システムは Playframework2 系( Scala ) →scala テンプレートに問題がある場合は 「 Groovy Templates plugin 」を使用 メイン処理以外の一部に「 Python 」 → バッチ処理等で Python を使う 将来、モバイル対応時には 「 JQueryMobile 」 → 勤務管理などはスマートフォン対応した い