夏休み

hwada.hatenablog.com

今日から9連休。去年と同じ。

暑いし台風きてるし通院もあるので何もするつもりがないけれど、FE 風花雪月が面白い上ボリュームがあるので(まだ1部)これだけで潰せそう。

岩田さん

岩田さんのほぼ日の対談とかを定期的に読み返しています。特にこの辺は何度読んでもすごいなーと感心してしまう。

www.1101.com

「自分がやるのが一番早い」みたいな発想はプログラマあるあるだと思いますが、そこからじゃあ会社の経営も自分がやろうというのは飛躍だと思うんですよね。「プログラムがうまく動かないのは書いた自分の責任だけど、人とのコミュニケーションがうまくいかないのもそれと同じで自分の伝え方が悪いのだろうと考える」とか、なかなかそうは考えられないですよという感じで。「なんでそんなこともわからないの」って言っちゃうでしょ(そうでもない?)。

この辺でよく出てくる「面談」がIT業界でちょっと前に流行った「1on1」のはしりでもありますね。

あと、この辺のエピソードとか凄みがあります。

【岩田 聡氏 追悼企画】岩田さんは最後の最後まで“問題解決”に取り組んだエンジニアだった。「ゲーマーはもっと経営者を目指すべき!」特別編 - 4Gamer.net

主にほぼ日内で語られていた話になると思いますが、これをまとめた書籍が出ると言うことで、これも買って改めて読みたいと思います。すでに紙の本は発売されていますが、思ったより早く、というか明日には電子版(Kindle)も出る予定らしいので日付が変わるのを待っているところ(まだAmazonでも予約はできないみたい?)。

岩田さん - ほぼ日刊イトイ新聞
"岩田聡さんのコンテンツ。 - ほぼ日刊イトイ新聞"

岩田さん 岩田聡はこんなことを話していた。

岩田さん 岩田聡はこんなことを話していた。

可変長引数をとる関数に配列を渡したい(PHP/JavaScript)

PHPで:

<?php
$data = [1, 2, 3, 4, 5];
pack("l*", $data);
#=> 20byteのバイナリがほしいのに、4byteしか取れない
?>

なんてことをやってしまった。pack関数の第二引数は可変長配列ですが、配列を渡すとその配列オブジェクトのバイナリが返ってきてしまいます。C言語でprintfに配列を渡すようなことは普通しないと思いますが、なんとなくPHPはうまくやるんじゃないかと思ってしまったんですよね…。

<?php
$data = [1, 2, 3, 4, 5];
pack("l*", ...$data);
?>

今回のようなケースでは上記のように書けば期待通りの動きになります。

PHPの "..." は名前付いてないんでしょうか。検索してもよくわかりませんでした。マニュアルには"...トークン"と書いてあるけど口頭ではなんと発言するんだろう。

JavaScriptではスプレッド構文と呼ぶみたいですね。同じような使い方をします。Math.max関数なんかが可変長引数を取り、

Math.max(1, 2, 3); // => 3

などと書けますが、配列を渡すとうまくいかず、スプレッド構文を使う必要があります。

Math.max([1, 2, 3]); // => NaN
Math.max(...[1, 2, 3]); // => 3

思い返すとC#でも似たようなやらかしをしたなぁ。DataTableを使っているときに、行を追加するメソッドが可変長引数を取るので行の要素を配列で突っ込んだら最初の列に配列オブジェクトが表示されるというやつ。

var dt = new DataTable();
dt.Columns.Add("A");
dt.Columns.Add("B");

dt.Rows.Add(1, 2); // OK
dt.Rows.Add(new int[] { 1, 2 }); // NG

このメソッドはobject[]を取るので

dt.Rows.Add(new object[] { 1, 2 });
// とか、
var array = new int[] { 1, 2 };
dt.Rows.Add(array.OfType<object>().ToArray());

みたいに書けば動くには動くんですが…。まぁ、素直にRow作ってから列を設定する方が良さそうですね。

ミニストップのフローズンフルーツがよい

文字通り凍らせたフルーツで、いちごとかみかんとかを凍らせてハロハロに入れたりしたもので、最近バリエーションが増えている印象。2019年の夏は牛乳にいちごを入れていちごミルクとか、炭酸水に氷代わりにみかんを入れたものがリリースされています。

www.ministop.co.jp

果物を凍らせると消費期限はどれくらい延びるんだろう? よく知らないけど、フードロス削減にも繋がりそうなイメージ。個人的にはタピオカよりこういうのが流行ってほしいです。

Xperia 1に機種変更した

前回の機種変更から2年ほど経つので、そろそろかなとXperia 1にしてみた。去年指紋センサーの位置が背面に移ってしまってこれはもう別の端末も考えるべきかなと思っていたら1年で戻ってきたので良かったです。

広告費かけているのか評判も良いみたいですが、正直ネットとミリシタしかやらないのでオーバースペックな感はあります。いや、ミリシタやるならスペックは良いに越したことはないのかな。

感想は、やっぱり長い。持て余しそうなのでリング付きのカバーを一緒に買って付けてみました。ソニー的には最近実装されたサイドセンスをうまく使ってね、という感じなのかな。とりあえずその辺り含めてしばらく使ってみたい。

ミリシタは3D高画質でも問題無く動いていていい感じ。ただ、ミリシタの方がこの長さに対応していないみたいで、一部シーンで左右の絵が切れたりするけど実用上は問題無いし、たぶんすぐに対応されるでしょう。スマホで動画はあまり見ないのでこの解像度で嬉しいシーンが今後あるのかどうか。後継のスマホがこの長さ・解像度を維持するのかどうかで色々見えてくることもありそうですね。

LINQPadでクラスをDumpする際のメンバの並び順(alpha)

バイナリファイルを構造体に突っ込んでDumpして中身を覗くぜ! という時にメンバがアルファベット順にソートされて出てきて探しにくい! となったので引数を見たらそのままずばりbool? alpha引数があったので、これをfalseにしたらメンバの定義順に並んでくれました。

f:id:wata_d:20190705123911p:plain
f:id:wata_d:20190705123927p:plain

ちなみに Dump(true) だけだとtoDataGrid引数の値として評価されるので注意。

ATOKのイミクル

ATOKをインストールしている環境で文字列を選択してCtrlキーを2回押すと表示されるやつ。選択した単語を辞書で引いた結果を教えてくれる。昔からある機能なんだけどすぐ存在を忘れてしまって、たまにうっかりCtrl2回押したときに出てくるだけの某イルカみたいな扱いにしてしまっているけど、ちゃんと使えばちゃんと便利なんですよね。

f:id:wata_d:20190621091358p:plain

難しい漢字が出てきたときとか、いちいちググるより速い。英和辞典も入っているので英単語にも使えます。

Justsystemのサイトにも記載がないっぽく、Google検索しても「イミクルの消し方」とかばっかり出てきて、やっぱりイルカみたいな扱いをされているのが不憫……。