砕氷艦「しらせ」一般公開

8/25~26にかけて清水港で海上自衛隊所属の砕氷艦「しらせ」の一般公開があるとのことで行ってきた。
 
自宅から清水港まで1.5時間くらいなのだけど、土曜日の時点でかなり混んでいるとニュースになっていたので奥さんと8時過ぎには出発しようと話をしていた。
(僕は仮面ライダービルド最終回のリアタイ視聴をあきらめた)
ところが先日の深酒により、寝坊。奥さんは夜更かししてゲームをやっていため寝坊。
結局出発は10時過ぎになってしまった。
 
清水港についたのは12時半過ぎ。港手前の駐車場に車を停めると、そばのコンテナの向こうに凛々しくしらせが見えて、改めてそのデカさに驚く。
 
 

f:id:jacoyutorius:20180826130534j:plain

入艦まで30分待ちとのアナウンス。30分くらい余裕っす。
 

f:id:jacoyutorius:20180826133141j:plain

よりもいでは砕氷船って呼ばれてたね。

英語では「Ice Breacker Shirase」と呼ばれるらしい、、中二心が疼く!

 

f:id:jacoyutorius:20180826131612j:plain

f:id:jacoyutorius:20180826134241j:plain

f:id:jacoyutorius:20180826143148j:plain

f:id:jacoyutorius:20180826143836j:plain

 
まぁなんでこんな炎天下の中片道1.5時間もかけて出かけたかといえば「宇宙よりも遠い場所」の影響ですね。ある意味聖地巡礼ですよ。
 
 
帰りはhuluアプリでよりもいを流しながら帰った。
良い週末でござったよ。
 

JAWS-UG浜松 AWS勉強会#1

 
春頃にスマートスピーカーのスキル開発ハンズオンをやったのだけど、Androidの会浜松支部との共催だったので単独開催は今年初。
 
僕はSAM CLIの使い方について話した。
資料通りにコマンドを叩いていけばデフォルトのHelloWorldFunctionをユニットテストしてからAWSにデプロイする、という
開発の流れが体感できるように作ったつもり。
 
 
改めて資料見返してみると、コマンドの一覧ばっかりで絵がほとんどない。色気のない資料だなぁ。

友人の結婚式に参加してきた

先週のことだけど、友人の結婚式に参加してきた。

僕の年齢だと親しい友人はおおかた結婚していて、今回が最後かな、という感じ。

 

久々に大学時代の友人と再会できて当時のノリであれやこれや騒ぐのも久々で楽しい。

卒業して以来10年ぶりくらいに会ったやつは「結婚式なんか参加したこと無いから(ご祝儀袋の書き方とか服装とか)全然わかんないんだよ〜」とか言っていたけど、

からしたら海外行って職人の学校に入ってバイオリン作って暮らしてる君のほうがよっぽと素敵な経験をしてると思うぞ。。

 暑っつい日だったからシャツなんか着たくなくて、ポロシャツで行けないかなと結婚式のマナーを調べてみると、半袖はNGとのこと。泣く泣く長袖シャツを着ていった。

合流した友人の一人はせめてもの反抗としてくるぶしソックスを履いてきたと自慢していた。公務員がそれでいいのかよ。

 

一緒にバンドやってたやつの一人は某夏フェスに出演が決まったり、別のやつはヒモになっていたりとまぁ人生色々ですねぇと思った次第。翻って己自身の現状を鑑みるに、これはやっぱり良いとも悪いとも言えねえな俺の場合は。

 

学生のころは昼夜問わず遊び呆けていたのに、今や子供がいるからと即座に帰るやつ、家が遠くだからと21時くらいの新幹線に乗るやつ様々で、一緒にいられる時間はほんとうに短い。

近くの居酒屋に入って新幹線の時間までの限られた数十分で全力で昔話をして、駅のホームで再会を誓って別れた。次は何年後かな。

 

 

Rubyでライフゲーム

Rubyライフゲームを書いてみた。 

とはいえ、ちゃんとできているか不安。動きがカクカクしてしまっている。

 

いまだに駄目だなぁと思うのは、頭の中でアルゴリズムを組み立ててからコードを書くんじゃなくて、動かしながらをコードを書いていることですね。

 

f:id:jacoyutorius:20180628102401g:plain

 

Array.prototype.reduceの使い方

(前回の内容も踏まえて)そうか、こういう使い方もできるのか。

 

今回はJavascriptだけど。

今まで上のようなやりかたで書いていて、 最初に空のオブジェクトを宣言するのが嫌だったんだけど、reduce使えばよかったのか。

var hash = {};
["a", "b", "c", "d"].forEach((v)=>{
  hash[v] = v.toUpperCase();
});
 
console.dir(hash);
// => { a: 'A', b: 'B', c: 'C', d: 'D' }
 
var hash = ["a", "b", "c", "d"].reduce((obj, v)=>{
  obj[v] = v.toUpperCase();
  return obj;
}, {})
 
console.dir(hash);
// => { a: 'A', b: 'B', c: 'C', d: 'D' }

Hamamatsu.rb #88

ということで昨日はHamamatsu.rb #88。
今回は「プロを目指す人のためのRuby入門」の4章の中盤まで。内容としては配列の処理とかブロックの使い方とか。
 
RGB変換メソッドの例題で、injectを使って文字列を結合するやり方はすごい洒落てるな〜と思った。
とりあえず自分が本を見ずに書いたコードが↓
mapで処理した結果をjoinで結合するというやつ。
"#" + [r, g, b].map{|v| v.to_s(16).rjust(2, "0") }.join
 
こちらが本に載っているコード。
文字列の結合にinjectを使うのは目からウロコ。injectって数値計算くらいにしか使いみち無いものだとばっかり思ってたので。
[r, g, b].inject("#"){|ret, v| ret + v.to_s(16).rjust(2, "0") }
 
 
些末なことだけど、他の言語も同時に扱っていると配列操作のメソッドとかで混乱しがちだよねという話をしたり。 
Array#push だと Array.prototype.push() とごっちゃになるから、Array#<< を使ったほうが良いかもね、とか。
あと、pushと<<の細かな違いなどを知ることができてよかった(受け取ることのできる引数の数が違うらしい)
 
何名か初参加の方がいたんだけど、そのうち2名がWebサービスを開発していてそのデモを見せてくれた。熱い。
いずれもRailsで開発してるとのこと。
 

Hamamatsu.rb #87

「プロを目指す人のためのRuby入門」読書会の2回め。
今回は参加者10名。
 
思ったより予習してきた人が少なかったかな!
とはいえ、メタプロ読書会のときも自分は全く予習復習してなかったので偉そうなことは言えない。
自分は前日に1時間くらいでササッと読んで、気になった点のメモをまとめて、あとは
オマケとしてGuardでMinitestの実行を自動化する設定を作って今回に臨んだ(けっこうしっかりやってるのでは?)
 
参加者が多いと自分では知らず知らずのうちに読み流していた箇所への疑問質問がでるのが良い。
Minitestでfailした際の出力結果のこの行はどういう意味なのか?とか、何故"疑似変数”と呼ばれているのだろう?とか。
全員で「う〜ん、、多分こんな理由?」的なことを言いながら頭を捻るのは楽しい。
 
あと、前回のKPTで書いたコードを共有する場所があると良いよね、という話があったので
Gistのコードを共有するための簡単なWebアプリをFirebase + Nuxt + Herokuで作ったものを紹介した。
 
 
これは↓の記事を参考にFirebaseを使った認証の勉強も兼ね作ってみたもの。
 
ほぼほぼ写経で、特にVuexfireを使っている箇所は自分ではまだあまり理解できていない。
それに、結局コードを共有するのにはSlack使ったほうが圧倒的に見やすいことがわかり、ボツネタとしている。
まぁNuxtで作ったアプリのHerokuへのデプロイの仕方がわかったので良し。