10年前 iPhone が誕生し, スマートフォンの時代になった今, 我々が望むものは, 実はモバイルアプリではないでしょうか?
現代のフロントエンド, もっと言うと JavaScript の開発では, コンポーネント指向による開発がほぼデファクトスタンダードになりました. それは, Facebook 社が生み出した JavaScript フレームワーク「React」の誕生を皮切りに, 一気に全世界的にコンポーネント指向が普及し, 現在に至ったと思っています. web ページの各要素・パーツをコンポーネントという単位に区切り, そこで JS や CSS のスコープを閉じることで, 再利用性も高めつつ責務を分ける, そして開発者は各コンポーネントを配置していく作業にシフトしていきました.
一方でモバイルアプリの開発を見ると, やることは大きく以下の2つだと思います.
・buttonなどのパーツの配置 ※スタイリングも含む
・イベントハンドラの設定
これは今我々フロントエンドエンジニアがやっている開発と, 酷似していると思いませんか?また, web の大きな流れとして, はじめは web だったのが, モバイルが誕生しモバイルファースト(レスポンシブ対応も含む)と言われる時代になり, それにより PWA や AMP という技術も産まれました.
このことから, web の進化はモバイルアプリの開発に寄っていると思えます. これ以外にも, パフォーマンス改善・UXUI の設計・アクセシビリティ・push 通知など色んな要素を考えないといけませんが, それはモバイルアプリケーション開発でも同様です.
以上を加味し, 一度 JavaScript フレームワークの歴史を振り返りつつ, 今後のフロントエンドの設計や開発に思いを語ってみたいと思います.
近年AltJS界隈で興隆を見せる関数型プログラミング言語であるElm。このトークでは、弊社で7万行の規模で採用されているElmのシンプルかつ必要十分な型システムが、いかにしてフロントエンドのビジネスルールを型で守り、そして型で表現しているかをご紹介いたします。単なる型アノテーションではない、真の静的型付言語がフロントエンドというドメインでどのように価値を発揮するかをご理解いただける内容です。
サーバーサイドと比較して、どのような観点から型レベルでドメインや状態網羅を守る必要があるのか。フロントエンドのドメインをどのように考え、どのように型で表現するべきか、などのトピックを簡単なコードとともにご紹介いたします。
※トークの内容はElmの文法知識などについての言及を少なめにし、Elmを知らない方でもご理解いただける内容にする予定です。
趣旨:
なんとなくオブジェクト指向を使ってて、結局オブジェクトって何なんだ?と思う事はありませんか
という人向けのセッションです
20年程前に、僕がオブジェクトを体得した経験を基にお話します
内容:
3つのパートに分けてお話します
1) オブジェクトって何なのか?
2) オブジェクトとクラスとインスタンスの違い
3) こうすればオブジェクト指向になる、スモールステップ
継承や多態性等については、触れるかもしれませんが深堀はしません
詳細:
自作スライド資料を使って話していく
1) オブジェクトって何なのか?
・「オブジェクト=物」
・オブジェクト指向は現実(リアル)を表現するための考え方
の辺りの基本的な話を中心に、プログラム初学者時代の僕が、オブジェクトをどう捉えたか、オブジェクトを使ってプログラムでどう幸せになったか、を話す
2) オブジェクトとクラスとインスタンスの違い
オブジェクト、クラス、インスタンスという言葉は良く出てくるが、違いを分かっていない人は多いらしい
僕自身も感覚で分けていた時期がある
この違いを大判焼きを例に挙げてしっかりと伝える
3) こうすればオブジェクト指向になる、スモールステップ
7つのルールはちょっとまだハードルが高い
・フィールド
・getter/setter or プロパティ
・メソッド
・イベント
これらの要素を変数や関数との違いについて説明する
脱Staticオジサン!!
最後に、僕がオブジェクト指向の勉強に役立ったと感じたC/C++の書籍の紹介と、継承や多態性、DDD等の先の世界がある事を紹介して締めたい
フロントエンドで各タイミングで抱える課題をいくつかリストアップし、項目毎に効果的であろうアプローチを現代エコシステムと合わせて駆け足で紹介しようと思います。
リミア株式会社でLIMIAというメディアサービスを開発しています。
サービス開始前、ドメイン設計して、PHPでJavaのように何でもオブジェクトとして実装しました。
すると、レスポンスタイムが30秒程度かかりました。
原因を調べると、オブジェクトの生成に大半の時間がかかっていることが分かりました。
本発表では、初めに上記事例を使って問題定義します。
次に各プログラミング言語におけるオブジェクトの生成コストを比較します。
最後に解決した事例を説明します。
PHPは学習コストが低いため採用が容易で、標準機能が豊富なため開発速度が速いという特徴があります。
しかし、想定外の動きをすることがあります。
この事例を発表することにより、適切な開発言語選択するための情報を提供します。
それでもPHPが好きなんだぁぁぁ!