バイセル Tech Blog

バイセル Tech Blogは株式会社BuySell Technologiesのエンジニア達が知見・発見を共有する技術ブログです。

バイセル Tech Blog

BuySell Technologies 開発合宿参加者レポート (2023年)

はじめに

こんにちは。開発2部の小松山です。

先日「開発合宿」なる楽しい社内イベントがありました 🎉

本記事では参加者である私の目線から、当日の様子や自身がどのような開発をしたか等を感想を交えてお伝えします。

開発合宿の運営メンバー目線での記事も上がっておりますのでぜひご覧ください。

tech.buysell-technologies.com

開発合宿とは

合宿の様子をお伝えする前に、バイセルの開発合宿がどのようなイベントだったかについて紹介します。

今回の開発合宿は「非日常の空間で課題に向き合い、成果に繋がる開発をする」をミッションに、各自がテーマを決めて1泊2日で開発をするイベントです。会場は箱根にある「ホテルおかだ」でした。

www.hotel-okada.co.jp

開発のテーマは自由で、個人・チームで自由に設定可能でした。チーム開発を希望する場合にはチーム構成は参加者が自由に決めて良いことになっていました。

また、合宿の最後には開発物の成果発表をしました。発表内容はCTO・各部長陣によって評価がされました。評価は会社のバリューである「ホスピタリティ」「プロフェッショナル」「クリエイティブ」に沿っているかどうかを基準に行われました。

優れた成果物には7つの賞が用意されており、参加者はこれらの賞を狙って開発を頑張っていました。

合宿の様子

合宿までに準備したこと

開発合宿の1ヶ月ほど前に、運営から合宿での開発テーマを決めるよう連絡がありました。「成果に繋がる」という前提はあったものの、開発のテーマは「自由」となっていたので、かなり迷いました。テーマ選定に迷った場合は運営メンバーが壁打ち相手になってくれるとのことだったので、ありがたく壁打ちをさせてもらいました。最終的に私が選定したテーマは後述します。

また、合宿当日に開発をスムーズに進めるため、事前準備をして良いことになっていました。私はやろうとしていることの実現可能性の調査と、使う想定のライブラリの軽い素振りを事前に行って合宿に臨みました。

合宿当日

合宿当日の様子を写真と一緒に紹介します。

当日朝は新宿駅に集合して小田急ロマンスカーに乗りました。誰も遅刻することなく集まれて素晴らしいと思いました。

宿に着いてから開発をしている様子です。

PCを落とさないよう細心の注意を払いつつ、足湯に浸かって開発をしているメンバーもいました。

めちゃくちゃ気合を入れて(?)開発に向き合っているメンバーもいました。

1日目の開発後はみんなでワイワイしながら夕食を食べました。普段の業務では関わりの少ないメンバーとも交流できてよかったです。

写真はCTOによる乾杯の挨拶の様子です。

夜はボードゲームを楽しんだり、開発をしたり、お酒を飲んだり、温泉に浸かったりなどして各々が自由な時間を過ごしていました。

合宿の最後には発表がありました。みなさんの成果物が「ホスピタリティ」「プロフェッショナル」「クリエイティブ」を体現しているものばかりで素晴らしいと思いました。

私の開発物について

私は「GoでのGraphQLスキーマのLinterを作る」というテーマで開発をしました。バイセルではgqlgenを使ってGraphQLサーバを作っています。gqlgenは開発者が定義したGraphQLスキーマをベースにGoのコードを生成してくれるライブラリです。GraphQLスキーマは開発者が手動で書くのでLinterを入れたかったのですが、適したGoのツールが見つからなかったので自作してしまおう、ということでこのテーマを選びました。

LinterはCLIとして実装しました。以下のような機能が備わっています。

  • GraphQLスキーマを静的解析してルールに沿わない記述を指摘する
  • 設定ファイルを読み込ませて有効化するルールを指定できる
  • 部分的にルールを無視したいところをignoreできる

使い方の例を示します。下記のようなGraphQLスキーマが書かれているファイルがあるとします。

type Mutation {
  # typeのフィールドはcamelCaseのみに制限するルールが有効化されている
  hoge_mutation: Int!
}

上記のファイルに対してLintを実行します。graphql-schema-linterが今回実装したコマンドの名前です。

$ graphql-schema-linter -schema="example/*.graphqls" -setting="./settings.yaml"
# results of analyzer fields-are-camel-cased
example/hoge_mutation.graphqls:3 hoge_mutation must be camelCased.

# Exit Code
$ echo $?
2

ルールに沿っていない箇所を指摘し、コマンドは異常終了します。

Linterの開発にはgqlanalysisを使いました。

tenntenn.dev

ゆくゆくはリポジトリをpublicにして誰でも使える状態にしようと考えています。

おわりに

私自身2021年4月に新卒で入社してからこういったイベントは初めてでしたが、大いに楽しむことができました。 開催前までは「ゆっくり開発ができる良い機会」程度にしか考えていませんでしたが、いざ参加してみて得られた体験はそれ以上のものでした。 事前に期待していた通り集中して開発ができたことはもちろん、オフラインで密にコミュニケーションが取れたことや、みなさんの素晴らしい成果発表で刺激を受けたことなど、得られたものは大きかったです。運営側の事前準備も丁寧でスムーズにイベントの進行がされていました。自分以外の参加者の満足度も高かったように思います。

コロナの影響でこのようなイベントになかなか参加できないまま社会人生活を送っていたので、今回の開発合宿は学生時代の修学旅行のような高揚感がありました。もし第2回が開催されるのであれば是非参加したいです。

最後に、BuySell Technologiesではエンジニアを募集しています。興味がある方はぜひご応募ください!

herp.careers