SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
多分モダンなWebアプリ開発 
M3 TechTalk #32 2014/10/31 
中村 貴志
Webアプリの構成要素 
• 開発環境 
• IntelliJ IDEA 
! 
• サーバー 
• SkinnyFramework 
• Scala 
• Scalatra 
• Scalate 
• ScalikeJDBC 
• Sentry 
• logback + janino, MDC 
• フロント 
• AngularJS 
• karma + jasmine 
• jshint 
• grunt 
• bower 
• C3.js 
• VD作業にGit利用 
! 
•
IntelliJ IDEA
IntelliJ IDEA 
• Eclipseと比較 
• EclipseのScalaはビルドが重すぎて使い物にならない 
• Eclipseに比べて総合的に軽い 
• 1プロジェクト=1ウインドウ 
! 
• 英単語のスペルチェックが便利 
• 複数形も加味、キャメルケースでの単語区切りで判定 
• Vim化プラグインもある 
• IdeaVim http://plugins.jetbrains.com/plugin/164
SkinnyFramework 
http://skinny-framework.org/ 
• 瀬良さん作のScalaによるWebフレームワーク 
• Scala自体がLL的な表記で書きやすい 
• 文字列、配列、Hash、Tuppleなどのリテラルが便利 
• コレクションの操作がやりやすい 
• SkinnyはいくつかのOSSを寄り集めて構成されている 
• Scalatra / Scalate / ScalikeJDBC / ScalaTest 
etc…
SkinnyFramework 
http://skinny-framework.org/ 
• Scalatra : サーブレット周り 
• 通常のservlet機能(web.xml)を使える 
• 既存のサーブレットフィルタを利用 
可能 
• CRUD、REST-API、AngularJS向け 
機能あり 
• JSON、XMLでのレスポンスに対応 
• 独自バリデーション機能 
! 
• Scalate : テンプレートエンジン 
• テンプレートもScala 
! 
! 
! 
• ScalikeJDBC: DB周り 
• ORM 
• SQL Query Builder 
• 素のSQL文を記載することもできる 
• 複数DB接続に対応 
• モデルのタイムスタンプ、 
楽観ロック機能がある 
! 
• ScalaTest: テスト 
• 単体・コントローラ・インテグレー 
ションテスト 
• DB周りのテストで試験によりデータ 
が生成されてしまう 
•
SkinnyFramework 
http://skinny-framework.org/ 
• 利点 
• 通常のwebフレームワークが分かれば普通 
• 瀬良さんに聞けば分かる 
• ScalikeJDBCも瀬良さんはコミッタ 
• 必要があればPullRequestすれば取り込まれる 
• 欠点 
• コントローラの種類が色々あるので計画的に作成が必要 
• 利用が少ないため未成熟な機能もある 
! 
• Qiita記事をどうぞ 
• http://qiita.com/tags/skinnyframework
logback + janino 
http://logback.qos.ch/manual/configuration.html#conditional 
• janino : 軽量Javaコンパイラ 
• logback.xml中にif文での 
分岐を記載できる 
• 環境ごとの差異を 
1ファイルに記載できる 
# 本番用ログ出力モードで起動 
% java -DlogEnv=prod ~~
logback + MDC 
(Mapped Diagnostic Contexts) 
http://logback.qos.ch/manual/mdc.html 
• スレッド中のログ出力に共通 
の値を出力できる 
• 1リクエスト内の処理ログに 
ユーザIDなどを出力できる
Sentry 
• エラーログ記録Webサービス 
• メール通知を代行してくれる 
• logback、log4jにAppenderを設定するだけ 
• 指定のログレベルでログ出力をするだけなので簡単 
• Serviceクラスやユーティリティ処理のエラー時に 
無理矢理メールを送る必要なし 
• Httpリクエストを記録するためのServletListenerがある 
• 導入方法の詳細は、社内wikiで。
AngularJS 
• SPA(Single Page Application)を想定したJavaScriptフレームワーク 
• v1.2系がIE7は非対応、IE8は辛うじて動く(IE8向けの注意点がある) 
• v1.3系(最近リリース)は IE9以降のみ対応 
! 
• データバインドが柔軟 
• JSオブジェクトの操作と画面制御を分けて考えやすい 
• 役割を分けてモジュール分割しやすい 
• Controller(メイン)、Service(ロジック)、Directive(表示制御)など 
• モジュールごとにUnitTestを記述しやすい 
• jQueryと組み合わせるので、jQueryの資源が使えるかも
AngularJS 
• 今回はSPAにはしなかった 
• IE8などの古いブラウザでの動きが心配 
• アクセスのトラッキングを独自に検討したくなかった 
(EOP、GA) 
! 
• おすすめ学習方法 
• code-school AngularJS 
http://campus.codeschool.com/courses/shaping-up-with-angular-js/intro 
! 
• 書籍「AngularJS リファレンス」 の紹介記事 
http://qiita.com/namutaka/items/bc34a22e00b1032ec351
karma + jasmine 
• AngularJSの標準テスト機能 
• karma : テストランナー 
• jasmine : テストフレームワーク (= junit,spec) 
• protractor : seleniumでのテスト(使っていない) 
! 
• テスト結果をjunitと同じ形式で出力できるので、 
Jenkinsとも組み合わせられる
jshint 
• JavaScriptの静的解析 
• Eclipseでwarningを出してくれる感じ 
• コードの書き方がぶれない。 
• 文字列は「”」or「'」を統一など 
• 「;」忘れを指摘 
• など 
• gruntにテスト結果をjunitと同じ形式で出力できるので、 
Jenkinsとも組み合わせられる
grunt 
• フロントエンド開発でのタスクランナー 
• Javaでいうant・maven、Rubyでいうrake 
• CoffeeやSASSなどのコードを変換するタスクに使う 
• Markdownをhtml化するのに使ったりもできる 
• ファイルの更新をトリガとして処理を行うことができる 
15
grunt 
• grunt live によるモックサーバーが便利 
• node.jsベースのhttpサーバーが起動 
• WebAPIのスタブを静的ファイルとして用意できる 
• ソースを保存すると自動でブラウザがリロード 
• 同時にjshintとUnitテストが実行される 
! 
• VD作業はこのモック起動で確認 
• すごくやりやすかったと好評 
16
bower 
• JavaScript、CSSのライブラリ管理ツール 
• Javaでいう maven、Rubyでいうgem、PerlでいうPCL 
• 依存関係を自動で解釈してファイルを取得してくれる 
• リソースの依存関係が明確になる 
• grunt プラグイン (grunt-bower-task) 
• 取得したファイルなどを決まった規則で配置できる 
• 外部リソースの管理をルール化できる 
! 
• 参考記事 
• http://yosuke-furukawa.hatenablog.com/entry/2013/06/01/173308 
• http://yosuke-furukawa.hatenablog.com/entry/2013/06/04/085537
bower 
% cat bower.json 
{ 
"name": "myappp", 
"version": "0.0.0", 
! 
"dependencies": { 
"jquery-ui": "~1.11.2" 
} 
} 
! 
% bower install 
jquery-ui#1.11.2 
bower_components/jquery-ui 
"## jquery#2.1.1 
! 
jquery#2.1.1 
bower_components/jquery 
! 
% grunt bower:install 
Running "bower:install" (bower) task 
>> Cleaned target dir app/vendor 
>> Installed bower packages 
>> Copied packages to app/vendor 
! 
Done, without errors. 
! 
! 
% find app/vendor/ -type f 
! 
app/vendor/jquery-ui/jquery-ui.js 
app/vendor/jquery/jquery.js 
! 
! 
! 
!
C3.js 
http://c3js.org/ 
• D3.jsをベースにしたJavaScriptでのグラフライブラリ 
• きれいで動きのあるグラフが簡単に作れる
C3.js 
http://c3js.org/ 
• 横軸をシーケンシャルに補間してくれる 
['x', '2013-01-01', '2013-01-03', '2013-01-08'], 
[‘d1', 30, 100, 250], 
[‘d2', 130, 200, 150] 
NG
C3.js 
http://c3js.org/ 
• 横軸をシーケンシャルに補間してくれる 
['x', '2013-01-01', '2013-01-03', '2013-01-08'], 
[‘d1', 30, 100, 250], 
[‘d2', 130, 200, 150] 
OK
C3.js 
http://c3js.org/ 
chart = c3.generate({ 
data: { 
url: '/data/c3_test.json', 
mimeType: 'json' 
}, 
keys: { 
x: 'name', 
value: ['upload', 'download'], 
} 
}); 
/data/c3_test.json • JSONからグラフが作れる 
[ 
{name: 'aaa', upload: 800, download: 500}, 
{name: 'bbb', upload: 600, download: 600}, 
{name: 'ccc', upload: 400, download: 800}, 
{name: 'ddd', upload: 400, download: 750} 
] 
• DBからMapの配列でデータを取得 
してJSON化するだけで使える 
• csvの読み込みもできる 
• 帳票の結果をグラフ化するのに 
も使えるかも
VD作業にGit利用 
• SourceTreeを使ってもらった 
• 初期の構成はこちらで準備 
• コンフリクトなどが起きたらEngで対応 
• gruntのモック起動用のWindows batchを作っておく
VD作業にGit利用 
• VDで使うブランチは1つだけ 
• VD作業の区切りでEngがdevelopにマージした後に、 
design用ブランチを進める 
• VD作業では、pull → 修正 → commit → pushを繰り返すのみ 
develop 
design
まとめ 
• IntelliJ:Eclipseから乗り換えたい 
• SkinnyFramework:いいよ 
• logback:機能知らなすぎた… 
• grunt:覚えると便利 
• AngularJS:なかなかいい 
• c3.js:使える
以上です 
! 
コメントをどうぞ

Contenu connexe

Tendances

Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力
Kota Mizushima
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへ
takezoe
 

Tendances (20)

Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
Swagger 入門
Swagger 入門Swagger 入門
Swagger 入門
 
One ASP.NET, OWIN & Katana
One ASP.NET, OWIN & KatanaOne ASP.NET, OWIN & Katana
One ASP.NET, OWIN & Katana
 
Good-Bye Swagger
Good-Bye SwaggerGood-Bye Swagger
Good-Bye Swagger
 
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerおれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 
Android ReactNative UITesting
Android ReactNative UITestingAndroid ReactNative UITesting
Android ReactNative UITesting
 
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksServlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
 
進撃のSbt
進撃のSbt進撃のSbt
進撃のSbt
 
React.js + Reduxで作るSPA
React.js + Reduxで作るSPAReact.js + Reduxで作るSPA
React.js + Reduxで作るSPA
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
 
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみアメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
 
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Serviceメルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力
 
退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへ
 
OWIN って何?
OWIN って何?OWIN って何?
OWIN って何?
 
実戦Scala
実戦Scala実戦Scala
実戦Scala
 

Similaire à 多分モダンなWebアプリ開発

Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
Etsuji Nakai
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
 

Similaire à 多分モダンなWebアプリ開発 (20)

Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
Webに今求められているレベル: HTML5 コントロールを利用した開発
Webに今求められているレベル: HTML5 コントロールを利用した開発Webに今求められているレベル: HTML5 コントロールを利用した開発
Webに今求められているレベル: HTML5 コントロールを利用した開発
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 

Dernier

Dernier (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

多分モダンなWebアプリ開発

  • 2. Webアプリの構成要素 • 開発環境 • IntelliJ IDEA ! • サーバー • SkinnyFramework • Scala • Scalatra • Scalate • ScalikeJDBC • Sentry • logback + janino, MDC • フロント • AngularJS • karma + jasmine • jshint • grunt • bower • C3.js • VD作業にGit利用 ! •
  • 4. IntelliJ IDEA • Eclipseと比較 • EclipseのScalaはビルドが重すぎて使い物にならない • Eclipseに比べて総合的に軽い • 1プロジェクト=1ウインドウ ! • 英単語のスペルチェックが便利 • 複数形も加味、キャメルケースでの単語区切りで判定 • Vim化プラグインもある • IdeaVim http://plugins.jetbrains.com/plugin/164
  • 5. SkinnyFramework http://skinny-framework.org/ • 瀬良さん作のScalaによるWebフレームワーク • Scala自体がLL的な表記で書きやすい • 文字列、配列、Hash、Tuppleなどのリテラルが便利 • コレクションの操作がやりやすい • SkinnyはいくつかのOSSを寄り集めて構成されている • Scalatra / Scalate / ScalikeJDBC / ScalaTest etc…
  • 6. SkinnyFramework http://skinny-framework.org/ • Scalatra : サーブレット周り • 通常のservlet機能(web.xml)を使える • 既存のサーブレットフィルタを利用 可能 • CRUD、REST-API、AngularJS向け 機能あり • JSON、XMLでのレスポンスに対応 • 独自バリデーション機能 ! • Scalate : テンプレートエンジン • テンプレートもScala ! ! ! • ScalikeJDBC: DB周り • ORM • SQL Query Builder • 素のSQL文を記載することもできる • 複数DB接続に対応 • モデルのタイムスタンプ、 楽観ロック機能がある ! • ScalaTest: テスト • 単体・コントローラ・インテグレー ションテスト • DB周りのテストで試験によりデータ が生成されてしまう •
  • 7. SkinnyFramework http://skinny-framework.org/ • 利点 • 通常のwebフレームワークが分かれば普通 • 瀬良さんに聞けば分かる • ScalikeJDBCも瀬良さんはコミッタ • 必要があればPullRequestすれば取り込まれる • 欠点 • コントローラの種類が色々あるので計画的に作成が必要 • 利用が少ないため未成熟な機能もある ! • Qiita記事をどうぞ • http://qiita.com/tags/skinnyframework
  • 8. logback + janino http://logback.qos.ch/manual/configuration.html#conditional • janino : 軽量Javaコンパイラ • logback.xml中にif文での 分岐を記載できる • 環境ごとの差異を 1ファイルに記載できる # 本番用ログ出力モードで起動 % java -DlogEnv=prod ~~
  • 9. logback + MDC (Mapped Diagnostic Contexts) http://logback.qos.ch/manual/mdc.html • スレッド中のログ出力に共通 の値を出力できる • 1リクエスト内の処理ログに ユーザIDなどを出力できる
  • 10. Sentry • エラーログ記録Webサービス • メール通知を代行してくれる • logback、log4jにAppenderを設定するだけ • 指定のログレベルでログ出力をするだけなので簡単 • Serviceクラスやユーティリティ処理のエラー時に 無理矢理メールを送る必要なし • Httpリクエストを記録するためのServletListenerがある • 導入方法の詳細は、社内wikiで。
  • 11. AngularJS • SPA(Single Page Application)を想定したJavaScriptフレームワーク • v1.2系がIE7は非対応、IE8は辛うじて動く(IE8向けの注意点がある) • v1.3系(最近リリース)は IE9以降のみ対応 ! • データバインドが柔軟 • JSオブジェクトの操作と画面制御を分けて考えやすい • 役割を分けてモジュール分割しやすい • Controller(メイン)、Service(ロジック)、Directive(表示制御)など • モジュールごとにUnitTestを記述しやすい • jQueryと組み合わせるので、jQueryの資源が使えるかも
  • 12. AngularJS • 今回はSPAにはしなかった • IE8などの古いブラウザでの動きが心配 • アクセスのトラッキングを独自に検討したくなかった (EOP、GA) ! • おすすめ学習方法 • code-school AngularJS http://campus.codeschool.com/courses/shaping-up-with-angular-js/intro ! • 書籍「AngularJS リファレンス」 の紹介記事 http://qiita.com/namutaka/items/bc34a22e00b1032ec351
  • 13. karma + jasmine • AngularJSの標準テスト機能 • karma : テストランナー • jasmine : テストフレームワーク (= junit,spec) • protractor : seleniumでのテスト(使っていない) ! • テスト結果をjunitと同じ形式で出力できるので、 Jenkinsとも組み合わせられる
  • 14. jshint • JavaScriptの静的解析 • Eclipseでwarningを出してくれる感じ • コードの書き方がぶれない。 • 文字列は「”」or「'」を統一など • 「;」忘れを指摘 • など • gruntにテスト結果をjunitと同じ形式で出力できるので、 Jenkinsとも組み合わせられる
  • 15. grunt • フロントエンド開発でのタスクランナー • Javaでいうant・maven、Rubyでいうrake • CoffeeやSASSなどのコードを変換するタスクに使う • Markdownをhtml化するのに使ったりもできる • ファイルの更新をトリガとして処理を行うことができる 15
  • 16. grunt • grunt live によるモックサーバーが便利 • node.jsベースのhttpサーバーが起動 • WebAPIのスタブを静的ファイルとして用意できる • ソースを保存すると自動でブラウザがリロード • 同時にjshintとUnitテストが実行される ! • VD作業はこのモック起動で確認 • すごくやりやすかったと好評 16
  • 17. bower • JavaScript、CSSのライブラリ管理ツール • Javaでいう maven、Rubyでいうgem、PerlでいうPCL • 依存関係を自動で解釈してファイルを取得してくれる • リソースの依存関係が明確になる • grunt プラグイン (grunt-bower-task) • 取得したファイルなどを決まった規則で配置できる • 外部リソースの管理をルール化できる ! • 参考記事 • http://yosuke-furukawa.hatenablog.com/entry/2013/06/01/173308 • http://yosuke-furukawa.hatenablog.com/entry/2013/06/04/085537
  • 18. bower % cat bower.json { "name": "myappp", "version": "0.0.0", ! "dependencies": { "jquery-ui": "~1.11.2" } } ! % bower install jquery-ui#1.11.2 bower_components/jquery-ui "## jquery#2.1.1 ! jquery#2.1.1 bower_components/jquery ! % grunt bower:install Running "bower:install" (bower) task >> Cleaned target dir app/vendor >> Installed bower packages >> Copied packages to app/vendor ! Done, without errors. ! ! % find app/vendor/ -type f ! app/vendor/jquery-ui/jquery-ui.js app/vendor/jquery/jquery.js ! ! ! !
  • 19. C3.js http://c3js.org/ • D3.jsをベースにしたJavaScriptでのグラフライブラリ • きれいで動きのあるグラフが簡単に作れる
  • 20. C3.js http://c3js.org/ • 横軸をシーケンシャルに補間してくれる ['x', '2013-01-01', '2013-01-03', '2013-01-08'], [‘d1', 30, 100, 250], [‘d2', 130, 200, 150] NG
  • 21. C3.js http://c3js.org/ • 横軸をシーケンシャルに補間してくれる ['x', '2013-01-01', '2013-01-03', '2013-01-08'], [‘d1', 30, 100, 250], [‘d2', 130, 200, 150] OK
  • 22. C3.js http://c3js.org/ chart = c3.generate({ data: { url: '/data/c3_test.json', mimeType: 'json' }, keys: { x: 'name', value: ['upload', 'download'], } }); /data/c3_test.json • JSONからグラフが作れる [ {name: 'aaa', upload: 800, download: 500}, {name: 'bbb', upload: 600, download: 600}, {name: 'ccc', upload: 400, download: 800}, {name: 'ddd', upload: 400, download: 750} ] • DBからMapの配列でデータを取得 してJSON化するだけで使える • csvの読み込みもできる • 帳票の結果をグラフ化するのに も使えるかも
  • 23. VD作業にGit利用 • SourceTreeを使ってもらった • 初期の構成はこちらで準備 • コンフリクトなどが起きたらEngで対応 • gruntのモック起動用のWindows batchを作っておく
  • 24. VD作業にGit利用 • VDで使うブランチは1つだけ • VD作業の区切りでEngがdevelopにマージした後に、 design用ブランチを進める • VD作業では、pull → 修正 → commit → pushを繰り返すのみ develop design
  • 25. まとめ • IntelliJ:Eclipseから乗り換えたい • SkinnyFramework:いいよ • logback:機能知らなすぎた… • grunt:覚えると便利 • AngularJS:なかなかいい • c3.js:使える