Slide 1

Slide 1 text

新入女子社員のコードを直 す簡単なお仕事 numa08

Slide 2

Slide 2 text

numa08 • 最近社内案件でScala使った • メンテできるの俺だけ • 闇に沈む予感!! • VagrantとかChefとか使いまくり • Ruby様すげぇ • オレオレツール、オレオレgemを作るようになった • コマンドラインのツール作るのにRubyって(フロントだけでも)最強で は・・・? • JenkinsとRakefileの相性が良いことに気がついた • またRuby・・・・

Slide 3

Slide 3 text

前回のおさらい • JenkinsでPlayframeworkを使う便利なプラグインを作る ぞ!! • プロジェクト毎にバージョンを指定できる • Playのインストールが楽になる

Slide 4

Slide 4 text

今回までの進捗

Slide 5

Slide 5 text

今回までの進捗

Slide 6

Slide 6 text

今回までの進捗 俺の出る幕なかった!!

Slide 7

Slide 7 text

今回までの進捗 • http://numa08.net の編集 • Playframeworkを利用したWebサイト • 現在動的なページが一切無い • はてなやBloggerのエントリーなどを動的に取得するように改造中 • https://github.com/numa08/numa08

Slide 8

Slide 8 text

新人女子プログラマの書いたコードを直すだけの簡単なお仕事です!

Slide 9

Slide 9 text

ライブコーディングで新入女子社員のコード を直して、要件通りの実装を行います

Slide 10

Slide 10 text

ぶっちゃけこの問題、Scalaだと簡単すぎる・・・

Slide 11

Slide 11 text

問題 • サイトの集客キャンペーンとして、「組み合せで無料キャン ペーン」と銘打って、設定金額に最も近い商品の組み合わせ を購入すれば無料となるキャンペーンを開催することにしまし た。その内容は以下の通りです。 • キャンペーン設定金額として毎日1つの設定金額(整数)mが決められま す。 • ECサイトの利用客は、 2つの異なる商品(値段は同じでも構わないが 必ず二つ) を購入し、その 合計価格がキャンペーン設定金額m円以下 で、かつ最大となるような商品の組合せだった場合、 その商品を無料 で手に入れることができます。 • すべての商品の価格と、イベント期間中の 各日のキャンペーン設定金 額m円(キャンペーン日数分) が与えられるので、各日のキャンペーン設 定金額mに対し、上記ルールのもとでの最大値を計算するプログラムを 作成する のがあなたの仕事です。

Slide 12

Slide 12 text

戦略 • 標準入力から商品数とイベント日数を得る • 標準入力から商品の金額リストを得る • 標準入力からキャンペーン設定額リストを得る • 金額リストから全ての組み合わせの合計金額リストを得る • 設定額リストの要素に対して、 • 設定額以下かつ • 昇順にソートされたリストを作りその先頭要素を得る • 上記のリストを作る • 出力用に整形して出力する

Slide 13

Slide 13 text

ライブコーディング

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

新入女子社員は救えなかったよ・・・

Slide 16

Slide 16 text

ハマったところ • タプルの中で使う変数を大文字にしたらコンパイルエラー • 定義済み定数として解釈されたっぽい • 若干腑に落ちない・・・ • yieldを付ける場所を間違える • yield retvalってしちゃう • スペル間違える

Slide 17

Slide 17 text

List#combintionsを追う • typesafehub/scala-sbt.g8をベースにg8でプロジェクトを作る • typesafehub/sbteclipseプラグインを組み込む • sbtから”eclipse with-source=true”でソースコードと一緒に Eclipseプロジェクト化 • Scala-ideで開く

Slide 18

Slide 18 text

まとめ • Scalaのリストに対する処理は死ぬほど多い • 把握しきれない・・・ • Scalaじゃ新入女子社員を救えない・・・ • 新入女子社員を救える会社が必要とされている