altJSの選び方
terurou
デンキヤギ株式会社
2014/06/21
自己紹介
1
自己紹介/所属等
• デンキヤギ株式会社 代表取締役
• 社員, フリーランス, 協業企業 募集してます
• DSTokai管理人
• 東海地方のメタコミュニティ
• IT勉強会カレンダーっぽいやつの東海地方版
• NGK(名古屋合同懇親会)
• エンジニア向けクロスコミュニティ忘年会
• ここ数年は100人超の参加者
2
自己紹介/技術領域
• フロントエンドアーキテクト(自称)
• 大量データ×フロントエンドが専門?
• 数百万件以上をストレスレスに操作
• 100万件を編集するExcelっぽいヤツとか…
• バックエンド込みのアーキテクチャ設計から
フレームワーク・コンポーネント実装まで
• 最近はHaxe製SPAフレームワークとか
• Haxe/JS歴2年, その他にWPF, Silverlight等
• JavaScript歴は12年ぐらい
3
altJSとは?
4
altJSとは?
• Alternative JavaScript
• JavaScriptの代替プログラミング言語
コンパイル
altJSで書かれた
ソースコード
JavaScriptの
ソースコード
5
なぜaltJSが必要なの?
6
JavaScriptが色々つらい
7
JavaScriptのつらいところ
• 言語仕様が難しく、柔軟すぎる
• prototype, thisスコープ, クラスっぽい何か
• 人やライブラリによってコードスタイルが
大きな差異がある
• 結果的にレビュー, ドキュメントが増加…
• 動的型付け
• 静的型付けよりもバグ混入の可能性が高い
• 学習コストの上昇, 保守性の低下へ…
8
それ ECMAScript 6 で…
• 使える時代が来るまで待つのが…
• 2014年12月を目標に仕様策定中
• 仕様に従ったブラウザが来るのはその後
• IE13以上?が普及した時代が来れば…
• ES6が来ても全てが解決する訳ではない
• 仕方ないのでJavaScriptは生成しましょう
9
altJSを選ぶ
10
altJSは100種類以上…
https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS
11
とりあえずメジャーなaltJSに絞る
• TypeScript
• 今一番の注目株
• 最近1.0がリリースされ、本も3冊出版された
• Haxe
• マルチプラットフォーム言語
• CoffeeScript
• Railsに採用されている
安定性, 採用実績, 国内外のユーザ数, 将来性等を
考慮すると、このあたり(2014年6月時点)
12
ここから更に選定するためのポイント
• 静的型付け or 動的型付け
• 世間の流れは静的型付け
• 静的型付けの方が開発効率や品質面で有利
• 前はそうでもなかったが、技術は進歩する
• 開発対象
• Web? マルチプラットフォーム? …
• Rails? PHP? Java? ASP.NET? …
• メンバーの学習コスト
• 既に習得済み? 近くの人に聞ける? 本は?
• 過去にやったことがある言語に似てる?
13
TypeScript
• モダンな言語仕様
• ECMAScript 6に似た構文(ES6の先行実装)
• 静的型, 型推論, 構造的部分型, …
• 開発体制, 品質が信用できる(Microsoft製)
• 開発環境, 日本語情報が整備されている
• コンパイルが遅い(数秒から十数秒)
• 実際はバックグラウンドコンパイルするので
遅さが気になる場面は限定されるが…
14
Haxe
• 構文は少し古臭いが、高度な言語機能
• ActionScript 3やC#に似た構文
• 静的型, 型推論, 構造的部分型, 代数的データ型,
マクロ(AST変換)等、TypeScriptより高機能
• 若干JavaScriptとの親和性が低い
• マルチプラットフォーム
• JS以外にFlash, PHP, C++, C#, Java等
• 超高速コンパイル(数万行でも1秒未満)
• なぜか名古屋と福岡にユーザが多い
15
CoffeeScript
• JavaScriptの構文をとにかく軽量化
• Rubyに似ており、記述するのは非常に楽
• が、前提知識がないとコードが読めない
• 動的型付け
• altJSの草分け的存在
• Railsに採用されている
• 歴史的経緯から現在のユーザ数は多いが、
今後のユーザ増加は望み薄っぽい
16
まとめ
17
結局どれ?(個人の見解)
• TypeScript
• 特に決め手がなければコレ
• 日本語文献(書籍, Web)が多数、今後も増える
• Haxe
• マルチプラットフォーム、ゲーム開発
• ML由来の高度な型システムとmacroが欲しい
• コンパイルが遅い言語は使いたくない
• CoffeeScript
• Rails案件または既にユーザであれば…
• 今から決め手もなく選択するのは、うーん…
18
altJSを使わないという選択肢もある
検討した結果、altJSを使うメリットがない
ケースも当然存在する
• jQueryでちょっとEffectをつける程度
• 俺たちはJavaScript忍者だ
• altJSとか信用できない
でも、altJSを適用すべき範囲は結構広い
19
全てをaltJSに置き換える必要もない
• ツールからJavaScriptすることが一般化
• Flash/CreateJSで書きだしたりとか
• 生成コードをaltJSに書き直しとかありえない
• altJSとJavaScriptが混在する開発スタイル,
アーキテクチャは当たり前
• メンバー構成や担当作業に最適化
• もちろん無秩序にならないように設計は必要
20
個人的には Haxe 推しです
今回の発表では詳細な解説は
全てすっ飛ばしたので、
質問・クレームは @terurou まで
21

altJSの選び方