Internal Hack Day 18参加レポート

はじめに

はじめまして、アスクル株式会社へ4月に入社したのんです。

7月31日から8月2日にかけて開催された、ヤフー株式会社主催の「Yahoo! JAPAN Internal Hack Day18」のハッカソンへ新卒エンジニア4名と先輩エンジニア2名でチームを組み参加させていただきました。その際に、新卒エンジニアとして初心者ながら開発を通じて学んだことや感じたことをまとめていきます。ヤフー株式会社の記事はこちらになります。

昨年のアスクルチーム参加の様子

Hack Dayとは

テクノロジーって、本来は堅苦しくなくて楽しいもの。 アイデア次第で、あんなものもこんなものもつくれちゃう! そんなものづくりの好きな仲間を増やしたくて、 ヤフーはクリエイターのみなさんと一緒に集まってさまざまな活動をしています。テクノロジーフェスとなっています。
(https://hackday.jp/about/ より)

「Internal Hack Day」は2007年からヤフー社内にて開催されているハッカソンイベントです。昨年からアスクル、一休、PayPay、ヤフー、ZOZOテクノロジーズでのZホールディングス共同開催になり、今年はさらにLINEも加わり計6社での開催になりました。昨年に引き続きリモートでの開催となりましたが、非常に多くの方が参加されました。また今回のInternal Hack Dayは、Zホールディングスの計6社が集まるということもあり 「Zホールディングスのシナジー創出のためのイベント」 として開催されました。

今回開発したアプリケーション

今回私たちのチームでは、切手をいつどこででも手書きで作ることができるアプリケーション、その名も「Kitteless」を開発いたしました。チームメンバーである同期の「切手をコンビニや郵便局まで買いに行くのが大変、 手書きで切手を作りたい!」という意見から開発がスタートしました。

Kittelessでは荷物に応じた金額の切手の購入を行い、支払い後に切手の代わりとなる9桁の切手コードが発行されます。

お客様画面

お客様画面では主に切手の購入と購入履歴の確認ができます。

  1. 購入したい切手の金額を指定する。
  2. PayPayを利用して切手の支払いを行う。
  3. 発行された9桁の切手コードを見本画像どおり送りたい郵便物に書く。
  4. 記入した手書きの切手をカメラで写真に撮り、認証する。
  5. 認証が完了したら郵便ポストなどに投函することで発送完了。

切手コードの認証にはCLOVA OCR を利用して照合しました。決済にはPayPay を利用し、 キャッシュレスの促進を目指しました。

今回決済に利用したPayPayはPayPay for Developers のAPIを利用しての開発となります。実在のアカウントや実際の決済画面ではございません。

郵便局側の管理画面

投函された郵便物を郵便局側が受け取った後に、切手コードが有効かどうかを郵便局員が確認します。

  1. 郵便物の回収
  2. 回収された郵便物に書かれている切手コードを郵便局側の管理画面からカメラで写真を撮り認証を行う。
  3. 認証が完了したら支払い済みの郵便物として郵送を開始する。

このKittelessでは、今回のテーマである「Zホールディングスのシナジー創出」からアイデアを煮詰めていき、PayPayやLINEなどのキャッシュレスサービスと我々アスクルがもつeコマースの知見を掛け合わせることによるシナジー効果を生むことで作り上げていきました。

参加のお誘いから参加までの経緯について

当初、社内でInternal Hack Dayへの参加呼びかけが行われていた時に私たちは、新卒社員の研修を行っている時期でした。私たち新卒エンジニアメンバーは、いまだエンジニアとして業務に携わった経験がないことからくる自分たちの技術力不足の不安と、今まで参加経験のないハッカソンイベントへ参加するという心理的なのハードルの高さからInternal Hack Dayへの参加に対して二の足を踏んでいました。ですがエンジニアリングマネージャーから新卒エンジニアに対して、Internal Hack Day参加のお誘いがありました。当時新卒研修を担当してくださっていた採用人事の方からの後押しもあり私たち新卒エンジニア計4名が参加の意思表明をしたのでした。

本番に向けての準備

参加の決意をした後にチームの顔合わせを兼ねた参加に必要な作業を行うため、初のミーティングが行われました。新卒エンジニアメンバーは先輩エンジニアに頼りきりの状態ってばかりではなく、先輩エンジニアの後押しもあり自分たち主導で進めていきたいという決意のもと、チームリーダーを新卒メンバーから選出しました。

本番当日にどのようなアプリケーションを開発していくのかをチームメンバーの中で話し合っていきました。 各者さまざまなアイデアが出ましたが同期の「手書きで切手を作りたい!」というアイデアが チーム内でかなりの衝撃を起こし、実際に開発を行うのも楽しそうだという思いから満場一致の採用となりました。

そして本番当日の開発に向けての準備として内容を煮詰めていきました。チーム内で議論を重ねて行きKittelessの詳細な設計や開発の流れ、GitHub内でのissueを利用したタスクの切り分けなどを進めていきました。準備が進んでいくにつれ、多くのことを先輩エンジニアから教えていただいたことで開発への不安はだんだんと期待に変わっていきました。

HackDay当日

ハッカソン当日の朝に、チームメンバー6人の役割分担を行いました。今回開発したKittelessは実際のお客様が利用する画面と郵便局員が利用する管理画面、そして両者とやりとりを行う管理システムという大きく分けて3つの開発を行う想定で開発がスタートしました。

私たちのチームには先輩エンジニアが2名いるということで、先輩エンジニア1名と2名の新卒エンジニアでチームを組みました。それぞれフロントとサーバサイドに分かれて各自開発を進めていきました。自分はフロントチームとして、お客様が利用する画面と郵便局員が利用する管理画面の内部の処理やサーバサイドチームが作ってくれたAPIを呼び出して実際の表示に流し込む処理の開発を行いました。実際のエンジニアとしての業務にまだ入っていなく、1つのアプリケーションを0からチームで作り上げていくという経験も少なかったため、先輩エンジニアから教わるチームでの開発のノウハウすべてが新しい知識でした。同期との開発部分の分担もチーム開発ならではの楽しさがあり、自分が実装した部分がメンバーの開発した画面で動いた際の感動も大きかったです。

Internal Hack Day 18での学び

ハッカソン初参加により、多くのことを学んだのでまとめておこうと思います。

  • 設計をしっかりと行いどのように開発を進めていくのかを事前にしっかりと固める。
    • チーム開発では特に全員の認識のズレにより難航してしまったり、うまく連携が取れなくなってしまうので重要。
    • そもそも何を開発すればいいのかが分からなくなることを防げる。
    • 実装に迷った場合設計書を確認することにより、迷いなく書き進めることができる。
  • GitHubのissueなどを利用しタスクを切り分けチームの動きを決めておく。
    • 限られた時間での開発を行う際に、進捗の管理や開発が順調に進んでいるのかを確認できる。
    • 「今自分はなにをすればいいんだろう」となってしまうのを防げる。
    • 難しそうに見える開発も、細分化することにより1つずつ着実に進めていくことができる。
  • 分からないことを共有/質問する
    • 分からず完全に手が止まってしまった際に話すことで頭の中が整理される。
    • 他にも同じ内容で困っているチームメンバーがいる場合や、先輩エンジニアから新しい学びを得ることができる。
    • 自分の状況をチーム内で可視化と共有できる。

終わりに

今回のハッカソン参加により、先輩エンジニアから数えきれないほど多くのことを学びました。 それらは、今まで学生の間は趣味として開発をしてきた自分にはない考え方や知識だったので自分自身とても楽しかったです。またチーム内の人数が非常に少なかったこともあり先輩エンジニアへ質問し放題というとても貴重な環境でした。大学での研究開発と業務での開発の違いを学ぶ機会でもあったため、今後の開発での幅が広がったようにも感じました。今回のInternal Hack Dayへの参加をまとめると「楽しかった!」に尽きます。今後も楽しみながら技術に触れていきたいです。

チームのみんな、背中を押してくださった人事のみなさま、Internal Hack Dayに関わるすべてのみなさま、本当にありがとうございました!

ASKUL Engineering BLOG

2021 © ASKUL Corporation. All rights reserved.