I-O DATA HDD EC-PHU3W2D を分解する
I-O DATA HDD EC-PHU3W2D が壊れてしまって、外箱からHDDを取り出すのにやたら苦戦したので記録を残しておく。
Amazon | I-O DATA HDD ポータブルハードディスク 2TB USB3.0バスパワー対応 日本製 EC-PHU3W2D | アイ・オー・データ | 外付ハードディスクドライブ 通販

写真でいうと下から上方向にマイナスドライバー等の細くて硬いものを差し込んで、ツメを外していく必要がある。ツメを外せば開けられる、というのはweb上の記事を参考にした。 wakumon.com
ただ自分が非力だからかわからないが、どの方向に差し込んでも最初は全く歯が立たず途方に暮れていた。日を空けて幾度目かのトライでやっと成功。

うまくいくと上側の蓋が外れてHDDは下側に張り付いた状態になるので、同じようにマイナスドライバー等を差し込んで剥がしていく。こっちはそんなに力は要らなかった。

無事HDDを取り出すことができた。お疲れ様でした。
メモの管理どうするか2024
メモの管理をどうするかというのは永遠のテーマなのだけど、今のところは Bear を使っている。
95%くらい満足しているんだけど、Mac or iOS クライアントしかないのが玉に瑕。最近 Windows マシンを使うようになり、できれば Windows 環境からもメモが閲覧できると嬉しい、というのがある。
周りでは Obsidian を使う人が増えているのでちょっと試していたのだけど、マルチクライアント間の同期が高い or 面倒なあたりでやる気が出なくなってしまった。
まぁ Obsidian が全然だめとかではないし、気が向いたらまた触ってみようと思う。
Bear も Obsidian も自分が望むメモアプリにだいぶ近くて、Bear が Windows でも使えるクライアントを出してくれるか Obsidian がもうちょい手頃になると嬉しいな、と思う。
ちなみに理想のアプリは以下のような感じ。
PS4でなぜかゲーム内ボイスだけ聞こえてこない
タイトルにあるとおり、謎の現象にハマったので記録に残す。
前提として、こんな感じで接続していた。

特に問題ないと思ってゲームを始めたものの、ムービー中にボイスが聞こえない。ちなみにやってたのはリリンク。
体験版もプレイ済みだったんだが、そっちではボイスがあったはず。さすがに本編になってボイスが消えるのはおかしいよな?と思うものの、BGMは聞こえている。謎。
そこで同じくプレイ中の知人に聞いたところ、ムービー中はフルボイスのはず、とのこと。YouTube でプレイ動画を探してみると確かにある。というわけで自分の環境がなにかしらおかしいことがわかる。
とりあえずHDMI切替器を介さずにPS4とモニタを直接繋いだところ、聞こえるようになった。

そこでHDMI切替器を元に戻した上で、間のHDMIケーブルをいくつかとっかえひっかえしてみるものの、変化なし。ついでに同じケーブルでPS4とモニタを直接つないでみると、すべてうまくいく。
どうにもわからんということで検索していたところ、以下のHDMI切替器(自分が使ってるものとは別)のレビューがひっかかった。
以下、レビューの引用。
この機器をPS4に接続すると一部の音が出ない現象が起こりました。 原因はPS4がこの機器を「7.1chが出力できる機器」として認識するためのようで、 PS4が7.1ch(もしくは5.1ch)で出力した音をモニターの2chのスピーカーで聞くと センタースピーカーなどにに振られた音(人物の声など)がごっそり無くなってしまうためのようです。 本当に7.1chとして出力されているのかは確認できませんでしたが、現象からはそのように推測できます。 この問題はPS4の音声出力設定の「主に使用する出力端子」を光デジタル出力(AAC)に変更すると直りました。 光デジタル端子は使用していませんが、この設定でHDMIの方には2chで出力されるようです。
これを見て、とりあえずPS4の「主に使用する出力端子」を「光デジタル出力」に切り替えたらボイスが出るようになったのでした。めでたしめでたし。

なんだが、そもそもHDMI切替器に2CH/5.1CH/7.1CHの切り替え機能があり、そこを(なぜか)7.1CHにしていたのをすっかり見落としていた。今のところ7.1CHで出力する機器は持ってないので、2CHに固定することで今度こそ解決したのでした。めでたしめでたし。
rails の i18n をフィーチャートグルで制御する
この記事は SmartHR AdventCalendar の7日目です。
最近は機能開発をする際にフィーチャートグルを利用しています。なぜフィーチャートグルを使うのかを書き始めるとそれだけで一記事消費してしまいそうなので多くは語りませんが、今ではなくてはならないものと感じています。
ですが実際にはフィーチャートグルの適用が難しいケースがあります。例えば rails の i18n です。YAML で定義している翻訳をフィーチャートグルのON/OFFで差し替えたい、となるとなかなか面倒です。i18n は以下のように YAML で定義されているため、そこに Ruby のコードを差し込むことはできません。
config/locales/en.yml
en: hello: "Hello world"
ですが、実は i18n は YAML だけでなく Ruby ファイルもサポートしています(参考:Rails 国際化 (i18n) API - Railsガイド)。
そこで、フィーチャートグルで翻訳を切り替えられないか試してみました。環境は Ruby 3.0.3, Rails 6.1.4.1 です。
ちなみに今回はフィーチャートグルっぽく動くものとして以下のようなクラスを準備しました。あくまで「それっぽいもの」です。
app/models/setting.rb
class Setting class << self def awesome_feature_enabled? unless defined?(@awesome_feature_enabled) @awesome_feature_enabled = false end @awesome_feature_enabled end def awesome_feature_enabled! @awesome_feature_enabled = true end def awesome_feature_disabled! @awesome_feature_enabled = false end end end
とりあえず翻訳の定義はそのままに .rb に置き換えてみます。
config/locales/en.rb
{
en: {
hello: "Hello world"
}
}
まずはこれで動くか確認します。
$ bin/rails c
irb(main):001:0> I18n.t('hello')
=> "Hello world"
動きますね。ですが、これだけだと記述量が増えただけで特に旨味はありません。そこで、フィーチャートグルの返り値で翻訳を切り替えてみます。
config/locales/en.rb
{
en: {
hello: -> { Setting.awesome_feature_enabled? ? "Hello feature toggle" : "Hello world" }
}
}
動かしてみます。
$ bin/rails c
irb(main):001:0> I18n.t('hello')
/Users/yono/sample/config/locales/en.rb:3:in `block in load_rb': wrong number of arguments (given 1, expected 0) (ArgumentError)
引数が足りないというエラーですね。適当に足してみましょう。
config/locales/en.rb
{
en: {
hello: -> (x) { Setting.awesome_feature_enabled? ? "Hello feature toggle" : "Hello world" }
}
}
これでどうでしょうか。
$ bin/rails c
irb(main):001:0> I18n.t('hello')
=> "Hello world"
irb(main):002:0> Setting.awesome_feature_enabled!
=> true
irb(main):003:0> I18n.t('hello')
=> "Hello feature toggle"
irb(main):004:0> Setting.awesome_feature_disabled!
=> false
irb(main):005:0> I18n.t('hello')
=> "Hello world"
動きました。フィーチャートグルのON/OFFで返り値の切り替えもできてますね。よさそうです。
ただ、引数の中身が何者かわからないのは気になりますね。確認しておきましょう。
config/locales/en.rb
{
en: {
hello: -> (x) { x }
}
}
これで実行してみます。
$ bin/rails c
irb(main):001:0> I18n.t('hello')
=> "hello"
引数にはi18nのキーが含まれているようですね。変数名を直しておきます。
config/locales/en.rb
{
en: {
hello: -> (key) { Setting.awesome_feature_enabled? ? "Hello Feature toggle" : "Hello world" }
}
}
というわけで、i18nもフィーチャートグルで切り替えられるようになりました。こちらからは以上です。
builderscon tokyo 2018 に参加してきた
2018/09/06 〜 2018/09/08 に開催された builderscon tokyo 2018 に参加してきました。
6日が前夜祭で、7日と8日が本編ですね。懇親会 + After party 含めて全参加できました。
印象に残った発表
しんぺいさんの「開発現場で役立たせるための設計原則とパターン」がめちゃくちゃ良かったですね。
業務でコードを書いていく中でいい感じのコードはこういうやつ、という輪郭は見えてきて(現場のコードから学ぶことが多い)、ただそれらが具体的にどう良いのか、体系的に学ぶ必要があるなと思って最近改めてオブジェクト指向設計の本をいくつか読んでるわけですが、しんぺいさんの発表を聴いてそれら(設計における原則とデザインパターン)が具体的につながり、どういったプロセスを踏むことで設計が進められるのかというのがはっきり見えてきました。最高。
発表資料はこれから公開されるとのことなので、私は気長に待とうと思います。
追記: 2018/09/10
当日の発表の様子を再現した記事が公開されていました。
追記終わり
Jackさんの「「Web とは何か?」 - あるいは「Web を Web たらしめるものは何か?」」も良かったです。
最近ちょうど WebUSB の存在を知り、「え、そこまで Web でやる必要ある?」と感じていたので、それに対するアンサーというか、Web がどういう流れで進化してきてどのような経緯で今現在そういった API が生まれてきているのかというような話が非常にわかりやすく解説されていました。「Webを支える技術」読まなきゃ……。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者: 山本陽平
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 4,320回
- この商品を含むブログ (183件) を見る
あとはぷりんたいさんの「つらくないマルチテナンシーを求めて: 全て見せます! SmartHR データベース移行プロジェクトの裏側」も良かったですね。
デプロイがいつまで経っても終わらない、最長で100時間かかったという聞いただけでなぜか胃が痛くなるような状況があり、蓋を開けてみると migration が異常に時間がかかるという状況があり(migration が長時間かかるとだんだん不安になってきませんか。私はなります)、そういった状況を脱して最終的に migration を秒で終わるようにしたという感動巨編でした。やばい。
懇親会とかアフターパーティーとか
そんなに知り合いもいない状況なので大量に酒を入れつつなんとなく目があった方に声をかけるなどしていました。結果いろんな方とお話できてよかったです。ありがとうございました。
その他感想
来年も参加したいしその際はぜひしゃもじ3.0(a.k.a 謎ガジェット)を手に入れたいですね。運営の皆様、スピーカーの皆様最高の時間をありがとうございました。
TokyuRuby会議12でLT発表してきた
2018/07/29 に開催されたTokyuRuby会議12に参加してきました。
TokyuRuby会議12 - Regional RubyKaigi
TokyuRuby会議には初参加だったのですが、いろいろあってLT発表もしてきました。 RubyKaigi 2018 の After Party で万葉に入社した経緯を @yancya さんと@publichtml さんに話してたら「それ TokyuRuby会議で話したらよくない!?」と煽られたのでじゃあ出すか〜と気軽に応募したのがきっかけでした。結果的にめちゃくちゃ楽しかったのでお二人には本当に感謝です。
時期的には去年のうちに発表できてたら良かったかな〜と思わなくもないのですが、発表モチベーションが高まったのがここ最近なのでそのへんは仕方ないですね。モチベーションマネジメント大事。
終わった後にTLを眺めてたらいい話だったと言っていただけていて、発表してよかったです。感想をくださった皆様ありがとうございました。
美味しいビールと美味しいご飯と楽しいLTと、本当に最高の一日でした。また来年も何かしら発表できたら嬉しいですね。運営スタッフの皆様、スポンサーのサントリーさん、本当にありがとうございました。
