日々常々

ふつうのプログラマがあたりまえにしたいこと。

2023年のふりかえり

ことし10本目のエントリ。

毎回このブログの1単位を「記事」と呼ぶか「エントリ」と呼ぶかとかで無駄に悩んだりします。「本記事」とか「本投稿」とかそういう、書いている文章内のスコープを指すの。 で意識的には「エントリ」を使ってるんだけど、これははてなブログのどこか(たとえばこの記入欄のURLなどにnew entryとか書かれていたりする)で使われていたからなんだけど、UIを見ると「記事を書く」とか「最近書いた記事」とかだな。えーでも「ホットエントリー」だよなぁ、でもホットエントリーははてブの文脈か。「記事」に統一したそうだから「記事」でいくか。

と、いきなり脱線したけど、別に本線もない。 本線とかいうと電車を思い浮かべるんだけど、Factorioで最近ようやく電車使った拡大を初めてて。どんどんデカくなるけど、世界はもっとでかそうだねぇ。敵(原住生物)が邪魔だけど、邪魔程度で戦い方の工夫とか要らないのがもう少しどうにかならないかなぁって。過密工場地帯みたいなの作ってないから汚染拡大もしないんだよね。ふむー。

今ブログ書こうと思ったのは、かずひらさんがなんか書いてたから。

kazuhira-r.hatenablog.com

そいやふりかえり記事とか書いてたね。

今年のふりかえり

オフラインイベント

JJUG CCC行きました。SpringとFall両方。 関ジャバやりました。

オフラインはいいね。

JJUG CCC Spring

「Webアプリケーションを作りましょう」というタイトルで、ライブコーディング。

あまりそうは見えないって言われるけど、緊張するタイプでして。通常の登壇時も心拍数爆上がりするし喉はカラカラになるし。 そんな奴が一発勝負のライブコーディングなんてやったらどうなるよってね。

笑えるほど腕が震えてほんと笑った。端末環境もあるけど、家でやったことの半分もできないでやんの。

あ、資料公開はしてないです。ライブコーディングありきだし。

オフラインイベントでの面白さはある程度あったかなぁって思いました。 これはJavaコミュ@福岡でも呼んでいただいて再演しました。

javaq.connpass.com

素敵な建物でした。おさけ飲みながらダベるのも楽しかったです。

ライブコーディングはいいんだけど、タイムアタックはオフラインイベントとしてはイマイチな感じがする。 タイムアタックなら動画撮影してYouTubeにでも置いておけばいいしねー。双方向な感じでやりたい。

JJUG CCC Fall

「Gatlingによる負荷テスト入門」というタイトルで、ビギナーセッション。これは資料公開してる。

speakerdeck.com

内容は「色々勉強するのもいいけど、まずできるところからやって眺めるってはじめ方もいいよ」というものです。 資料にもある通りなんだけど、この入門段階では実務に耐えません。全然足んないです。でもやらないよりマシではあると思います。

これは別途独立した記事を書きたいんだよねぇ。

関ジャバでもこの資料や準備を使い回して、Side:BでGatlingに比重おいてやろうとしたんだ。時間制約とかで色々はしょりました。色々。

関ジャバ

別に休止してたつもりもないので再開とか言わないって言い張ってるんだけど、再開以外のなにものでもない。

kanjava.connpass.com

オフラインイベント(要するにJJUG CCC)のたびに「やらないの?」「やりたいね」みたいな話をして、ようやくという感じです。 やってみたらやっぱいいなぁという感じ。でもオンライン勉強会の選択肢が出た以上、オフラインならではを強めたい思いを新たにしています。

「会」ですからね。

次は1月にやる予定だよー。

ゲーム

SteamとNintendo Switchでやってます。 スマホゲーは今年やってない気がするね。外出ないしなぁ。

Surviving Mars

火星でコロニーを作る。 住民は食糧や酸素や水の供給が途絶えてもがき苦しんでます。ドローンかわいい。

延々と同じマップでやる系ではなく、条件と目標を達成するチャレンジモードをこなしていく感じ。 延々と同じマップでやってもいいけど、そんな広くないし。

実績は35/80、プレイ時間は内緒。

Tropico 6

島国の独裁者になって色々やる。 独裁者で弾圧とかもできなくはないけど、やってもいいことない。

延々と同じマップでやる系ではなく、条件と目標を達成するミッションをこなしていく感じ。 延々と同じマップでやってもいいけど、島ごとに方向性決めて発展させるから、別の島でやる方が楽しい。

実績は22/40、プレイ時間は内緒。

This War of Mine

戦争に取り残された民間人を操作して生き延びる。 プレイ中は何やっても悪い方向にしかいかないし、エンディングも救われない。

オートセーブが基本で取り返しがつかない。 セーブできたらヌルゲーでつまんなくなるからやるべきじゃない。

何が楽しいかって、楽しいゲームではないね。 クリアしても達成感や解放感ってより単に気が抜けるだけだし。 でもいいゲームだとは思う。一度はやってみてほしい。一度でいいと思うと言うか、一度でお腹いっぱいになると思う。

実績は20/55、プレイ時間は内緒。

Factorio

惑星に一人で不時着、宇宙船はぶっ壊れてる。そうだロケットを飛ばそう! ……ロケットを飛ばすのが目標なんだけど、別にロケットに自分が乗るわけではない。飛ばすだけ。なんで?

なんとなく壊れた宇宙船の隣でロケットを飛ばすのが好きで、毎回こんな感じで飛ばしてる。

これマジで仕事の知識使えるし、仕事に転用できる要素も多い。 そう言う見方をすれば、だけど。

延々と同じマップでやる系。 違うマップはそれなりに違いがあって面白みもあるんだけど、大規模な鉄道運用とかやるのを違うマップで1からやるとか、ちょっとだるい。

実績は27/38、プレイ時間はマジで内緒。 「雑談する暇はない」はいけてた。「スプーンなんてない」は挑む気すらしない。

Stellaris

銀河を股にかけて、開拓したり戦争したり同盟したりする。 目標は一定期間で一位になることっぽい?

銀河間を飛び回れる文明たちでやり合うけど、そう言うのを認識していない未開の文明を観察したり気づかれたりとかそう言う要素もある。パラメタが大量にあって把握するだけでも結構なもの。ぶっちゃけ情報過多ってか、チュートリアルやっても「これなんだっけ??」ってなる。

あと不具合が多くてめちゃめちゃクラッシュする。やりはじめた時のバージョンが非常にバギーで、色々覚えていこうってタイミングでこう言う中断で水をさされるとやる気無くすよね。てことであまり遊べてない。

実績は21/174。

Plague Inc: Evolved

伝染病を進化させて人類を絶滅させる。 なおコロナ前からあるゲームである。

日本語だと「伝染病株式会社」でスマホアプリとかもあるらしい。

今日始めた。年末に何やってるの?

大学でバクテリアの遺伝子いじるのやってたから、ちらほら「あ、知って・・・・る?気がするけど、もう忘れた・・・」ってなってる。

リングフィットアドベンチャー

12月に買った。

らくしょーって思ってたら運動負荷10だった。

毎日やるのを今年の目標にしたのに、25日間で連続は途絶えた。

void tRrLM();

トリコちゃんかわいい。

まとめ

かずひらさんの記事、および元になったやんくさんの記事を読んで書き始めたのに、なんかゲーム記事になった。

yyyank.blogspot.com

まぁいいや。

アウトプットしようぜー、って言いながら自分がアウトプットあまりできてないなって。

色々事情あって仕方ないんだけど。来年は出ると思います。思うだけ。

いま使ってる音を鳴らす装置たち

なんだかんだで色々あるなぁと。音質の違いなんてわかる耳をしていない私なので、たぶん費用対効果そんな良くないんだけど、まぁ。

違う端末間で接続切り替え面倒、Bluetoothのマルチ接続もできなくはないんだけど、それやるとSlack通知音とかが別の端末で鳴ると進行中のミーティングの音が途切れたりで、微妙だからそれぞれの端末ごとに異なるヘッドホン、ヘッドセット、スピーカーを繋げてる感じ。

AKG K702

開放型?オープンイヤー?のヘッドホンを持っていないなぁと自分に言い訳して買ってみました。 ヘッドホンと言ったら密閉するものと思ってたので「へー、開放型なんてあるんだー」って感じで。

該当スレッド

音は多分いいんだろう。たぶん。他のスピーカーに繋ぎながら音楽かけてる途中でこれに切り替えると途端にシャキッとした感じで、その瞬間は音の違いはわかる、気が、する。でも3分くらい経ったらもう意識してない。

ケーブルが3mあって、これも長くて使い勝手が良い。外で使いたいなら邪魔だろけど、室内で使うものだろしね。 ただ頭頂部がバネで圧迫されるので、数時間使うと痛くなってくる。これ使い続けると血行悪くなって禿げる気がする。。。 長時間は使わないけど気に入ってはいて、気合い入れる時のルーティン的な使い方をしてます。

ヘッドセットじゃなくヘッドホン。マイクはないので、ミーティングで使う時は別途入力装置は必要。

サンワダイレクト 400-SP090

ネックスピーカー、マイク付き、ワイヤレス。

マイクの位置が右前で、左前のモニターにミーティングを映すことが多いこと相性がわるいとかあるけど、そんな重くないし概ね不自由なく使えています。 音楽は聴き比べると「あー、音楽聴くためのスピーカーじゃないなぁ」というのはわかるけど、聴き比べないとわからない。 でもわざわざこれで音楽聴かないな。もっぱらミーティング用。

Macとの接続で難があって、Mac起動直後の一発目は素直に接続できるんだけど、これの電源を入れ直して再接続すると音が鳴らない。 Mac側のBluetoothをON/OFFしたら鳴るようになる。なんだこれって思いながら使えてるからいいかってやってる。

無線だけど充電しながらも使えるので電池切れでも安心。長めのUSB-Cケーブルが必要だけど。

HiperX HX-HSCA-RD/AS

有線ヘッドセット。ゲーミングって冠してるけど、「ゲーミング」って色使いのことだと思ってる。

3年くらい前に買ってWindows端末で使ってたんだけど、いつからかマイクを認識しなくなり(他の端末だとちゃんと認識する)、これだからWindowsは……と思いつつドライバ再インストールとか試したけどどうにもならないんで諦めてMacBookProで使ってる。

ケーブルに音量調整とマイクのミュートスイッチあるんだけど、使ったら相手にノイズが鳴るとかあって使ってない。音量調整も小さくするとアナログ信号が弱くなる?ぽくて片方から聞こえなくなったりして常に音量はMAXで出力元で調整してる。

有線だから電池切れしないってのはいいよね!

Razer Leviathan V2

届いた時のポスト

サウンドバー。七色に光るから間違いなくゲーミング。

USB-Cで接続してそのまま使えるんだけど、それだと音楽に合わせて七色に光ったりはしない。 Bluetoothでつなぐと七色に光る。光を楽しみたいならUSB-Cで繋ぎつつBluetoothで繋ぐってことになる。 別にBluetoothで繋いだら不自由があるってものでもないんだけど、なんか「ケーブル繋いでるのにBluetoothで繋げるのはイマイチな気がする」で七色に光るのは諦めてる。どうせ目に入らないし……。

Sony LinkBuds WF-L900 WM

耳に入れるタイプかつ外音が聞こえるもの。 外で密閉型とかノイズキャンセルは危険なので、外の音が聞こえるやつをと。あとSonyの持ってないしーと。

確かに外の音は聞こえるんだけど、ドーナツ状の穴から聞こえる形なので、AmbieやShokzなど完全に耳を塞がないものと比べると外音の聞き取りづらさはある。 音楽止めてても会話に支障あるので、その点は期待はずれである。

左右が完全に独立しているかつ耳にかけるタイプじゃないから、メガネや髪と競合しない点はとても使いやすい。 とはいえaudio-technica ATH-CC500BT買ってからは外出時使いの座を譲り、今はほとんど使ってない。 そもそもそんな外出しないしね……。

audio-technica ATH-CC500BT

マイクがゴミ。ソフトウェアのサポートでなんとか使えなくはないって感じだけど、なんとか程度のうえ「声小さいですね」とか言われるので、ミーティングとかで無理してこれ使う理由がない。

Shokz OpenRunProを紛失してしまったので、同じような感じの&骨伝導じゃなく軟骨伝導というので買ってみた。 音楽を聴く分にはとてもいい感じで、使い勝手はOpenRunProと同じ。使い比べができてないのは残念。

外出で使うのはもっぱらこれだけど、髪と競合して邪魔。

Kindleアプリの入れ替えで一括解除しようとしたら間違えて削除してしまった間抜けの記録

買ったコンテンツを間違えて消しちゃって、サポートに問い合わせたけどごく一部しか復元できず、再購入するしかなくなりました。その一部始終を記録しておきます。

私のKindle事情

MacKindleアプリは「Kindle for Mac」とかで、長らく出来がイマイチなものでした。先日、iOSKindle端末と似たような体験ができる新しいアプリがリリースされました。いまだ不慣れなため痒いところがかけないため新しいアプリの評価は私の中で定まっていませんが、いい方向に行くことを祈っています。

私が現在Kindleを見るのに使用している端末は以下です。

Fire HD8はカラーで読みたい時、マンガも最近カラー多いしこっちかな。Kindle Scribeは白黒でよくて大きい画面で手書きでメモを書きたい時。paperwhiteはもう古いし壊れてもいいやと風呂とかで雑に使ってます。

経緯説明

今回の新しいアプリを入れ、早速使ってみようとダウンロード……

引っかかった時のツイート

ん?Kindleってダウンロード数の制限あったんだ。端末によってダウンロードする本が違うからか知りませんでした。

Kindleアプリを確認してみようと コンテンツと端末の管理の「デバイスにインストールされているAmazonアプリ」から見ると、なんか「XXXXさんの Kindle for Mac 3」「XXXXさんの Kindle for Mac 4」とか複数並んでる。手元のアプリを起動すると「XXXXさんの Kindle for Mac 4」とタイトルに表示されているんだけど、4でダウンロードしていないっぽい本もアプリには入っている。どうも3であり4であるっぽい。なんだこれ。これも今まで気づいてなかった。

とりあえずKindle for Macのダウンロード済み全部をローカルから消しちゃっていいか……とアプリを操作するのだけど、Shiftとか装飾キー押しながらでも複数選択できない。これだからKindle for Macアプリはダメなんだ……(新しいKindleアプリでも複数選択の方法わかってないけど、iPhoneタブレットのだと長押しで選べるんだよね。)

一冊ずつ削除するのも面倒なので、Web画面のコンテンツ管理からなら一括で消せるよなーと期待して……

(実際は端末一覧から「デバイスのコンテンツを見る」とかやるとそのデバイスにダウンロードされてるコンテンツの一覧が見える。んだけど端末名を変えたらでてこなくなった。なんだこれ……)

「4デバイス」となってるところをクリックしたり、「デバイスからの配信または削除」ボタンから対象を選んだら削除できるんだけど、クリック回数は多い。 求めている一括ではない。

チェックボックスがあるから「これで一括できそうだなー」と

「すべて選択する」から……

「削除」っと……

したらダイアログでました。

ふむ

ここで止まるべきだった。(スクショのために撮り直したので3冊になってますが、実際は30冊弱だったと思う)

この時の私はたぶん「端末のコンテンツから開いたのでデバイスだけに閉じたもの」と認識してたと思います。で「なんか翻訳変なのかな」と勘違いしました。一括で消せそうな方法これしかないって言う確証バイアスもあったと思います。

と言うことで「はい、完全に削除します」をやっちゃったんですね。やっちゃいましたね。消えました。

この絶望感よ

復旧をサポートにお願いしてみる

どうもサポートに問い合わせたら復旧できるらしいので、聞いてみました。

  • 私: 30分くらい前に操作間違ってコンテンツ自体を削除してしまいました。復元可能でしょうか?
  • 相手: 可能です。注文番号を教えてください。
  • 私: 一括操作したので注文番号がわかりません。
  • 相手: 専門家に繋ぐのでしばらくお待ちくださいませ。

(実際はもう少し長い文章)

あ、復旧できるんだ。よかった。としばらく待ちぼうけ……してても仕方ないので、なんとか対象わからないかとゴニョゴニョしてました。(後述)

待つこと1時間20分(この間なんの反応もないんですよね。切れてるんじゃ?とか疑ったし、途中でウィンドウ閉じちゃったりしたらこれどうなるんだろな。)、反応がありました。

  • 相手: お待たせしました。復旧可能ですが、1年以内に注文したものに限ります。注文番号を教えてください。
  • 私: (注文番号わからんってのは引き継げてないのか。チャットの上にあるけどなぁ。まぁわかったからいいけど。1年以内?え、ってことは……)これとこれになります
  • 相手: 復旧しました。ご確認ください。
  • 私: 確認できました。ありがとうございます。

と言うことで

2冊だけ復元できました。やったね!

そして少なくとも15冊、購入時の金額で45,522円が消えました。辛い。

つい先日こう言うこと言ったんですが、買い直すか正直迷う。

該当ツイート

これらは復元できない=1年以上前に買ったものでダウンロード済みなので、「読んだ上でもう一度読み直すかもって思ってたもの」なんですよね。なので読んでないわけではないからいいかと思う一方、読み直そうと思ってたわけで。

でもこの辺はよく紹介や引用するし、再購入かな……

PMBOKは新しい版を買えばいいや。Refactoringは原著でどうかいてるんだろってニュアンス確認のためだったけど、もういいかな。

達人プログラマー第2版は「表紙かっけー」で買ったけど、Kindleだと表紙目に入らないから物理で買いなおそっと。

他は読み直したいと思ったらその都度買うことにする。

……はぁ。

ではみなさん、私みたいなことにならないように、 ダイアログは読みましょう (普段から「ログ読みましょう」「ダイアログのメッセージ読みましょう」って言ってる側の私だけど、人間疲れてるとガード下がるよ。なんか最近ガード甘い気がする。)。

アプリの入れ替えで制限に引っかかった時に削除したくなると思うけど、一括コンテンツダウンロード削除の適切な手順は、おそらくアプリの「登録の解除」です。

コンテンツの方は触らないように。以上。

おまけ:注文番号の確認方法

Kindle for Macのローカルコンテンツはコンテンツフォルダにダウンロードされているんですよね。デフォルトでは ~/Library/Application Support/Kindle/My Kindle Content のようです。 で、Time machine使っているので、ダウンロードしていたものはここに入っているはずです。Time machineの内容をデフォルトのFinderで開くと非表示ファイルになっているので見えませんが、Finderの設定を変えたりコマンドでならみれます。

なので現時点のコンテンツフォルダと、削除する直前のコンテンツフォルダのdiffをとれば、手元で消えたものはわかります。 Amazonのサイト上で消してしまったものがすべてここに入っているかに不安があります(「Kindle for Mac 3」と認識されているが、アプリ自身は「Kindle for Mac 4」主張してる。ほんとよくわからない。AppStoreで入れたりAmazonからアプリ購入したりなんかいろんな入れ方してしまった記憶がうっすらあるんですよね。)が、消えていることだけは事実。

でこのコンテンツフォルダの中のファイル名が商品番号っぽいものを使用した {商品番号}_EBOK で、どっかでみた番号体系だなー確かAmazonのURLだっけこれーと当たりをつけて開いて、ヒット。たとえば消えてしまった「実践ドメイン駆動設計」はコンテンツフォルダでは B00UX9VJGW_EBOK で、これをAmazonのURLにつっこめば https://www.amazon.co.jp/dp/B00UX9VJGW になります。

これを元にコンテンツフォルダの名前→URL→商品名→注文履歴検索で注文番号を特定できることがわかりました。 なお注文履歴検索に B00UX9VJGW などの商品番号を入れてもでてきます。

これで消えている21冊の注文番号は特定できました。21冊のうち4冊はprimeやアプリから削除したものだったので、コンテンツには残っていたため、17冊が消滅したものになります。

Amazonで買ったものって商品画面で「購入済みです」ってなるんですが、削除してしまったものはこの表示が出てこなくなります。商品画面の購入済みが購入履歴と紐づいているのはわかりますが、Kindleの保持してるコンテンツって購入履歴と紐づいているデータモデルなんだなぁとかわかって、ちょっと面白かったです。このデータモデルはなんか微妙な気がするけど、なんか事情があるんだろね。