1
/
5

川島 義隆さんによるワークショップ第1回後半戦!!

■はじめに

こんにちは、アジアクエストです!

この度、アジアクエストの技術顧問に就任された川島義隆さんによる
ワークショップが毎月開催されることとなりました🎉

記念すべき第1回目のワークショップは
1日目を前半、2日目を後半と称した2日間で構成されており

「ETC割引の計算ロジック🚙」

をお題に3人×5チームに分かれて実装をしました。


具体的に言うと……


料金・割引・ETC | 料金・ルート・交通情報 | ドラぷら
東日本エリアの高速道路料金表やETC割引、大口・多頻度割引などの各種割引をご確認いただけます。「E-NEXCO ドラぷら」は、高速道路やサービスエリア情報中心に、ドライブ旅行やお車でのお出かけの、楽しい思い出作りを演出します。
http://www.driveplaza.com/traffic/tolls_etc/

ここにある、ETC割引の計算ロジックを実装します。

  • 平日朝夕割引は実際には後日還元なのですが、ここでは他の割引と同じく即時適用かつ走行距離による還元率の変化はないものとします。
  • 走行記録は、24時間を超えないものとします。

業務ルール

割引には以下の適用要件があります。

平日朝夕割引

  • 平日「朝:6時〜9時」、「夕:17時〜20時」
  • 地方部 
  • 当月の利用回数が5回〜9回 30%割引、10回以上 50%割引

休日割引

  • 普通車、軽自動車等(二輪車)限定
  • 土曜・日曜・祝日
  • 地方部
  • 30%割引

深夜割引

  • すべての車種
  • 毎日0〜4時
  • 30%割引

問題

上記の業務ルールにしたがい、割引率を計算するインタフェースDiscountServiceを実装して下さい。

public interface DisountService {
    public long calc(HighwayDrive drive);
}

走行記録はHighwayDriveクラスで表現され、DiscountService#calcに渡されるものとします。 また、割引率はパーセンテージの正の整数で表現されます。

というものです!

後半は、このお題に対して仕様の追加が行われるということです!
一体どのような仕様が追加されて、どのような雰囲気で実装をしていたのか
覗いていきたいと思います!

前半の記事はこちら ↓

アジアクエストの技術顧問に就任された川島 義隆さんによる第1回ワークショップが開催されました | アジアクエスト株式会社
こんにちは、アジアクエストです! 先日アジアクエストの が社内で開催されたので、そこでの内容を軽く書いていきたいと思います。 まずは講師の川島さんの紹介です。 川島 義隆 ...
https://www.wantedly.com/companies/asia-quest/post_articles/189700



■追加仕様の発表・詳細🎉

前半のワークでの要件には含まれていなかったのですが、
現実のETCには

・圏央道の走行記録は一律20%オフ 💰
・平日朝夕割には適用外区間がある 💰

という割引条件があります。


この2点を追加仕様として

別グループの実装したソースに組み込む 💻

のが後半回の課題です!


別グループのソースに組み込むということでザワザワ……



ETCの割引等の詳しい情報はこちら ↓

平日朝夕割引 | 料金・割引・ETC | 料金・ルート・交通情報 | ドラぷら
ご利用回数に応じて30%・50%還元!無料通行分が付いてお得! ご利用には事前にETCマイレージサービスのご登録が必要です ※既にご登録済みの方は再度お申込みいただく必要はございません。 ※平日とは、月曜日から金曜日までを指します。(祝日を除く) NEXCO東日本/中日本/西日本(NEXCO3社)が管理する地方部の高速道路(東京・大阪近郊は対象外)及び宮城県道路公社の仙台松島道路 ...
https://www.driveplaza.com/traffic/tolls_etc/etc_dis_weekday/

追加要件の詳しい情報はこちら ↓

実践的プログラミングワークショップ - kawasima
対象 1〜3名のグループ3つ以上 手順 1. あるお題に沿って、各グループで設計/実装し、GitHubにプッシュする。 2. 各々、異なるグループのリポジトリをフォークする。 3. 追加・変更案件のお題を出す。すなわち各グループは、別のグループの設計/実装に対して、機能追加・変更を考え実装する。 4. 機能追加・変更の途中で、気づいた問題はIssueとしてメモしておく。他人のコードを見て、前の自分
https://scrapbox.io/kawasima/%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%83%E3%83%97



■ワークショップ中の様子💻

プログラミングにかける時間のうち
一説ではコードリーディングの時間が8割、書く時間が2割とも言われています。
各チーム、他のチームからうっすら聞こえる
「なんだこれは」「こういうの作りたかった……」などの声に怯えながら実装していました!

・各グループからのフィードバック

改修対象となったソースに対する「改修方針の立てやすさ」「読みにくかった点」などがあがりました。


・川島義隆さんからのフィードバック  

川島さんから「回答例にめっちゃ似てて驚きました……カンニングした?」などと言われたチームも!


■川島義隆さんからの感想👨


今回学んでいただきたかったのは、修正が容易になるような設計もそうですが、
教科書に載っているようなパターンをどこにどういうケースで適用するかの肌感覚です。
チーム間で成果物を交換したものに対して、プログラムの修正を加えてみることによって
設計の良し悪しをより強く意識できたのではないでしょうか。ぜひ現場の開発でも
「あっ、これ研修でみたパターンだ!」と、今回の学びを活かしていただければ幸いです。

■最後に


今回は「流しのアーキテクト」川島義隆さんから
アーキテクチャ設計を学ぶワークショップ第1回目の後半でした。
本ワークは今後1年間を通じて様々なテーマを取り扱っていく予定です!

アジアクエストではこのような技術力を高める取り組みを日々実施しています💻
気になった方は是非下の「話を聞きに行きたい」ボタンのクリックお願いします!

Invitation from アジアクエスト株式会社
If this story triggered your interest, have a chat with the team?
アジアクエスト株式会社's job postings
7 Likes
7 Likes

Weekly ranking

Show other rankings
Like Nana Kuratomi's Story
Let Nana Kuratomi's company know you're interested in their content