私の松江での生活 2016

この記事は松江移住ITエンジニア Advent Calendar 2016の8日目の記事です。
前の記事は、株式会社イードの山崎さんの記事でした。

 

こんにちわ、株式会社ネットワーク応用通信研究所の佐田です。
松江出身のエンジニアです。

初日の福田さんが書いていましたが、「松江テルサ別館忘年会」の参加者で「松江移住ITエンジニア Advent Calendar 2016」を書くことになりました。

私は松江市出身者なので、松江移住ITエンジニアではありません。
地元ITエンジニアなので、今回のAdvent Calendarのメンバの条件に合っていません。
そのことを「松江テルサ別館忘年会」でもお伝えしたのですが、「別にいいでしょ」とのことで書くことになりました。 

松江出身者だからこそ松江での生活を振り返るテキストは書いていなかったので、良い機会になったと思います。
それとAdvent Calendarに参加したことがないので、これが初Advent Calendarです。^^;

 

松江のコミュニティについて

最初に2016年に私が参加した松江にあるコミュニティについて紹介できればと思います。
私が主に参加したことがある定期的に開催されているコミュニティは、以下になります。

他にも松江では勉強会や交流会が開催されているので、ぜひ調べてみてください。
私が最初に勉強会に参加したきっかけは、会社の同僚に誘われたからでした。
きっと松江に移住された方も、こんなコミュニティがあるけど参加しませんかと誘われると思います。

私もスタッフとして参加させていただいたコミュニティの活動もあります。
9/24に開催されたオープンソースカンファレンス 2016 Shimaneや12/17に開催予定の松江Ruby会議08では、Webサイトの更新をお手伝いしました。
プログラミング少年団やsprout.rbでは、アシスタントまたは講師の一人として参加し、プログラミングを教えるお手伝いをしました。

 

運動不足解消を目指して

普段の仕事が長時間座っている作業なので、運動はしなければと考えています。

f:id:sada4:20160211105137j:plain

鳥取県の大山や島根県の三瓶山があることもあり、松江は冬になるとスノーボードをしている人がいます。
冬のシーズンになると、私は会社の同僚と一緒に大山桝水高原スキー場奥大山スキー場スノーボードをしに行きます。
会社の先輩がスノーボードが好きなので、滑り方を教えていただき、何とか滑れるようになりました。
今年も私は滑りに行こうと考えています。そろそろ松江のコミュニティでもスノーボードの話が出るのではと思います。

f:id:sada4:20160124114304j:plain

あと私が走った距離は短い(4km, 10km)ですが、2016年度に開催されたマラソン大会に参加しました。
マラソン大会に参加したのは、社外の人から誘っていただいたのがきっかけです。
今まで大会に参加したことがないのと、ずっと運動をしていなかったので、練習をしっかりしないと完走できないと焦りました。

4kmは松江で開催された第2回松江しんじ湖温泉グルメリレーマラソンに参加した時の距離で、松江市在住のITエンジニアの集まりで参加しました。

f:id:sada4:20160425101508j:plain

10kmは安来市のなかうみマラソンに参加しました。
今年の参加で2回目ですが、昨年の記録を更新することができて良かったです。

 

おわり

私の2016年度の松江での生活について書きました。
松江のコミュニティに関することで書かせていただきました。
今年も楽しくコミュニティ活動に参加させていただきました。ありがとうございます。

WindowsにおけるRabbitのインストールについて

Ruby合宿 2015でアシスタントとして参加した際、Rabbitを実行する時にエラーが発生するということを伝えられました。

確かにRabbitを実行するとエラーが発生する状態でしたが、以下のURL先の手順のとおりインストールしているとのことでした。

Rabbit - Windowsへインストール

結局、その場では良く分からなかったので、別の環境で上記のインストール手順を試したところ、正常に動作しました。

Rubyのインストールする時に途中で表示されるオプション項目のチェックボックスを選択状態にする必要があったようです。

Td/Tk サポートをインストールする

Rubyの実行ファイルへ環境変数 PATH を設定する

.rb と .rbw ファイルをRubyに関連付ける

あとは、サンプルのファイルに沿って、文字コードをUTF-8Nにして改行文字をLFにすることで動作しました。

松江Ruby会議06のライブコーディング大喜利でボツになった問題について

松江Ruby会議06ではライブコーディング大喜利の問題を作成していましたが、採用されずにボツになった問題もあります。

せっかく作成したのでブログに載せておくことにします。

ボツになった問題は二つです。

数値を漢数字に変換するプログラムを作成してください。
数値は、以下のような0から1_000_000_000_000_000のいずれかです。

 

num = rand(1_000_000_000_000_000)

# -- ここにコードを記述してください。 --

以下は、作成するプログラムの内容です。

* 「0」は「零」を返す。
* 「23」は「二十三」です。
* 「100」は「百」です。
* 「5000」は「五千」です。

プログラムが返す漢数字は、標準出力に出力してください。 

答えは、以下のようなコードを期待していました。


https://gist.github.com/23d397322b779754d77f.git

もう一つは、以下になります。

以下のプログラムが書かれたhello.rbファイルがあります。


puts("Hello World!")

 

hello.rbファイルは、以下のコマンドで実行時に標準出力へ「Hello World!」と出力します。


$ ruby hello.rb

プログラムまたはコマンドに変更を加え、実行時に標準出力へ何も出力されないようにください。

答えは、以下のような標準出力に何も出力しないようにすることを期待していました。

class Object

  def puts(o)

  end

end

松江Ruby会議06のライブコーディング大喜利で出題された問題について

松江Ruby会議06ではスタッフとして参加していました。

スタッフの活動の中に問題を考えるというものがありました。

大喜利とライブコーディングの組み合わせで良い問題とはどういうものなのかで悩みましたが、答えが見つからなかったので、最後は大喜利の要素がない問題を作成して提出しました。

以下は採用されて松江Ruby会議06で出題された問題です。

0から13回のいずれかの回数だけトランプのカードを引けます。
引いたカードが、すべてスペードの絵柄である場合の確率を返すプログラムを作成してください。

以下は、トランプの内容です。

* トランプの枚数は、52枚です。
* トランプの絵柄は、「スペード、クローバー、ハート、ダイヤ」の4つです。
* 絵柄ごとにカードは、13枚あります。
* カードの種類は、「a 2 3 4 5 6 7 8 9 10 j q k」の13種類です。

答えとして以下も用意してはいましたが、本番では使用しませんでした。

最初に「起こりうるすべての数の確率」を求めます。
トランプの数は52枚であり、そこから2枚引いた場合の確率を考えます。
トランプの52枚から2枚を引く確率は、(52 * 51) / (2 * 1)で1326通りです。

次に「そのことがらが起こる確率」を求めます。
トランプのスペードの枚数は13枚であり、そこから2枚引いた場合の確率を考えます。
スペード13枚から2枚を引く確率は、(13 * 12) / (2 * 1)で78通りです。

「そのことがらが起こる確率 / 起こりうるすべての数の確率で求められます。
トランプの52枚から2枚を引いた時にすべてスペードである確率は、(78 / 1326r)で(1 / 17)です。

3枚の場合を計算します。
(52 * 51 * 50) / (3 * 2 * 1)の組み合わせは、22100通りです。
(13 * 12 * 11) / (3 * 2 * 1)の組み合わせは、286通りです。
(286 / 22100r)は、(11 / 850)です。


https://gist.github.com/b10b680414b41d762f6d.git

反省点としては、引いたカードを元に戻すのかという疑問がTwitterツイートされていたので、そこも問題文の中でどう扱うのかを書くべきだったなあと思いました。

Rubyのタイマ表示について

Rubyのタイマ表示について調べました。

二つのTimeオブジェクトのインスタンスの差分から秒数を求め、その秒数から時分秒を計算して表示していましたが、RubyではTimeオブジェクトに差分の秒数を足せば経過時間を表示できるようでした。

以下に記事がありました。


Ruby - 秒を時間表示へ変換する - Qiita

上記を参考にして書いてみたのが以下になります。 


https://gist.github.com/8e20ac3907b61847f91d.git

Time#strftimeメソッド年月日の差分を表示する方法は、分かりませんでした。

タイマの使い方で年月日が必要になるほど時間を待つ場合は少ないと思うので、とりあえずは計算して求めるので良い気がしました。

バルバロッサ3回目

昨日は、前回と同じメンバーでバルバロッサをしました。

今回の序盤のゲーム展開は、@yhara さんの独壇場でした。

そのため、中盤以降は@yhara さん VS 他のプレイヤーという感じになりました。

なぜ、そのようなゲーム展開になったのかというと、バルバロッサでは他のプレイヤーが粘土で作成したものが何かを当てれば、自分の駒を進めることができます。

しかも、その粘土が何かを最初に当てることができれば、より有利に駒を進めることができます。

そして、@yhara さんは序盤で三個も粘土が何かを一番初めに当て、一気にゴールへ近づくことができました。

もう数マスでゴールという状態でしたので、他のプレイヤーは @yhara さんを進ませないようにすることに集中してました。

その結果、序盤にリードされていた分を取り戻すことができ、最終的に他のプレイヤーも同じぐらいゴールに近づくことができました。

そして、なんだかんだで今回勝利したのは @nari3 さんでした。

ゲーム後に食べに行ったカレー屋(スパイス王国)では、「今回は初勝利を飾ったので、次は連覇を狙いたいですね」とコメントしてました。

私は、今回のゲームでは@kumojima さんと @nari3 さんの粘土を当てましたが、当てるのが遅かったのであまりコマを進めることができませんでした。

次はもっと早く当てられるように頑張りたいです。

それでは。

バルバロッサの2回目

今日は、@nari3 さんと @yhara さんと @kumojima さんと私の4人でバルバロッサをしました。

バルバロッサとは、最初に各プレイヤーが粘土でそれぞれが想像した物体を作成し、それが何かを当てることでゲームのコマを進めてゴールを目指すボードゲームです。

今回でバルバロッサをするのは、2回目です。

1回目はゲームのルールを把握するために日本語で会話をしていましたが、今回から英語でした。

バルバロッサでは、粘土で作成した物体が何かを当てるために質問をするのですが、その質問も英語でやり取りをするので、面白いです。

それに、1回目にルールを把握していたからか、日本語と英語のどちらであっても掛かった時間は同じぐらいでした。

今のところ時間を短くするには、質問のやり取りを早くすることで短くできそうです。

それでは。