スタッドです。
ジールです。
スティーブです。TimeTree Tech Talk始まりました。よろしくお願いします。
よろしくお願いします。
今日はスタッドをお呼びしておりまして、スタッドは役割とかを説明すると結構いろいろついちゃうんですけど、基本的には中心IOSのエンジニア、フロントエンドのエンジニアもやっていたり。
そうですね。IOSをメインでやっている時期もあれば、スタッドをメインでやっている時期もあり、それと全然関係ないことをやっている時期もあり、いろいろやっております。
これもちょっと後で話が出ると思って、今日はスタッドをお呼びして、紹介するのはフロントエンドチームについてです。
はい。
よろしくお願いします。
よろしくお願いします。
TBSのラジオを聞いてたんですけど、ちょうどやってた話はスーパー総選挙っていうのをやっていて、うちがよく言ってるライフスーパーなんですけど、ライフが3位だったんですよ。
ライフ推しのいろんな熱い人のコメントとか聞いて、うんうんってうなずいたりしてました。
なるほど。ライフ推しなんですね。
1位どこだと思いますか?
僕はOKなんでOKです。
目が高いですね。
OKじゃないですか?
1位OKなんですよ。
あ、そうなんですね。
スーパー総選挙って4回ぐらいやってて、毎年1位なんですよ、OKが。
あ、そうか。そうなんですね。
強いんですよ、OK。
あ、そうですね。強いですよね。
でも僕んちの近くにOKもライフもあって、ライフはライフの良さがあるなってすごい感じますね。
わかりますわかります。
ライフね、お魚おいしいんで。
はいはいはい。
店内の雰囲気とかね、ライフのほうがいいなって思ったりするんですけど。
あ、そうなんだ。
なんか違いますよね、確かに。
えー、そういうのあるんですね。
僕大関好きですけどね。
大関って近くにないかも。
小田急系かな。変わった魚とか置いてたりするんですよ。
あ、そうなんですね。
あ、練馬店あるな。
だいたいでも家の近くの派閥になりますよね。
まあまあそうですね。
そうですね。
ちょっと変わったとこだとあの美容セボンとか大好きです。
全然僕わかんないです。
全然聞いたことない。
全然わかんないですね。
聞いたこともこなかったんですね。
なんかすごい、自然食品系のすごい高い薬ばっかある。
はいはいはいはい。
バカバカ買えないんですけど。
さてさて、そしたら冒頭にもちょっとあったフロントエンドチームの、
今日ちょっとチーム紹介ということでいろいろ聞いていきたいと思うんですが、
ついさっきまで事前の打ち合わせをしていたので、
ちょっとその流れで話していきますか。
フロントエンドチームってことで、
一応そのフロントエンドチームでどういうところを担当しているかみたいなのを簡単に教えてもらっていいですか。
うちのプロダクト、フロントエンドエンジニアが関わるプロダクト結構いっぱいあるんですけど、
それを全部わかる範囲で言っておくと、
例えばまずはタイムツリーのウェブ版ですね。
これは結構前からサービス提供していて、
リリースしたのが2016年だったと思うんですけど、
そこからずっと運用しているサービスです。
基本的にはサービスの内容はタイムツリーのアプリ版と同じ。
一部使えない機能とかがあって、
随時機能を追いかけてアプリ版に追いつけ追いつけという感じで開発はしているんですけど、
そういうのを適用しています。
あとは2年前ぐらいにリリースしたトカリっていうサービスがあって、
日程調整を円滑にするためのサービスですね。
このトカリは自分もプロジェクトメンバーとして入ってたんですけど、
タイムツリーのウェブ版を最初に作った時から年数がだいぶ経ってたので、
技術スタックを完全に新しくして、
新しい技術を使いながらプロダクト作りができたのが楽しかったですね。
あとはコーポレートサイトとか、タイムツリーの紹介ページとかも社内で内製していて、
これもフロントエンドエンジニアが作っています。
あとはですね、一般に公開してないんですけど、
広告をタイムツリーで出しているので、
広告主向けの管理画面っていうのをタイムツリーで内製していて、
それもフロントエンドエンジニアが開発しています。
あとはタイムツリーは外部から使えるパブリックAPIを提供しているんですけど、
それの開発者向けのドキュメントページとか、
あとはそのAPIを使ったサービスの一つであるGoogleホーム、
Googleアシスタントの対応とかAlexaとか、
あとスラックからも使えるんですけど、
その辺のサービス、これ実はJavaScriptで書かれているので、
そこからもう社内で作るプロダクトは全部タイプスクリプトで作られています。
さっき話したサービス、プロダクト全てタイプスクリプトで書かれてて、
Time TreeのWeb版がほんと一部分だけですね。
JavaScriptが残ってるんですけど、
新しく機能を作ったり、リファクタリングするときにはタイプスクリプトに置き換えてるっていう状況ですね。
なるほど。じゃあタイプスクリプトほぼディファクトというか、
もう全部使うみたいな感じですね。
基本的にこのリアクトとタイプスクリプトができれば、
うちのフロントエンジニアになれるという感じだと思います。
ここは必修技術みたいな感じですね。
ここ分かる人はぜひ来てほしいって感じですね。
なるほど。最近のモダンな開発技術だったりしますね。
あとは、これがリアクトタイプスクリプトというのがベースにあって、
それを取り巻く周辺技術で、これの上に乗っかってるNext.jsとかフレームワークですね。
あとは、この辺は最近使いだしたんですけど、
グラフQLとかオープンAPIからコード生成したりとか、
あとUIの表示確認とかデザインレビューとかで、
ストーリーブックっていうツールを使っていて、
まだロジックとか組まない状況で、デザイナーにレビューもらうために使ったりしてます。
なるほど。
あとはCI周りもフロントエンドのメンバーがメンテしてることが多くて、
よく使ってるのがGitHub Actionsですね。
あと書いてないですけど、メモに書いてないんですけど、
ESLintとかWikiaとかその辺のLinterも、
結構社内のデファクトな設定みたいなのがあって、
これ公開してるコンフィグファイルがあるんですよ。
一般に公開してるんですけど。
このESLintのコンフィグ、社内のプロジェクト全部、
とりあえず始めるときにこれ入れとけば、
社内のプロジェクトの補佐法にだいたい揃うっていうのがあるんで、
そういう感じで作り始めたりしてます。
ESLintコンフィグタイムツリーっていうやつですね。
なるほど。うちのポリシーで書いてみた人はそれを使ってみてくださいって感じですね。
そうです。これ一般に公開してるんで、読み上げる方は全然見れます。
さっきトカリで、特に新しい技術いっぱい使えたよってことですけど、
それがNext.jsとかですか?
そうですね。Next.jsをプロダクションで使ったのがトカリからで、
あとそうだな、さっきスクラムをやっているプロジェクトもあるよ、
みたいな話もありましたけど、
いくつかのところではチームで開発するときにスクラムをやったりしますけど、
他のいろんなやり方も試されたりとかしてきたんですか。
そうですね、過去にWeb版のタイムツリーを2016年ぐらいから作ってて、
プロジェクトメンバーがほとんどいない時期があったんですね。
自分が1人でたまにライブラリーのアップデートしていくみたいな時期があって、
その辺を経てから、新しくフロントエンドの人が必要だねってなって採用して入って、
それを皮切りに何人も入るようになったんですけど、
結構古くから開発しているので、古い技術が使われてたりとか、
JavaScriptが凝ってたりとか、なんでこここんな実装なのみたいなことが結構あったんですよ。
これをリファクタリングとかしないと新しい機能も追加しづらいし、
パフォーマンス改善もできない、テストもあまり書かれていないみたいなことがあったんで、
この古い技術をしているのは自分だけだったんですけど、
その技術を適切に共有しながら、
みんなでうまくキャッチアップできるやり方はないかなって相談して、
それでMOVプロっていうのをやってみたんですね。
MOVプロをやりだしたのはコロナ前ですけど、
みんなで会議室にとって毎週、毎週というかほぼ毎日ですね。
週3日くらいだったかな。
2時間くらい使って、
タイムツリーのウェブ版の古い部分を新しいアーキテクチャに書き直していくっていう。
なんでこうなってるのっていうのは自分がこういう背景があってっていうのを説明しながら、
直していくっていう。
そういうのをやってた時期があって、
それはすごい良かったですね。
みんなが新しい、
そのみんなの開発スタイルとかをキャッチアップできるし、
テスト駆動でやってみようとかいろんなやり方を試せたので、話しながら。
なるほど。
すごい自分の勉強になりました。
なるほどね。
確かに何かこう進捗のパフォーマンスを出すっていう、
というよりもチームの中で上手く情報を行き渡らせるとか、
そういうのを目的にやってたって感じなんですね。
そうですね。情報の共有もあるし、
あとは何でしょうね。
みんなでやるから、
リソース取られるんですけど、
着実に開発が進むっていう。
なるほどね。
例えば1人くらい休んでも、
みんなオブプロで見てるので、
分かるんですよ。
今までどこやってて、
次何やればいいか、
みんなが分かるので。
なるほど。
例えば1人が風邪ひいて3日休みましたってなっても、
開発が止まらないで進められるんですね。
そういうので言うと、
ユーザーに早く価値を届けられるっていう面では、
すごい良いやり方だったかなと思ってます。
コロナになったら、
オブプロみたいなのがやりづらくなって、
あとは新しいプロジェクトとかも始まって、
最近はあんまりやってはないんですけど、
ちょっと難しい、
実装しなきゃいけないってなったときは、
ペアプロとかオブプロをその場でサッと、
その時のやり方をみんな覚えてるので、
サッとやって、
難しいとこはサクッとクリアして、
で、ここの、
こんな感じで、
このモブプロやったのも、
フロントエンドチームが初めて、
社内でも初めてなんですけど、
いろんな新しいやり方をどんどん試していこうっていうのを、
やる雰囲気、
文化、
結構根付いてて、
スクラム開発もそうですね、
フロントエンドの、
スクラム開発の、
スクラム開発の、
フロントエンドの、
スクラム開発もそうですね、
フロントエンドの人たちが中心で、
こういう開発手法があって、
ボトムアップで、
プロダクトの、
スケジュールと品質を担保しながら、
開発進めていくのは、
には良さそうっていう、
プロジェクトに導入、
支援というか、
率先して、
プロジェクトの引っ張る立場によって、
いるっていう人が結構、
何人かいますね。
そうですね、結構チームで、
いろんなこと試して、
それが広がっていくみたいなのを、