2019年 STORES.jpでの活動のふりかえり

この記事はSTORES.jp Advent Calendar 2019 25日目の記事です。 前日の記事は jnishimu さんによる サービスの想いにデータをのっけるということ でした。

はじめに

(このブログを全然更新していないことに気づいて)そういえば、今月でSTORES.jpの開発に携わって5年経った感じでした。
その辺りのふりかえりはどこかでしたいなーと思いつつ、この記事では2019年をふりかえりたいと思います。

自分のミッション

年始にCEOの塚原と相談し、2019年は中長期的な視点での開発組織作りと開発方針の策定に注力することに決めました。
主に行ったこととしては、以下の4点です

  • 開発チーム構造・体制の整備
  • 大きめな開発方針の意思決定
  • 採用
  • 評価・査定制度の整備

2018年まではコードレビューとか新規事業の開発とかもやっていたのですが、2019年はより上位での意思決定をする役回りに注力した感じでした。
以下では開発チーム構造・体制の整備について、どのように考えて何を行ったのかを書こうと思います。
その他の話題について気になる方はオフラインでお声がけください。センシティブな内容を含む話題もあるのでこっそりお話します。

年始の開発体制と課題

2019年始時点の開発メンバーは23名で、大まかな目的別に5つのチームを作って活動している状況でした。
事業成長のために色々と新しく取り組みたい・取り組まなければならないことがあるなかで、いわゆる技術的負債の返済や将来の事業成長を見越した技術基盤の整備もしていきたいけど、片手間だとどうしても重要だけど緊急性の低い施策は腰を据えて進められない。そんな課題感がありました。

体制の見直し

体制の見直しは3ヶ月毎に行っているのですが、2Qに入り開発メンバーが30名になったタイミングで、サービスの機能追加や機能改善をしていくグループとシステム基盤を改善していくグループの2つの枠を作ってみることにしました。
これは、役割をチーム構造に落とし込むことで、重要だけど緊急性の低い施策とサービスの強み作りを同時に着実に推進させることができるだろうと考えてのことでした。

当面の事業目標に直結しない活動を行うグループを持つことはかなり重要な経営判断ですが、CEOの塚原とはチームが小さいときから技術的な課題感のすり合わせを頻繁に行ってきたこともあり、これが事業成長にも重要で必要なことだとすぐに納得してくれました。普段からの問題意識の共有とコミュニケーションは大事ですね。

2019年12月時点で、開発メンバーは35名になり、サービスの機能追加や機能改善をしていくグループは職能別に3チーム(バックエンドx2, フロントエンドx1)がプロダクトマネージャー、デザインチームとタッグを組んで、マトリクスに近い形で複数のプロジェクトを進めています。

システム基盤を改善していくグループはSREチームと、主にRailsの基盤を進化させていくチーム、STORES自体の業務効率を改善するチームが、それぞれ他チームと協力をしながらやるべきことに集中して取り組んでいます。

f:id:tyabe:20191225181447p:plain

2つのグループそれぞれ取り組む内容は異なるものの、触るプロダクトは1つなので、密な情報共有が必要になります。
現在は、週1回各チームの代表者と共に状況の確認を行うミーティングを開催することと、毎月末に各チームからの成果発表会を実施することで情報の同期を取れるようにしています。

以上の枠組みを作った後は、各チームの活動は基本的には各チームのリーダーに任せ、問題や例外が発生した場合にはエスカレーションしてもらうような体制を取っています。
問題発生時のフローや体制の整備もしていたのですが、まだまだ改善点も多く浸透もできていないので、この点は来年もがんばるところですね。

お問い合わせ対応に対する体制

WEBサービスを運営している事業はどこもそうだとおもうのですが、STORES.jpでも、お客様対応をしているチームからの質問やデータの確認依頼がそこそこの頻度で発生し、都度開発側での対応が必要になります。
STORES.jpの開発チームでは、この運用作業を週替わりの担当チーム制(各チームから週毎の運用担当者を決めてその担当者たちでチームを組む)で対応するようにしました。

普段の開発業務では中々触れられないサービス仕様を理解するきっかけになっていて、仕組みとしては良いのができた!とおもってはいるのですが、今後メンバーが増員された場合に問題が発生しそうなことも見えてきています。
どこまでこの体制で対応できるかわからないですが、今後も改善しながらなるべく続けたいと考えています。

それ以外のこまかいこと

体制に含むことかどうかってことですが、人数が増える度に座席配置の見直しも必要になるので、なるべくコミュニケーションが取りやすい配置だったりを気にしながら組んでたりしました。
座席がパンパンになってきて中々難しいのですが、パズルみたいなのできらいじゃないです。

まとめ

なぜか色々な締め切りが25日に集約している状況で25日午後から記事を書き始め、何とか今日中に書き上げたいというテンションで書き上げたので、とりとめのない内容になってしまいましたが、少しでも何か参考にできる部分があるとうれしいです。
もし何か気になったことがあればぜひオフラインで聞いてください!

メリークリスマス!!

RubyKaigi 2015 の会期運営スタッフをしてきた

きっかけ

2015年6月中旬くらいにOrganizerの@bash0C7から「一緒にRubyKaigiつくりましょう」という感じのお誘いを受けました。

2015年はRubyKaigiは開催されなさそうだと(なんとなく)思っていたのでびっくりしたし、一度は作る側でRubyKaigiに参加してみたいと思っていたので「ぜひ協力させてください」とお返事をしました。

会期運営スタッフとは

@bash0C7が書いたesaのポエムから引用すると

発表者が発表して、参加者が参加して、会期運営以外の専門Staff, Helperがその仕事を全うして、RubyKaigiに集まる人がたのしくRubyKaigiを過ごせるように、誘導、案内、場作りを行う

というお仕事を率先してする人ということになります

開催前の準備

@bash0C7を筆頭に、チームメンバーの@miyohideと@publichtmlと共に、役割分担を決めて各週でオフラインたまにオンラインでミーティングをしつつ開催前の準備を行っていました。

自分が主に担当したのは日英同時通訳の業者とのインターフェースでした。 その他には当日必要になるペンやガムテなどの物品をとりまとめて@takahashimに「買って♡」とお願いする役や、RubyKaigi2015チームのページをまとめたり、他のメンバーがやってくれている事の隙間を見つけて自分なりにお手伝いできることをしていました。

事前準備ではあまり自分のリソースを割けず、@miyohideと@publichtmlに完全に頼り切ってしまっていたので本当に感謝しています。

そうそう。RubyKaigi 2015 Team 内の(あまり多くない)ルールの中に

:bow: のemojiは使用禁止です (お互いさまの精神でいきましょう)

というのがありました。 これはとても良い制約だなと思ったので、会社のチームでも取り入れています。

会期中

主にホールBの番長(責任者)として動いていました。

ホールスタッフのお仕事としては、セッションの進行管理(タイムキーパー)や質問時のマイクの受け渡し、照明の操作などがありますが、 その辺りはHelperの@ginkouno, @nekoteni, @saboyutaka にとても助けていただけました。ありがとうございました。

@dekagaijinのMCは本当に最高で、各スピーカーの紹介もすべてが思いやりに溢れていて、その姿勢に感動しました。

ちなみに、ホールBが暑かったり寒かったりしたのは私の調整ミスです。ご迷惑をおかけしました。 (一度、空調の調整判断を誤ってしまって極寒状態になってしまったのは本当に反省しています)

今回、初日以外はスタッフ宿のようなものはなく、自宅から通っていたのですが体力がギリギリな感じだったので、ちゃんと宿を取って置いた方が良かったかなと思いました。終わった後の数日間、全然疲れが取れなかったので。*1

終わってみて

なんだかあっという間に終わってしまった感じがあります。

準備のはじめの方は「これは余裕で開催準備終わるだろう」と思っていたけどやっぱりいっぱいいっぱいだったし、準備にあまり手を出せず他の2人に任せきりで申し訳なく思ったり、会期中もあまり人と交流することできなかったしで反省することも多くありますが、とりあえず無事に開催して終了できたのは良かったと思います。

とりあえず年末年始にゆっくりと各セッションの動画を見たいと思っています。

*1:若くないのでムリしちゃダメなのを実感

日本OSS推進フォーラム主催の勉強会でPadrinoの紹介をしてきた

http://connpass.com/event/10319/

経緯

2014年7月頃に @miyohide さんから「Padrinoの話を初心者向けにして欲しい」という話をいただきました。
機会があれば自分なりの Padrino 話をしたいなーと考えていた所だったので、二つ返事で引き受けました。

主題

「PadrinoはSinatraベースである」という部分を中心にして話を組み立てていこうと考えました。

フレームワークの選択はプロジェクトの設計や開発スタイルに大きな影響を与えると思います。
Padrinoの設計思想や構造を大まかに知り、フレームワークを選択する際の判断材料にしていただけるような話をすることを目標にしました。

終わって

自分としては、意図した通りの話はできたかなーと感じています。 ただ、結構時間を余らせてしまったので、もう少し掘り下げた話(Rackのこととか)もできたら良かったのかな。

Padrinoが推進していくといいなー。

資料

使ったスライドは以下に置いてあります

https://speakerdeck.com/tyabe/chu-metefalsepadrino
http://www.slideshare.net/tyabe/padrino-42663068

渋谷Ruby会議01 を開催してきた

2014年11月1日に Shibuya.rb 主催の地域Ruby会議である渋谷Ruby会議01を開催しました。 当日の様子などは、後日るびまにレポートが掲載されると思われますし、 公式ページにも資料へのリンク等を追加していくつもりです。

ここでは、開催するまでの経緯とか自分がやったこととかを記録しておこうと思います。

なぜ渋谷Ruby会議01を開催しようと思ったのか

地域Ruby会議であるぐんまRuby会議01札幌市中央区Ruby会議01に参加して、 「Shibuya.rb で地域Ruby会議をしたらどんな風になるんだろう」と思ったのがきっかけでした。

とりあえず「やる」と言ってしまう

たしか、札幌市中央区Ruby会議01から戻ってすぐの2014年2月に開催した Shibuya.rb のミートアップで「やりたいです!」と宣言して、 RubyKaigi2014 が終わって一息ついた頃に開催したいですねーとか言っていた気がします。 ミートアップのときは具体的なことは何も考えていませんでしたが、その週の内にここの内容に沿って RegionalRubyKaigi のメーリングリストに参加して、以下のような内容をメモしていました。

渋谷Ruby会議01 ( ShibuyaRubyKaigi01 ) 

公式タグ: shibuyarubykaigi01 
公式ハッシュタグ: 428rk01 
開催: 2014-11-22頃 (土曜日がいい) 
時間: 10:30 - 18:30くらい 
場所: 渋谷のどこか 
規模: < 200 
参加費: できれば無料 

### 内容 
毎月第 3 水曜に開催している shibuya.rb の拡大版です。
Shibuya.rb メンバーの発表と近隣地域 Ruby コミュニティからの招待講演を行います。

### 実現したいこと
Shibuya.rb にはどんな人がいて、どんな事に興味を持っていて、
どのような活動を行っているのかをコミュニティ外の人に知ってもらいたい

近隣の地域 Ruby コミュニティも、どのような人がどのような活動を行っているのかを知ってほしい

参加した人たちの活動の幅を広げるきっかけにしたい

あとは、ザックリとしたタイムテーブルと、話を聞きたい人のリストアップをしていました。 このとき既に、Shibuya.rb をリブートするきっかけになった shibuyarblunch みたいなことはやりたいと決めていました。

だれとやるか

Shibuya.rb に参加したことのある人と一緒にやりたかったので、積極的に協力していただけそうな数人に「やってみませんかー」と依頼し、 経験豊富な @bash0C7 さんにもアドバイザーとしての参加をお願いしました。 これがたしか3月上旬。

3月下旬にスタッフの顔合わせを兼ねたミーティングを行い、大まかな役割決めや会場の候補を探したりしました。 この時点でシダックスホールが候補に挙がっていて「@joker1007 さんには歌って欲しいよねー」とか話が出ていました。まさか実現するとはw

スタッフ間の情報共有は、雑談と相談などは idobata でまとまった情報は Google Docs を使いました。

どこでやるか

いくつかの候補の中で、シダックスホールが値段的にも手頃で予約も可能だったので、 4月下旬に下見を行い、見積もりを確認後すぐに予約をしました。

日程と役割・会場が決まったので、5月下旬に RegionalRubyKaigi のメーリングリストで開催の報告を行いました。

なにをやってなにをやらないか

事前準備が必要なコンテンツやマルチトラックのセッションなどはしないということと、 ノベルティの作成やスポンサーの依頼などはやらないことは決めていました。 (ただ spice lifeの @igaiga さんが「Tシャツ作りますよー」と言ってくださったのでスタッフTシャツだけは作りました)

なるべくがんばらないという方針。

それでも、これだけはやりたいということ(ランチと他のコミュニティとの絡み)はあったので、 それをスタッフに説明しました。

最終的なタイムスケジュールとコンテンツは7月上旬に行ったスタッフミーティングで決定し、 スピーカーの方への登壇依頼は8月中頃には決定していました。

登壇を誰にお願いするかは、スタッフそれぞれが話を聞きたい人を選出し、1人持ち点4点で投票して得票数多い方に依頼をしました。

ご近所コミュニティ枠への依頼について、Sendagaya.rb は主催者の @tkawa さんがスタッフなのでそのまま依頼をし、 Ginza.rb は第12回 にお邪魔をし、その懇親会で @willnet さんに依頼をしました。

開催までの準備

公式サイトの管理などを Github で行いたかったので organization を作ったりしだしたのが7月下旬。 開催まで少しずつ公式サイトに手を入れて、毎月の Shibuya.rb のミートアップでざっくりとした進捗報告をしていました。

9月の Shibuya.rb のミートアップで募集ページを公開し、メーリングリストに開催のアナウンスを行いました。

また、それぞれのスピーカーの方がどのような方向性の話をするのかを共有したほうがいいだろうということで、 10月上旬にスピーカーとスタッフの顔合わせを行いました。(たしか @onk さんからいただいたアイデアだった)

その他の作業としては、スタッフTシャツのデザインを @saucerjp さんに依頼、制作を @igaiga さんに依頼したりというのを 8月から10月の間で少しずつ進めていきました。

開催当日

少し早めに会場に入り、会場の方から機材の操作説明を受けた後、 アンカンファレンスまでまったりと過ごしてました。 (ちゃんとブリーフィングをしなかったなと反省)

アンカンファレンスは参加者の集まり具合を含めて、ダラダラした感じは予想通りでした。 (もう少し話がしやすい仕組みをちゃんと用意しておけば良かったなと反省)

ランチは会場を離れられなかったので、他のスタッフとピザをデリバリーしてワイワイしながら食べてました。

本編は会場内をうろうろしながら楽しんでました。 全てが希望通りの内容で感動しきりでした。

LTでは全員のお話が聞きたくなってしまったため、 「なるべく巻きで」とお願いしたところ、バトンリレーのようなナイスなチームワークで なんとか大幅な遅れが出ない範囲で収まり感激しました。 (ドラを鳴らす @asachun さんには申し訳なかった..)

感想

自分の反省点など色々とあったりするのですが、 参加していただいたみなさんのおかげで良い地域Ruby会議ができたと思っています。やってよかった。

いまは関わってくださった全ての方に感謝しています。ありがとうございました。

あとはさっさと後処理を行わないと。

RubyHiroba2013のRailsGirls, More!にコーチとして参加した

Yokohama.rbで @publichtml にコーチとしてスカウトされたのが切っ掛けで、初コーチ業をしてきました。

過去にRailsを触ったことがある方で、PCを持参されていなかったので、自分のマシン上で Rails Girls アプリ・チュートリアル を一通り流しつつ、内容に少し補足をするという感じでやってみました。

あと、こっそり Sinatra と Padrino の紹介もしました。

…ん〜難しかった。 最近は、誰かに何かを教えるというシーンが中々無い状況なので、良い経験になりました。

次は(機会があれば)もっと上手く何かを伝えられるようにしたいと思います。

RubyHiroba2013でPadrinoのLTをしてきた

2013年6月2日(日)に行われたRubyHiroba2013に参加してPadrinoのLTをしてきました。 http://rubyhiroba.org/2013/ltthon_time.html

まだまだ認知度が低いPadrinoをAgnosticという特徴に焦点を当てて紹介してみようと思いました。

色々なライブラリを組み合わせてプロジェクトが作れて、こんな感じの組み合わせができるよ。さらに自分でも気軽にライブラリを追加できるんだよってのをサラッと紹介する感じにしたかったのですが、結局よく分からない感じで終わってしまいました。

この辺りは、@udzura さんのるびま記事とか WEB+DB PRESS の記事の方が数倍分かりやすいので、そっちを見た方がいいですね。

最近ようやくギョームでPadrinoを使える機会がやってきたので、そのうちもう少し有用な情報を発信できたら良いなと思います。

p4d 温泉ハッカソンに参加してきた

「温泉とハッカソンを楽しみます」という趣旨のイベントに参加してきました。

「温泉」では無かったし、「ハッカソン」って感じでも無かったのですが、
とても楽しかったので、機会があればまたぜひ参加したいと思いました!

参加メンバー

30歳以上のおっさん8人(内、デザイナー2名)

やってたこと

相変わらず、Padrino を弄ってました。

ログの挙動でおかしいなと感じた部分があったのでプルリクを送りました。

盛大にtravisで失敗していたので、原因を調べてみたら、どうやらminitestの不具合っぽい事が分かり、issuesも挙がっていたので、応援メッセージを送りました。

翌朝には修正バージョンがリリースされていました。素晴らしいですね。

あと、PadrinoAdminの日本語訳で気になる部分があったので、プルリクを送りました。

そんなことやってたら、何も作らないまま2日間が終わってました…。

ただ、周りの人に気軽に色んな事を相談できるのは良いですね! 「minitestおかしいぽいんだけど分かりますか?」とか「プロセス監視にどんなの使ってる?」とか「デプロイどうしてる?」とか相談できたのはとてもありがたかったです!

よかったところ

  • 料理がおいしい!

http://instagram.com/p/YWDMltAdLX/ 朝食

http://instagram.com/p/YT5nRfAdGJ/ 昼食

http://instagram.com/p/YUiZfVAdIy/

にく!

  • 朝食の時間があるので、強制的に早起きになって1日が長く使えた
  • 無線環境が用意されているので、どこでも作業できる感じだった
  • 他の宿泊客がいなかった様なので、気をつかわなくて済んだ

いまいちだったところ

  • 寒かった!雪降ってたし(普通らしい)
  • 周りにコンビニも自販機も無い…。
  • おいしい本格コーヒーを無料で頂けていたけど、お願いする必要があったので、気軽に手に入れられる暖かい飲み物が欲しかった
  • ちゃんとやること決めて行かなきゃダメですね…。

掛かったお金

合計 25,000円程度

  • 交通費 6,600(浅草-日光-宿)
  • 宿泊費 18,000(食事、飲み物込み)

うろ覚えのスケジュール

2013-04-19(fri)

  • 19:45 東武浅草駅改札前に集合(駅弁持参)
  • 20:00 けごん33号で東武日光駅へ
  • 21:50 東武日光駅到着
  • 22:00 タクシーで宿 -> 風呂 -> 寝る

2013-04-20(sat)

  • 07:30 起床
  • 08:00 朝食
  • 09:00 やることを全員で共有して各自モクモク開始
  • 12:00 昼食
  • 18:30 夕食
  • 19:30 風呂
  • 20:30 モクモク…

2013-04-21(sun)

  • 07:30 起床
  • 08:00 朝食
  • 10:00 成果発表
  • 11:50 撤収作業
  • 12:00 チェックアウト -> タクシーで東武日光駅へ
  • 12:30 昼食
  • 13:30 駅周辺をブラブラ
  • 14:03 きりふり292号で東武浅草駅へ
  • 16:05 東武浅草駅到着 -> 解散

まとめてきな何か

最近は p4d に全くコミットできていないので、デザイナにPadrinoの良さを伝えるのとかやりたいですね!

主催の @willnet さん、参加者の皆さん、お世話になりました!また一緒に楽しみましょう!