Skip to content

Instantly share code, notes, and snippets.

Junichi Kato j5ik2o

View GitHub Profile
@j5ik2o
j5ik2o / gist:2970973
Last active Jul 6, 2020
ペアプロの心得
View gist:2970973

ペアプロの心得

休憩をとる

1.定期的に休憩をとっていますか? ペアプログラミングは、精神的な体力を消耗します。定期的に休憩をとってリフレッシュすることがとても大切です。

謙虚になる

2.「色々な実装方針がある」という認識がありますか?

@j5ik2o
j5ik2o / gist:5660744
Last active Apr 1, 2020
Scala 2.10 & SBT & JRebel & IntelliJ IDEAの環境構築方法
View gist:5660744

できること

  • JRebelを利用すると、アプリケーションの再起動なしで実行中のアプリケーションに加えた変更を即座に反映することができます(ホットリローディング)。まるでPHPのようにサクサク書けるッ!
  • Scala開発者にはライセンスが$0で提供されます。Javaで利用する場合は購入してね☆彡

前提

以下がインストールされているものとする。

View gist:e7d1916d32c05660738e54afbb0d004a

[info] Reapplying settings... [info] Set current project to reactive-aws-clients-project (in build file:/home/parallels/Sources/reactive-aws-clients/) WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.twitter.jvm.Hotspot (file:/home/parallels/.cache/coursier/v1/https/repo1.maven.org/maven2/com/twitter/util-jvm_2.12/20.3.0/util-jvm_2.12-20.3.0.jar) to field sun.management.ManagementFactoryHelper.jvm WARNING: Please consider reporting this to the maintainers of com.twitter.jvm.Hotspot WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2020-03-27 04:55:45.069-0700 info [finagle] Using bridged scheduler with 4 workers 2020-03-27 04:55:45.074-0700 info [finagle] Finagle version 20.3.0 (rev=e3fd6d1bd88c9ed7edeb98a6598e23800924c633) built at 20200308-110321 2020-03-27 04:55:45.740-0700 info [SonatypeService] sonatypeRepository : https:

View 割り勘ドメインのワークショップ.md

「割り勘」ドメインのワークショップ(WIP)

成果物

  • チームで設計に合意すること

副産物

  • ドメインモデル図
    • モデル名を書いた付箋を模造紙に貼る
View 自動販売機.md

いまだかつてない自動販売機をかんがえる

ビジネスの概要

売り切りの通常の自動販売機 モデルではなく、サービスとしての自動販売機を考える。サービスの特徴は以下。

  • 利用者はあらかじめ会員登録が必要で、月額100円で専用のスマフォアプリから何度でも飲料を購入できる

アクター/外部システム

View DCI.md

Lean Architecture APPENDIX A, ScalaでのDCIサンプルです。コプリエンさん作です。

increaseBalanceUnitを返すとはないわ〜。(今どき可変オブジェクトを中心にドメインを考えたくないという意味で。多分こういう考え方の人は関数型勢に多い。

import java.time.Instant // 元のサンプルはjava.util.Dateだったがさすがにそれは辞めろ的な意味で書き換えた

// Data
trait Account {
  protected var balance: Long = 0
View gist:4041a22c5396052ce2239ee3cae8e702

お題

勉強会に参加する方は、以下の映画料金表を参考して、映画料金を決定するドメインモデルを考えて実装してください(実装言語はScalaを想定しています。が、チームで相談して違う言語を選択してもよいです)

具体的には、入力として顧客や時間の条件を与えると何らかの計算を行い、出力として映画の価格を返してくれるクラスを実装するイメージです(ドメイン駆動設計の戦術的なプラクティスにこだわらなくてもOKです)。入力条件から複数の映画料金が求められる場合は安い価格を決定してくださいね…。クラスは何個作っても構いません。ただし永続化とかGUIのことは考えないでください。動作を確認できる、コンソールアプリケーションかユニットテストがあれば十分です。

https://cinemacity.co.jp/ticket/

以下の要件を満たすのは必須ではないですが、時間がある方は挑戦してみてください。思った以上に複雑な要件なので注意してください。 また、レディースディ(女性でかつ毎週水曜は安くなる)など新しいルールを作って実装してもOKです。

View sbt.md

https://github.com/j5ik2o/akka-persistence-dynamodb

sbt.version = 1.3.0 にしてビルドしたら以下のエラー

以前、sbt-coursierにしたときも同様のエラーでたことある

$sbt clean compile
[info] Loading settings for project global-plugins from idea.sbt,sbt-updates.sbt,plugins.sbt ...
View gist:52742bbf84a680e34e086cd3d5b9178a
@j5ik2o
j5ik2o / gist:5682650
Last active Jul 19, 2019
集約ってどんなもの?
View gist:5682650

グローバルな識別子を持つエンティティが集約になります。

ドメインモデル

  • 売上(Sale)
  • 売上明細(SaleDetail)

コード例

実装を書いてないメソッドもあるけど、適当に脳内でイメージしてね。

ドメイン層

You can’t perform that action at this time.