Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Tomoya Chiba (@tomoasleep) Qiita 株式会社 Rails アプリを 10 年以上継続していくためのフロント エンドの底上げ 1
Slide 2
Slide 2 text
Tomoya Chiba (@tomoasleep) Qiita 株式会社 共通基盤開発グループ シニアエンジニア 2013-2019: 学生アルバイト → 正社員 2021-2022: 業務委託 2022-: 正社員 インフラ ~ バックエンド ~ フロントエンドまでやる雑 食系エンジニアです 最近の悩み: ブラックフライデーセールで安くなってい る 3D プリンタを買うかどうか 自己紹介 2
Slide 3
Slide 3 text
今年で Qiita は ?? 歳になりました 3
Slide 4
Slide 4 text
(Qiita は 2011 年生まれ ) 今年で Qiita は 12 歳になりました 4
Slide 5
Slide 5 text
Qiita の 12 年の変遷 (2011 2013) 5
Slide 6
Slide 6 text
Qiita Team が誕生 Qiita の 12 年の変遷 (2011 2013) 6
Slide 7
Slide 7 text
Qiita Jobs も生まれた Qiita, Qiita Team も大きく変わった Qiita の 12 年の変遷 (2023) 7
Slide 8
Slide 8 text
ところで、 12 年前の Rails フロントエンドってどん なんだったか覚えていますか … ? 8
Slide 9
Slide 9 text
初期の Qiita のフロントエンドの構成技術 ( 一部 ) 9
Slide 10
Slide 10 text
現在の Qiita のフロントエンドの構成技術 ( 一部 ) 10
Slide 11
Slide 11 text
初期: Rails が主、一部の View を jQuery で書き換え ↓ 宣言的な記述で複雑さを減らす 中期: Rails が主、一部の View を React で構築 ↓ 責務の集約、ツールの生産性を求めて 現在: ページほぼ全体を React で構築 時代の変化にあわせて採用技術も変化 11
Slide 12
Slide 12 text
技術の変化 : View の主役を Rails → JS に 12
Slide 13
Slide 13 text
(※ ただしサービスを育てるのと並行して ) 技術の変化 : View の主役を Rails → JS に 13
Slide 14
Slide 14 text
使う技術の数がこんなことに!!! どうなるか : フロントエンドが多様化してしまってい た 14
Slide 15
Slide 15 text
様々な格差が多様化を生んでしまっていた 機能間の格差: 開発頻度の差がフロントエンドの差に サービス間の格差: 様々な戦略の違いにより。チームの知識の差にも どうなるか : フロントエンドが多様化してしまってい た 15
Slide 16
Slide 16 text
度が過ぎた多様化は開発体験を悪化させる 同じことをする複数の実装が必要に 違いがスイッチングコストを生む 古いものもメンテし続けないといけない → 遅れてしまった部分を底上げして、差を縮めた フロントエンドを底上げして、差が出てしまった部 分を揃えた 16
Slide 17
Slide 17 text
Qiita のフロントエンドの底上げの取り組みについて 話します 17
Slide 18
Slide 18 text
Case 1: Qiita 内の機能間の格差を埋める Case 2: サービス間の格差を埋める 話す例 18
Slide 19
Slide 19 text
長年のフロントエンドの試行錯誤により、複数の Version がある v1: Backbone, React, webpack, Bootstrap v2: Hyperapp, GraphQL, Rollup v3: React, GraphQL, Atomic Design, webpack Case 1: Qiita 内のフロントエンド Version の統一 19
Slide 20
Slide 20 text
v1: Backbone, React, webpack, Bootstrap v2: Hyperapp, GraphQL, Rollup v3: React, GraphQL, Atomic Design, webpack 開発しながら、 v3 への移行を進めていく 20
Slide 21
Slide 21 text
v1: Backbone, React, webpack, Bootstrap ( あまり触らないページが多い ) v2: Hyperapp, GraphQL, Rollup v3: React, GraphQL, Atomic Design, webpack あまり触っていないページが v1 のまま残る 21
Slide 22
Slide 22 text
「ユーザーの声を聞いて、ユーザー体験向上」をミッションとするチーム 手を付けてない場所の改善 → ユーザー体験の底上げ 「古いフロントエンドの刷新」と、チームのミッションを揃えて 進める 22
Slide 23
Slide 23 text
v1: Backbone, React, webpack, Bootstrap v2: Hyperapp, GraphQL, Rollup v3: React, GraphQL, Atomic Design, webpack v1, v2 からの移行を達成 23
Slide 24
Slide 24 text
Qiita Team のフロントエンドは進化が遅れていた (Qiita の v1 相当) デザインリニューアルを機に、Qiita Team フロントエンドの底上げを進めること に Before After Case 2: Qiita と他のサービス (Qiita Team) との差 を埋める 24
Slide 25
Slide 25 text
Qiita の v3 相当へのジャンプは結構難しい ほとんどの要素を書き換えることになる これを Qiita Team のすべてのページでやる??? いきなりジャンプするのは難しい 25
Slide 26
Slide 26 text
一番達成したいことはなんだろう? → 「View を JS だけで構築出来る状態」 それを実現できる最小ゴールを設定する GraphQL 導入は一旦やらない いきなり全部追いつこうとしない 26
Slide 27
Slide 27 text
わかる。流石にスキーマ駆動開発の枠組みは欲しい 隙間を埋める仕組みを作って補う → JSON Schema を作る Presenter で Rails アプリケーション (Qiita Team) と フロントエンドの連携をする #Ruby - Qiita ※ GraphQL ないのつらくない? 27
Slide 28
Slide 28 text
新しいフロントエンドに慣れていないメンバーもいる Qiita の開発メンバーに、一時的に入ってもらう ペアプロで知見を共有し、学んだメンバーが他に教えて… 、で知識の差を埋める Qiita Team の開発メンバーが全員移行が行えるように チーム間の出張で、知識の差を埋める 28
Slide 29
Slide 29 text
Qiita Team の View の JS 化がほぼ完了 29
Slide 30
Slide 30 text
自然にやっていくと、フロントエンドの格差、多様性が生まれてしまう それを改善するために… 、 「古いフロントエンドの底上げ」とチームのミッションを揃えて進める 底上げする際のゴールは無理をしない 先に進んでいるチームのノウハウを借りる ここまでの学び 30
Slide 31
Slide 31 text
View の JS 化はほぼ完了できたが… 、 まだまだ課題はたくさん サービス間の差はまだある まだまだモダンにしきれていない部分もある まだまだ Rails と密結合しているところがある Qiita の現在地点 31
Slide 32
Slide 32 text
15 年 , 20 年 , ... 続くサービスのフロントエンドを目指 して 32