リリースフローを整えました(git-pr-releaseを導入し、GitHub Actionsで自動化したお話)
こんにちは、昨年の10月に新卒未経験でエンジニアとして入社させていただいた渡辺です。
いつか自分の番が来てしまうとビクビクしていましたが、ついにその時がきてしまったので、半人前ながら先月行った"git-pr-releaseをGithub Actionsで自動化した話"について書いてみようと思います。
概要
自社プロダクトの”シンシアレジデンス”では、以下のように複数の開発環境に分けて、リリースを行っています。
- 開発環境
- staging 環境 (developブランチ / 動作確認環境)
- production 環境 (本番環境)
- ローカルで開発を行い、トピックブランチを作成する
- 上記のブランチからdevelopに対して、Pull Requestを作成する
- トピックブランチ→developへのPull Requestをsquash mergeする
- developはstaging環境にデプロイされるので、そこで動作確認をする
- developからmainへmergeし、CIでproduction 環境へデプロイする
課題背景
- staging環境からmainへマージする際、release PRを作成し各開発者にstaging環境で動作確認をしたかどうか、逐一コミュニケーションを取る必要があったため、コストがかかり且つ面倒だったこと。
- 新規にstaging環境にマージされた内容が何か一目でわからず、意識していないとstaging環境に変更が溜まりがちであった
→一回のリリース量が多すぎてしまう(障害発生時に原因究明が難しい…)
今回、上記課題を解決するためにGitHub Actionsを利用してgit-pr-release の自動化に臨みました。
手順
Github Actionsをリポジトリに追加する
.github / workflows ディレクトリをリポジトリ上に作成する。
上記ディレクトリ配下にgithub-actions-demo.ymlを作成する。
(ファイル名はなんでもOKで、自分はgithub-actions.ymlに設定)
(詳しくは、GitHub DocsのQuickstart を参照してください。)
docs.github.comgithub-actions.yml に自動化するワークフローを追加する
push
イベントが発生したときにワークフローを実行するように設定。
(各ワークフローをトリガーするイベントについてはこちら↓)
jobs下に、job_idと それぞれのjob_nameを設定する
id: create-release-pr
name: Set up Ruby 2.6
設定したJob_idとjob_nameはGitHub Actionsで表示される。
Actions内のworkflowに行くと、設定したJob_idとjob_nameを確認することができる。
TZの環境変数を設定する
デフォルトのままだと、日本時間でないため、TZ: 'Asia/Tokyo'を追加する
Rubyのセットアップ
git-pr-releaseのセットアップ
GIT_PR_RELEASE_BRANCH_STAGINGには、masterブランチにマージするブランチを設定する
GIT_PR_RELEASE_LABELSに文字を追加すると、release PRにラベルが追加される(なくてもOK)
git-pr-release --squashとすることで、squashマージされたPRを検知するように設定
(弊社ではトピックブランチからdevelopへはsquash mergeをしているため)
上記の設定がうまくいっていれば、トピックブランチをdevelopにsquash mergeをすると以下のようなrelease PRが自動的に作成されるようになります。
補足
もともと、git-pr-release上で git-pr-release -squashを行うと同じ項目のチェックボックスが複数生成されてしまうというバグがありました。
これをチームのエンジニアが修正PRを本家のオープンソースに出してくださったことで、正常に動くようになりました。
課題解決
git-pr-releaseを追加し、GitHub Actions で自動化したことにより、以下の点で作業効率が上がりました。
- developにトピックブランチをpushするだけでrelease PRが作成されるため、作業時間の短縮につながった
- チェックボックスと開発担当者が表示されるおかげで、staging環境でだれがどの動作確認したかが一目でわかるようになった
- staging環境にある変更内容がリスト化されて表示されることで、変更内容をstaging環境で溜めすぎず、コンスタントにリリースを行えるようになった
終わりに
半年前に入社した当初はVue.jsもRuby on Railsも触ったことのない私でしたが、なんとか半年間周りの先輩方のおかげで食らいつくことができています。また、最近では上記のようなワークフロー周りの整備だったり、スクレイピング、などなど様々なことに挑戦しています。
弊社ではフロントもバックエンドも関係なく、様々なことに挑戦させていただける環境です。一緒に開発してくださる方をお待ちしています!!
参照
git-pr-release with GitHub Actions
Github Docs
git-pr-release
シンシアに入社してやろうとしてること
こんにちは。この度、シンシアにジョインすることになった井上です。いわゆる、入社エントリーということで、これまでの自分の経歴と、これからの仕事に対する抱負などを書いていきたいと思います。
事業課題を技術で解決することが好き
自分はシンシア代表の徐と同期で2014年に修士で大学院を卒業し、パッケージソフトウェアの会社に新卒で入社しました。そこでは、基盤チームで Elasticsearch のための共通ライブラリを書いたり、 CI/CDの基盤を整えたりしました。インフラエンジニアに近い働き方をしていました。
その後、仮想通貨を始めフィンテック領域の会社に転職したり、フリーランスをしたり、様々な会社でソフトウェアエンジニアとして仕事をしてきました。様々な企業で事業で必要なことを幅広くネットワーク・ブロックチェーン・インフラ・セキュリティ・サーバー・フロントを問わず、フルスタックに研究開発までいろいろ行ってきました。
自分は昔から兎にも角にも技術が好きで、新しい技術を学べる環境で働くのがとても好きです。プライベートでもOSSのソースコードを読んだり、新しい技術を学んでいる間は、高いモチベーションで開発ができます。事業課題をオープンになっている技術を使い(必要ならば、OSSライブラリにPRを飛ばしながら)解決していくことが、自分がとてもエンジニアとして働いていて楽しいと感じています。
シンシアに入社した経緯
元々、代表の徐から創業の経緯や、今どんな感じなのか、という話を聞いていました。特に、下記の記事でも記載あったように、不動産業界ではまだまだ手動で、ないし人手に頼ったオペレーションの慣習が多く残る業界だな、という印象を受けました。
そういった分野などで、特に、徐は代表であると同時にエンジニアでもあったので、こういった課題はいかにエンジニアリングによって解決可能であるのか、について力説をしていました。
そういった中で、自分でも不動産業界について調べていくうちに、不動産業界とは、民法によって規定された売買契約や賃貸借契約が基本にあり(注1)、それは全日本国民が主体者となって自由に行われている市場(注2)があり、そこをテックの力でレバレッジさせていくことができるならば、それは楽しそうだ、と思うようになり、入社を決意しました。
(注1: より正確には、民法が一般法でその上に宅地建物取引業法が特別法として乗っかっている構造)
(注2: 相対取引すら可能な市場であり、例えば建物を知人・友人に売るのであれば、価格の合意さえ取れれば、自分達でその取引を簡潔させることすら可能。ただこの場合は登記等に注意する必要あり)
これからのやりたいこと
不動産では IT 化が遅れています。また、不動産と大きく括ったとしても、そこで述べられている業務は単純な賃貸や売買の媒介の他にも、様々な業務があります。 その中で、今注力しているシステムは主に以下の2つで、それぞれについて軽く説明をしたいと思います。
シンシアレジデンスは不動産物件を扱うサイトです。このサイトを、綺麗に、使いやすく、さらに表示の速さを実現するのは、ほぼ純粋にエンジニアリングの課題で、とてもやりがいがあります。 特に、このサイトはメディアとしての性質を持つため、 スピードアップ等が本質的に重要になるプロダクトであり、これをいかに実現するかがエンジニアリングの腕の見せどころかな、と考えています。
社内CRMは、仲介など、お客様とやりとりを行っていくうえで、利用していくシステムです。特に、仲介業務は、不動産会社の基本ともいえる業務であり、それを行うシステムを自社で作り込んでいくことで、弊社の理念である、「お客様のライフステージをなめらかにする」という思想を、より実現しやすいしくみづくりができると考えています。
最後に
不動産業界には、課題がたくさんあり、シンシアは技術によって、これらを解決しようとしています。分かるとおり、簡単ではなく、しっかり時間をかけてとりくむものです。まだまだ人が足りないので、もしご興味を持った方がいましたら、是非一緒に開発していきましょう。
SES企業から自社プロダクトの事業会社に転職してみて
あいさつ
はじめまして、株式会社シンシアで不動産サイトのXincere Residenceと自社CRMの開発をしているソフトウェアエンジニアの望月と申します。
2022年1月にシンシアに正社員として入社しまして、フロントエンド・サーバーサイド・インフラまで、プロダクトに関する領域全部を担当させていただいています。 入社してからそろそろ2ヶ月が経過しましたので、入社エントリを書いてみました。
今回の入社エントリでは、
- 転職の経緯
- シンシアを選んだ理由
- 実際に入ってみて
という内容で、弊社の魅力をお伝えできればと思っています。
転職の経緯
自分は文系の学部卒として2019年4月にSES企業に入社し、システムエンジニアとして働きました。最初はJava Servletの研修から始まり、テスター、そしてシステムエンジニアというSIerの典型的なキャリアを歩んでいました。
配属先の現場では中々コードを書く機会に恵まれず、プログラムコードを書ける環境へどうにか行けないか考えていた頃に、マイクロサービスの開発案件に運良く参画させていただきました。 そこではフロントエンドにNext.js、バックエンドにGolangやNode.js、基盤にはAWS EKSなどかなりモダンな技術を採用していました。そのため、毎日刺激的な開発を経験することができ、ソフトウェア開発の面白さにどんどん魅了されていきました。
しかしながら、あくまでも協力会社のメンバーとしてアサインされていたに過ぎなかったので、立場的にどうしても受け身的な姿勢になってしまう部分があり、主体的にプロダクトを作り上げていくことができない役割のままでエンジニアとして成長できるのだろうかという危機感がありました。 自分のアドバンテージとしては精々モダンな技術スタックでの開発経験があるというだけ。それに加え特定の分野に対して「触ったことがある」程度でしかなく、その分野に関する深い知見があるわけでもなかったので、世の中を見渡すと自分の価値がちっぽけなものにしか感じられませんでした。
ソフトウェア開発自体は楽しく、これに関する仕事を続けられるようになりたいと考えていました。 技術的にまだ秀でた何かを持っていない現状で、今後も市場で価値あるエンジニアとしているためにはどんなことが必要なのかを考えました。技術一辺倒で勝負するのではなく、技術×事業をエンジニアリングする能力、つまり事業の課題をソフトウェアを使っていかに解決するか判断・実行できる能力を獲得できれば、自分も市場価値が上がるのではないか?と思うようになりました。 そんな経験をできる環境に身を移そうと思って転職活動を始めました。
シンシアを選んだ理由
自分が転職活動をするなかで、会社を選ぶ軸は下記の2つでした。
- 自分達が主導して開発をしたい、かつ事業をエンジニアリングする技術者になりたいので事業会社であること
- エンジニアとしての問題解決能力、技術の幅を広げられるような経験ができること
転職活動をしていくなかで、代表の徐さんに声をかけていただき、カジュアル面談→2,3回ほど副業という形で業務体験させていただく中で他のメンバーとも交流した後に入社を決めました。
決めた理由としては、主に2点あります。
「 不動産業界で一番開発力のある組織を作りたい」というエンジニアでもある代表の目指す組織像への共感 開発力が高い=PDCAサイクルを高頻度で回せるならば、エンジニアとして様々な領域にチャレンジする機会が増えるし、不動産という市場が大きな業界の中でスタートアップとして飛び抜けた組織になるために必要な要素だろうという納得感がありました。
プロダクトにとことん向き合って開発できる環境 事業会社に所属することは、請負でソフトウェア開発をするよりも事業に関する解像度が圧倒的に高くなり、事業の課題と向き合いながら開発できるので、自分の目指す「事業をエンジニアリングできる技術者」に非常にマッチしていると感じました。 この点は他の事業会社にも言えることかもしれませんが、弊社の特徴として、エンジニアが企画〜開発〜運用〜分析・マーケティングまで、プロダクトに関する領域すべてに関われるので、本人の能力次第でやれることがどこまでも広がります。代表がエンジニアということもあって事業×エンジニアリングという両輪をなしている方がいらっしゃることも魅力的に映りました。
実際に入ってみて
入社前から副業という形で携わっていたので特に入社後のギャップはなく、むしろ想像以上に楽しみながら仕事ができています。
入社して最初に任された仕事は、検索エンジン強化のためのエラスティックサーチの導入でした。従来のシンシアレジデンスでは、掲載物件数が少なかったためSQLベースでの検索をしていましたが、事業の拡大に伴い物件数が増加し、より検索速度・精度が重要になっていました。 そのため、エラスティックサーチを導入し、 * 検索速度の向上 * 検索軸の強化(特徴や金額帯などの軸を追加) をすることで、サイトを使用するお客様のUXを向上させようとしました。
エラスティックサーチの導入から経験できたのは、このフェーズの事業ならでは経験で、まさに0->1でプロダクトを開発している実感がありとてもよかったと感じています。
また、他のエンジニアとしての技術の研鑽に対する考え方や、技術選定、コードの設計論などを議論することを通じて、エンジニアとしての技術に対する考え方が大変勉強になっています。
このように、ユーザーにどのような価値を提供していくかを常に考えながら開発していくカルチャーがあること、エンジニアとしてのロールモデルである社内のエンジニアの存在によって、エンジニアとして圧倒的な成長を実現できる環境にいると実感できています。
最後に
シンシアは不動産というレガシーな分野が多く残っている業界をエンジニアの力で作り変えていこうとしている会社です。 ですが、そのためにはまだまだ人手が足りていない状況です。 「エンジニアとして圧倒的成長を成し遂げたい」、「事業をエンジニアリングしたい」そんな思いがありましたら、シンシアはうってつけの環境ですので、一度遊びに来てみてください!お待ちしています!
シンシアの募集はこちら
代表の徐さんのインタビューはこちら www.wantedly.com
開発組織として成長し続けるために
こんにちは、株式会社シンシアの徐です。
気温がだいぶ低くなり、技術系のアドベントカレンダーをどうしようかなと頭を悩ませる時期になりましたでしょうか。
今回は、社内で毎週開かれる勉強会について紹介しようと思います。
シンシアが目標としている”プロダクト・事業に対してコミットできるエンジニア”を目指して、開発組織として、どのように取り組んでいるかをお伝えできれば幸いです。
様々なバックグラウンドのメンバー
現在、開発チームは中途メンバーが80%以上を締めています。
自分の開発経験に関しては、以前
で紹介させていただいたので、それ以外のメンバーのの開発経験を記載すると
- シリコンバレーにおけるスタートアップ企業での開発経験
- 中国スタートアップにおける起業経験
- 日系大手企業での開発経験
- スタートアップでのCTO経験
など、それぞれのメンバーが豊富な経験を持っています。
インフラ構築が得意なメンバーもいれば、フロントエンド開発が得意なメンバーなど得意領域もそれぞれ異なり、日々そんな開発メンバーは互いに補完し合いながら開発をしています。
フルスタックな開発体制
様々なバックグラウンドを持ちながら、得意領域が異なるメンバーが在籍しています。そのようなメンバーが揃うシンシアの開発組織では、”プロダクト・事業に対してコミットできるエンジニア”を理想に掲げています。日々の開発業務では、基本的に機能ベースに担当が割り振られ、フルスタックな開発体制をとっています。
これは文字通り
- (目的となるKPIを意識して企画を考える)
- 必要なインフラを整備する
- バックエンドでデータ設計をする
- バックエンドでロジック・エンドポイントを開発する
- フロントエンドでAPIクライアントを開発する
- フロントエンドでUIを開発する
- リリース確認、リリースする
- (狙ったKPIが上がってるか確認する)
と、企画・インフラ構築からフロント実装までほぼ一人で開発します。
※()内は時と場合による。
もちろん、前述したとおり、得意分野は違います。そのため、部分部分で得意な人にパスしたり、教え合いながら成長しています。
※ インターン生のインタビュー記事が参考になると思ったので掲載します。
社内勉強会について
”プロダクト・事業に対してコミットできるエンジニア”となるためには、”エンジニアリング”以外のこと、つまり、サービスグロースに関連する”他の要素”を学ぶ必要があります。
そのため、開発組織全体で共に成長することを目指し、毎週30分〜1時間程度勉強会が行われています。
この勉強会は、テーマを決めてメンバーが持ち回りで順番に毎週発表し、一周して勉強が足りないと思えばもう一周するような形をとっていて、十分だなと全員が納得するまで特定のテーマに関して勉強し続けます。
例えば、過去にあった例でいうと
などなど、エンジニアリング以外にもマーケティング関連のことを勉強しました。
※ もちろん、不動産仲介として宅地建物取引士の資格を取りに行こうとしている開発メンバーもいます。
プロダクトグロースさせるべく、”プロダクト・事業に対してコミットできるエンジニア”となるように、技術に関することも・技術以外の事業に関することも、エンジニア全員で知識を身に付けられるようにしたいと一致団結して知識を貪欲に吸収しようとしています。
最後に
弊社では、”プロダクト・事業に対してコミットできるエンジニア”を引き続き募集しております。
一緒に日本の不動産業界を変えていきたい方・サービスグロースに興味ある方・圧倒的成長をしていきたい方とぜひ一緒に働いていきたいです。
何卒、よろしくお願い致します。
グローバルスタンダードなエンジニアリング組織を目指して
こんにちは、“社長兼エンジニア”と“エンジニア兼社長”、どちらの言い回しが適切かいつも判断がつかない徐です。ちなみに、未だに「社長」と呼ばれることに慣れません。これを見た方はぜひ、社長と呼ぶのはやめて、フランクに接していただけると嬉しいです笑
いままでの記事では、
- 会社を創業してから直近までの経緯
- シンシアが向き合っている不動産業界の課題(+ 技術の概要)
を書いてきました。
今回は、自分が今まで歩んで来たキャリア、及びそれを踏まえて社内のエンジニアリング組織が現在どのような開発体制か、どのような組織を目指しているかを書こうと思います。
メガベンチャーからスタートした、エンジニアとしてのキャリア
大学時代、人工知能(進化型ニューラルネットワーク)の研究に明け暮れていた自分は、家族にも心配されるほど“就活”をせず、研究者になろうと論文を書いては学会で発表をする、を繰り返していました。
しかし、登録していた数少ない就活媒体でとある日系メガベンチャーのスカウトメールを受け取りました。たまたまその時間が暇だったので、説明会を聞きに行ったら引き込まれ「この会社かっこいいな」と思い、そのままWebエンジニアとしてその企業に就職しました。
それまで研究活動しかしておらず、Webエンジニアの“W” の字もわからない中で就職したため、入社当時は周りの同期に劣等感を感じていました。とにかく多くの仕事をこなそうと必死に働いた結果、1年ほどしか在籍しなかったにもかかわらず、いまでも当時の上司には「3年分は働いたじゃない?」とからかわれるくらい、とにかく多く働き、多くのことを学びました。
そんな充実した新卒生活を送っていましたが、“3年分働いた”おかげでたくさん成長し、そして「もっと新しい技術を学びたい」「バックエンド以外の開発・アプリも含めて全部できるようになりたい」と思い、転職を決意しました。
度重なる転職と得られた経験
1度目の転職から、起業を除き4回転職し、合計5つの会社でエンジニアとして働きました。
それぞれ、分類すると
- 日系フィンテックベンチャー(5人程度)
- 日系医療系ベンチャー(30人 -> 200人の上場規模まで)
- 日系メガベンチャー(3000人程度)
- 日系ビジョナリー・カンパニー(4.7万人程度)
- グローバルテックカンパニー(世界中にいるため従業員数不明)
と、それぞれ規模感はまったく異なりました。
中でも、医療系ベンチャー企業(現在上場企業)での事業をグロースさせた経験・会社が大きくなり社員が増えていくのを中から見ていた経験と、グローバルテックカンパニーでの言語・時差を跨いで仕事をした経験はとても貴重でした。また、日系ビジョナリー・カンパニーでは人事システムの開発プロジェクトだけではなく、エンジニア採用としても仕事をさせていただきエンジニア“以外”の業務経験も加わり、本当に色々な経験を積むことができました。
いまの開発組織と目指している方向性
いま、開発組織はフルタイムと副業・インターン生、合計6名が中心となっています。自分の経験の中では、まだまだ規模が小さいフェーズです。しかしながら、外部のソフトウェアエンジニアの友達に現在開発しているものを紹介すると、必ず「この人数でこんなに開発してるのか」と驚かれるほど、多くのものを日々開発し運用しています。
今の組織内には、シリコンバレーでの開発経験・海外での起業経験を持つメンバー、大企業でのテックリード・大規模なインフラ運用経験を持つメンバーなど、経験豊富なメンバーばかりです。社内のコミュニケーションは基本的に日本語で行われているものの、時折英語でコミュニケーションを取るような場面もあります。
スタートアップの特に0->1フェーズにおいては、利用者を増やすことが重視されます。アイディアを出しては実装し、検証してはまた次のアイディアを出す、PDCAを高速に回すことがプロダクトを開発をする上ではとても重要だと考えています。大企業の開発体制ほど堅牢なシステムは必要ないですが、メンバー全員でデータベースの設計や基盤構築はかなりしっかり考えながら、開発体制を運営しています。
現在開発しているシンシアレジデンスは0->1フェーズのプロダクトであり、まだまだ開発したいものが多くあります。もちろん、利用者が増えるに従い、プロダクトの質もどんどん上げていこうと考えています。プロダクト、そして企業のグローバル展開も見据えて、グローバル企業での経験をもとに現在どうあるべきかを考え、それに突き進む形で設計・開発、組織運営を日々試行錯誤しながら行っています。
最後に
長期的な視点でばかりここまで書いてきましたが、まだまだ一緒に戦うメンバーが足りません。シンシアでは、一緒にプロダクト・会社を作るメンバーをインフラ・バックエンド・フロントエンド・デザイナーなど全方位で募集しております。
より詳しく自分の経歴や創業までの経緯、サービスの特徴などを知りたい方は下記よりご覧ください。
もう少し詳しく話を聞きたいという方も「話を聞きに行きたい」から気軽に問い合わせいただければと思います。ぜひ、よろしくお願い致します。