こんにちは、21年度新卒入社の大森です。
メディアドゥ社内外での勉強会を企画するTechDoチームの新たな試みとして
社内プログラミングコンテストMediHack Vol.1 を開催いたしました!
今回の記事ではどんな内容を実施したのか、レポートしていきます。 また、実際にコードを提出し発表会に登壇していただいた方々にも工夫点などをお聞きしましたので、そちらも合わせて読んでいただけると幸いです。
MediHackとは
メディアドゥ社内でコーディングの練習と意見交換ができる場です。
指定の期間内にテーマに沿ってコーディングを行い、アウトプットを蓄積していくことで、 コードの書き方や設計に関する知見を社内で深めていくことを目的としています。
MediHack心得
- バグや改善点は遠慮なく意見を出しましょう
- 他の参加者と投稿されているコードに敬意を持ちましょう
MediHack vol.1 テーマ
第一回のテーマはレストラン・シミュレータでした!
具体的なルールは以下になります。
開催期間
7月1日~ 8月16日
ツール
- 開発言語: Go
- 実行形式: CLI
前提
- レストランには価格がそれぞれ異なる料理が複数用意されている
- 料理の名前、金額、作れる数、がそれぞれ設定されている
- お客様には予算が決められている
- お客様は予算の範囲で自由に料理を注文できる
- お客様はレストランに注文した分の金額を支払う
実行手順
- シミュレータ開始時にお客様の予算を任意で与える
- お客様は予算の範囲でランダムにレストランの料理を注文する しかし売り切れた料理は注文できない
- 注文が終わった後、更に予算に余裕があれば、客は追加で注文できる 追加で注文するかどうかはランダムに決定される
- 注文された料理の一覧と、予算から合計金額を引いた値を出力する
データ永続化
- 伝票 ID から注文履歴を表示できる機能を作る
- 注文された料理の一覧を伝票で保存する
- 伝票は ID で管理する
- 伝票 ID を入力すると、該当する注文の履歴を表示する
登壇者紹介
MediHackではコードを提出していただいた方を対象に、最終日の発表会へ登壇していただきました。
ここで、登壇者の皆様からいただいた工夫点や感想を紹介します!
松本さん
コンセプト
シンプルに作る
工夫した点
サードパーティ製パッケージを利用せず、標準パッケージのみで実装しました。
コードを大きくすることは考えないようにして、小さく作ることに集中しました。やってみた所感
あえて業務とは異なるパッケージ構成、パッケージ選定をして実装しました。
業務で調べない領域の情報を得たり、過去に読んだ本を引っ張り出して手を動かすきっかけになりました。
角田さん
コンセプト
機能拡張したい時も保守しやすい形を目指しました。
工夫した点
DDD、クリーンアーキテクチャの考え方を意識したパッケージ構成にしました。
やってみた所感
業務ではなかなか使わない脳みそを使ったので楽しかったです! 他の方の実装も大変参考になり、すごくいい取り組みだと感じました。
濱口さん
コンセプト
Go で業務のバックエンドサーバを建てる際の決定版となる設計を作る。
工夫した点
値生成に関する責務など、それぞれの役割に適したインターフェースの命名等を規格化しました。
やってみた所感
テーマに対してやりすぎた実装量かなとは思いましたが、その分テスタビリティと変更容易性を実感することはできましたので、実際のプロジェクトではここで得られた知見を、よりフィットさせて価値を出していければと思います。
開催後アンケートの結果
次回以降の開催に活かすため、参加者の皆様には開催後アンケートにご協力をいただきました。
その結果、「今後このようなイベントが開催されたら参加したいですか?」という項目に関して、
「また参加したい」と回答いただけた割合はなんと100%でした!
また、本イベントの満足度の項目でも5段階中4以上の回答が100%という結果になりました!
以下に感想の一部を抜粋いたします
業務と少し離れたプログラムについて話を聞く機会はなかったので、楽しかったです。各人のこだわりがみえたのもよかったです。
勉強になった、お題の絶妙なバランス、参加者運営者の業務を割いてくれた時間に感謝
こういうエンジニアがわいわいするような会が開かれてよかったと思います。
今回は新たな試みでしたが、ご参加いただいた多くのエンジニアの皆様から満足との回答をいただけました! その他、改善点や課題点などのご意見いただいた点もふまえ、次回以降は更に多くの方に参加していただけるよう改善していきます!
MediHack Vol.1 にご参加いただいた皆さま、本当にありがとうございました!
おわりに
ここまでご覧いただき、ありがとうございました!
MediaDoではテクノロジーでデジタルコンテンツの流通に貢献するため、 エンジニアの技術力向上やコミュニケーションを促進する様々なイベントや勉強会を開催しております!
また、当社ではエンジニアがパフォーマンスを最大限発揮して働けるよう、これ以外にも様々な制度が用意されております。 興味ある方は是非、当社採用ページをご覧ください!