ng-mtg#6 AngularJS勉強会に行ってきた
AngularJS使ってないのに、ng-mtg#6 AngularJS勉強会に行ってきた。
年に1回はAngularJSの勉強会に参加してるみたい。いつか使う日が来るかなぁと思いつつ、まだその日が来ない。
行ってみたら、スタッフが足りないみたいだったので、受付のお手伝いしながら話を聴いた。なのでところどころ聴けてない。
セッションはこんな感じ。
- ディレクティブパターン - 株式会社LIG 林 優一 氏
- Directiveで実現できたこと - 株式会社ピースオブケイク 今 雄一 氏
- そろそろ押さえておきたい AngularJSのセキュリティ html5j Webプラットフォーム部 にしむねあ 氏
Togetterもあった。いいね。
Togetterや、他の参加者のかたのエントリもたくさん。いいね。
- #ng_jp ng-mtg#6 AngularJS勉強会 - Togetterまとめ
- [AngularJS] ng-mtg#6 AngularJS 勉強会 参加レポート | Developers.IO
- ng-mtg#6 AngularJS勉強会メモ - Qiita
- 「ng-mtg#6 AngularJS 勉強会」に行ったけどスタッフだったのでyoutube見ながらブログりましたという流れ - albatrosary's blog
ディレクティブパターン
受付のお手伝いで、ほとんど聞けなかった…。ので資料を見た感想になってしまうんだけど、実際に使っているひとのデータやコードが公開されているのがうれしい。
スライドに載っているサンプルコードも公開されてる。すてきだ。
Directiveで実現できたこと
noteもcakesも大好きなので、楽しみにしていたセッション。cakesは喜多村みかさんと渡邊有紀さんのTWO SIGHTS PASTが読みたい、写真を観たいためだけに有料会員になってる。
最近は対談のコンテンツもあって、こっちは最新のものは無料(無料会員登録)で読めるみたい。この人達の文章も写真もほんとうに好き。
で、AngularJSの話に戻る。noteのシステム構成はこんな感じ。
note、機能は少ないけど、それでもcoffeeで6500Lってすごく少ないと思う。
RailsはAPIとしてJSONを返すだけの構成にしているとのこと。やっぱりそうしたほうが、AngularJSの恩恵を受けやすいよね、と思った。
そろそろ押さえておきたい AngularJSのセキュリティ
AngularJS使っている人も、使っていない人も、目を通すといいと思う。最後にこんな謝辞があって、もうなんだかすごいなと。
謝辞 本資料は竹迫良範様(サイボウズ・ラボ)、佐藤鉄平様(サイボウズ)、 国分裕様(MBSD)に技術レビューをして頂きました。 心より感謝いたします。
セッションでは主にDOM Based XSSとCross-Site Request Forgery (CSRF)について解説されていた。
AngularJSではStrict Contextual Escaping(SCE)という機能が提供されていて、この機能がコンテキストに応じたエスケープ機能を提供してくれるそう。って書いてもわかりにくいけど、あれこれ空気読んでエスケープしてくれるすてきな機能だった。
これがものすごく高機能でびっくりした。詳細はスライドを見ていただければ。ただSCEはビルトインのディレクティブに最適化されていて、カスタムディレクティブではSCEによる保護はあまり期待できないそうなので、注意が必要とのこと。
DOM Based XSSについてはIPAからレポートが出ている。DOM Based XSSについてまとまった情報はそんなに多くないと思うのでおすすめ。
またJPCERTからはこんな報告書がでていて、DOM Based XSSやCSRFについても解説されている。
基本的なXSSや、Webアプリケーション全体としては「安全なウェブサイトの作り方」や「体系的に学ぶ 安全なWebアプリケーションの作り方」がおすすめ。
- 安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構
- Amazon.co.jp: 体系的に学ぶ 安全なWebアプリケーションの作り方
- Amazon.co.jp: 体系的に学ぶ 安全なWebアプリケーションの作り方 Kindleストア
CodeGridを購読している人なら、こちらもいいね。
まとめ
AngularJSのディレクティブがこれだけ使われているんだから、Web ComponentsやPolymerに対する期待が高まるのもわかる気がする。まあ、僕はどっちも使ってないんだけど、そのうち使う日が来るかもなーと思い、心の準備として勉強会で話を聴いたりしている。
AngularJSとは関係ないんだけど、フロントエンドのMVCフレームワークと、サーバサイドのMVCフレームワークをどう使っていくのかが難しい。
懇親会とかでいろいろな方にお話を伺ったら、サーバサイドはAPIでJSONを返すだけって構成にしている人が多かった。フロントエンドでMVCフレームワークを使うなら、その構成がいいよね。
普段Railsを使っていて、Backbone.jsを使おうと思ったけど挫折した。RailsでやることとBackbone.jsでやることを、うまく分離できなくて、設計ができなかった。もちろんRailsからはJSONを返すだけって割り切れば、設計できるし、実装もできたと思う。
でも、そうすることが正しいのか、確信が持てなかった。Railsに既存のViewやControllerがある。RailsのViewを使えばJSでテンプレートをレンダリングする必要はない。AngularJSやBackbone.jsを使うってことは、そこになにかメリットがあるからで、そのメリットが少ないなら使わなくてもいいと思う。そのほかにもあれこれ考えて、そのときは普通にRailsとjQueryを使って実装した。また違う機会に使ってみたい。