2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
長期運用サービス改善のために構築した開発環境の話(全1記事)
リンクをコピー
記事をブックマーク
koyano氏:それでは始めさせていただきたいと思います。よろしくお願いします。
(会場拍手)
「長期運用サービス改善のために構築した開発環境の話」をさせていただきたいと思います。
まず自己紹介させていただきます。koyanoと申します。
DMM.comにて動画配信事業部で働いているフロントエンドエンジニアです。普段は「DMM動画」というサービスでView周りのコーディングやサイト改善などを担当しています。
今日は、以前、弊社のブログ「DMM inside」に投稿した記事をもとに、長期運用サービス改善のために作ったフローやツールや開発環境のお話をさせていただきたいと思います。
アジェンダはこんな感じでいきたいと思います。
まずは問題とアプローチについてお話しします。最初にサービスについてです。みなさんDMM動画知っていますか? 使っているという方いたらぜひ手を挙げていただけるとうれしいです。
(会場拍手)
ありがとうございます。DMM動画ですが、実はDMMができた最初からあるサービスです。なので、20年も運用されています。
ということは、それなりに技術的な負債が溜まっています。長期運用中のサービスにありがちな、ガイドラインの崩壊したデザインやコードだったり、影響範囲がわからないCSSやJSだったりと、リリースを優先するあまり後回しにしてきた結果、蓄積された問題です。
この問題が積み重なると、実装や影響範囲の確認などに時間が取られるようになり、結果、工数がかさんでいきます。今回はこの問題を解決することを目標にしています。
問題解決へのアプローチ方法です。
サービスの規模的にリニューアルは難しい状態です。なので、今回は既存のものはそのままにして、小さなブロック単位の修正・置き換えを繰り返していって、やがて全部置き換えようということを目指していきます。
フレームワークはVue.jsを使って、カスタムコンポーネントでスタイルもカプセル化していきます。Vue.jsを選択した理由は、jQueryが使えるデザイナーにReactやVue.jsのチュートリアルを試してもらったところ、デザイナーでも使えるぐらい学習コストが低くてサクサクコードが書けたことから、Vue.jsを選択しました。
今回の改善で目標にしたいことです。
最適化したスタイルガイドの作成、それをサービスへ適用すること。デザインデータやHtml/Javascript/Styleを管理しやすい状態、コンポーネント化などをして、資産化を目指していきます。まとめると、すばやくサービスを改善できるような状態にしたいということです。
ちょっと前置きが長くなってしまいましたが、ここから実際にどのような作業をしているのか、どんなツールを使っているのかをお話ししたいと思います。
まずデザイン側の開発の流れです。
最初に行ったのがUIインベントリというものです。これはサービスのデザインがどんな状態になっているかを把握するために、複数人でサービスのスクリーンショットを撮り集めて、パーツ単位に分解・分類していく作業です。その結果をもとに整理しスタイルガイドの作成を行いました。
スタイルガイドができたあとは、対象のページとブロックを決めて、スタイルガイドの適用や、必要に応じてUIの見直し、データの作成を実施しています。
今回のフローで使っているツールやサービスです。コミュニケーションツールはSlack、デザインツールはSketchです。
そしてデザインサービスの「Figma」というサービスを使っています。
弊社は開発拠点が石川と東京にありまして、遠隔でコミュニケーションを取りながら作業をすることが多いです。そこで使用するのが、Slackのビデオチャットと、リアルタイムで共同作業ができるFigmaです。
ちなみにFigmaを使っていらっしゃる方はいらっしゃいます?
(会場挙手)
けっこういますね。ありがとうございます。実際にUIインベントリとスタイルガイドの作成はFigma上で行いました。全体としてこんな感じで整理していくという感じです。
オンライン上で共同で作業できるので、Slackで会話をしながら一斉に編集していきます。非常にスピード感を持って作業できます。画像を見ながらしゃべるので細かなニュアンスなども伝えやすいです。
シンボル化やコメント追加など、UIデザインツールとして必要な機能が備わっているので、わりと不自由なく作業ができています。
とくにプロトタイピングが便利でして。
実際新しいUIを試すときは、サクッと作って、URLを発行して、自分のスマホで確認作業を行なっています。
次にフロントエンドの開発フローになります。実はFigma上での作業は、デザイナーだけでなく、フロントエンドエンジニアも参加しています。なので、デザインがある程度見えた段階から作業に入ってしまいます。
だいたいのデザインをもとにどのように分解してコンポーネントにしていくのかを話し合い、コンポーネント作成、できたらビルド、実ページに組み込むという作業になります。
パーツの製作や管理には、Storybook for Vueを使用しています。
Storybookは登録したコンポーネントを表示したりテストしたりできるUI開発環境です。機能追加も可能でして、ネット上には色々なアドオンが公開されています。弊社では公式が出しているKnobというアドオンを使っています。
Storybookは、静的ファイルも出力できるので、プルリクエストやマージのタイミングでCircleCIを使ってAWS上にアップして、いつでもブラウザで確認できるようにしています。
パーツカタログという使い方だけでなく、開発環境として使っています。色々な使い方ができるので、デザイナーはデザインやインタラクションを確認、サーバサイドはコンポーネントへ渡すデータの確認といった感じで使っています。
コンポーネントはAtomic Designをベースにした粒度とカテゴリで管理しています。
ただ、アトミックデザインを厳格に守ろうとすると、製作者間の認識の違いで非常に悩むことがよくあります。なので、すごく簡単にルールを決めて、すぐに粒度を変えられるようにしています。
粒度の中にカテゴリを切って、その中にコンポーネントフォルダを置くかたちで管理しています。
実際に新規でコンポーネントを作るときには、すぐ作り始められるように、コマンドを叩くと、粒度を選んで、その中にあるカテゴリを選んで、コンポーネント名を入れると、必要なテンプレートが該当の箇所に出力されるようなスクリプトを使っています。
このような感じでファイルが生成されます。
生成されたあとは、まずドキュメントを書きます。次にstories.jsファイルにアドオンのKnobが動くように設定を記載、vueファイルにコンポーネントを作成します。spec.jsファイルにテストを記録という流れで作成します。コンポーネント製作者が必要なものを一通り作れる流れにしています。
一応、EditorConfig、ESLint、Stylelintでそれなりに縛っています。
コンポーネントの使い方です。
基本的に作ったコンポーネントをビルドして、読み込みたいページで読み込み、該当のブロックに反映するといった、簡単な使い方をしています。現時点では本当にパーツライブラリ的な使い方です。
現在の目標に対する到達度です。
正直まだまだぜんぜん達成できていない状態です。引き続きがんばっていきたいです。
ただ、環境を作って変わったこともちょっとありました。
まずカプセル化によって、想定外の影響がサービスに出にくい状態になったので、非常にのびのびとコーディングができる環境になりました。
次に、コンポーネントを作れば作るほど再利用可能なパーツが増えていくので、生産性が上がってきました。最後にもう1つ、これが一番うれしかったのですが、パーツの作り方やルールができたので、デザイナーが自分でコンポーネント作りたい・編集したいという意見が出てくるようになりました。
まとめです。ざっくりサービス改善に向けて作ったフローや環境のお話をさせていただきました。この環境は運用を始めてだいたい半年ぐらい経ちましたが、実は当初作ったものからかなり変わっています。
結局のところ、目的達成に向かって、最善ならばルールを変えていくというスタンスで運用するのが大事なのかなと思っています。もちろん運用のルールは大事なんですが、ルールを守ることが目的とならないように気をつけています。
開発環境というよりはフローのお話になってしまいましたが、みなさまのご参考になれば幸いです。今日登壇した内容はこちらのブログに書いた内容をもとにしています。もしよろしければご覧ください。ご清聴ありがとうございました。
(会場拍手)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略