This page is intended for users in Germany. Go to the page for users in United States.

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

■はじめに

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

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

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

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

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


具体的に言うと……


ここにある、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に渡されるものとします。 また、割引率はパーセンテージの正の整数で表現されます。

というものです!

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

前半の記事はこちら ↓



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

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

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

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


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

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

のが後半回の課題です!


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



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

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



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

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


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

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


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

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


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


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

■最後に


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

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

アジアクエスト株式会社's job postings
5 Likes
5 Likes

Weekly ranking

Show other rankings
If this story triggered your interest, go ahead and visit them to learn more