当日のTwitterのまとめはこちら↓

みなとRuby会議01 前半まとめ #minatork01

みなとRuby会議01 後半まとめ #minatork01


初Rubyイベント参加

ずっとRubyは勉強したいと思っていたのですが、なかなか進まず放置状態でした。、(^^;)

そんな私は普段Rubyを書いているわけもなく、 たまたま勉強会でよくお会いする@joker1007 さん経由でこのみなとRuby会議が開催されることを知り、一念発起し参加と相成りました。


Rubyのコミュニティ力

言語やプラットフォームなどなど、新しい技術を学ぶとき、 その技術そのものの利点と同じようにその技術の「コミュニティ」が選ぶ理由になると思うのですが、 今回はじめてRuby界隈のイベントに参加させていただき、、 他のイベント・勉強会と比べても、Rubyコミュニティのレベルが高いなぁと関心するところが、随所に見られました。

なぜRubyはコミュ力が高いのか?は、わかりませんが、 スタートアップのプログラミング言語と言われるに納得できるAgilityの高さを感じました。


English Numeralsリベンジ

今回はじめてペアプロでのソーシャルコーディングをしました。

普段仕事ではペアプロをするのですが、こういった機会にするペアプロも新鮮で大変面白かったです!

ただ、、Ruby自体のインストールも当日の朝やってくるような準備の足りなさだったため、 ペアプロでは完全にナビ役になってしまいました。。

リベンジのため、ソーシャルコーディングの課題をScalaで書いてみました。

import scala.collection.immutable.Map
/**
* Created with IntelliJ IDEA.
* User: modal_soul
* Date: 12/06/02
* Time: 23:06
*/
// 1桁のイミュータブルマップの作成
val oneDigit = Map(
0 -> "zero", 1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four", 5 -> "five", 6 -> "six", 7 -> "seven", 8 -> "eight", 9 -> "nine"
)
// 2桁で19以下のイミュータブルマップの作成
val twoDigitOf19AndUnder = Map(
10 -> "ten", 11 -> "eleven", 12 -> "tweleve", 13 -> "thirteen", 14 -> "fourteen", 15 -> "fifteen", 16 -> "sixteen", 17 -> "seventeen", 18 -> "eighteen", 19 -> "nineteen"
)
// 2桁で20以上のイミュータブルマップの作成
val twoDigitOf20AndOver = Map(
2 -> "twenty", 3 -> "thirty", 4 -> "fourty", 5 -> "fifty", 6 -> "sixty", 7 -> "seventy", 8 -> "eighty", 9 -> "ninety"
)
// 下2桁を判定
def twoDigitTranslate(input:Int):String = {
(input/10) match {
// 10未満の場合
case (0) => oneDigit(input)
// 10以上の場合
case (1) => twoDigitOf19AndUnder(input)
// 20以上の場合
case (_) =>
(input%10) match{
case (0) => twoDigitOf20AndOver(input/10)
case (_) => {
twoDigitOf20AndOver(input/10) + "-" + oneDigit(input % 10)
}
}
}
}
// 上2桁を判定
def fourDigitTranslate(input:Int):String = {
(input/10) match {
// 1000未満の場合
case (0) => {
oneDigit(input).union(" hundred")
}
// 2000未満の場合
case (1) => {
// 1100未満の場合
if(input%10==0){
oneDigit(input/10).union(" thousand")
}
// 1100以上の場合
else{
twoDigitOf19AndUnder(input).union(" hundred")
}
}
// 2000以上の場合
case (_) => {
oneDigit(input/10).union(" thousand")// + "and" +oneDigit(input%10).union(" hundred ")
}
}
}
// コマンドライン引数の取得
val num:Int = args(0).toInt
// 100以上の場合
if(num > 99){
// 下2桁が0の場合
if(num%10 == 0){
println(fourDigitTranslate(num/100).capitalize)
}
// 下2桁が0以外の場合
else {
println(fourDigitTranslate(num/100).capitalize + " and " + twoDigitTranslate(num%100))
}
}
// 99以下の場合
else {
println(twoDigitTranslate(num).capitalize)
}
view raw numerals.scala hosted with ❤ by GitHub

まだ冗長な部分もあって、いけてないですが、今のScala力ではこんなもんです。

#この記事を見たもっと強力なScala使いの方が、もっとスマートに書いてくれるでしょう、だぶん。。

まとめ

今回この様な有意義なイベントに参加させていただき、運営スタッフ、参加者の皆様、ありがとうございました。

懇親会にも是非参加したかったのですが、諸事情により今回は断念となってしまいました。。orz

今回のはじめの一歩に続く次のイベントも開催されること期待しています。そのときにはもう少しRuby力を上げて参加できるようがんばります!