きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

岡山市ホームセンター戦国時代

※本エントリは『大都会岡山アドベントカレンダー2023』の5日目の記事です(空欄を後から埋める感じで登録するので公開日とずれてるのはご愛敬)

adventar.org

2023年11月。岡山市南区海岸通にカインズ岡山南店がオープンしました。 これにより岡南大橋~アプロスプラザ岡南までの(ほぼ)同一道路の直線1.5km以内に三店舗のホームセンターが並ぶことになりました。 またそこから2kmほど北にナフコ。ナフコからは北に数百mでDCM、ナフコから西に500mほどでコーナンプロ。 人口密度のわりにかなりのホームセンター密度ではないでしょうか。

で、ちょっと気になって軽く調べてみたところ、現在2023年12月現在岡山市には9ブランド27店舗*1あるようです*2

これはもう、岡山市ホームセンター戦国時代といっても過言ではないかもしれません。

……やっぱり過言な気もしてきましたが、とりあえずそれぞれのホームセンターの紹介というか思い出話的なのをしてみたいと思います(とりあえず50音順)。

ブランド名の後のカッコ書きはざっとwebサイトで調べた限りの現時点での岡山市内の店舗数です。

カインズ(1店舗)

関東圏で有名なブランドで、この度岡山県内2店目、県南としては1店目のカインズ岡山南店がオープンしました。 オープン日からしばらくは平日も岡南大橋から岡南一帯の交通状況に影響を与えるほどの盛況ぶりでした。

家から一番近い……にも関わらずが実はまだ一度も行ってないので何とも言えないのですが、津山店は何度か足を運んでいていろんなテレビ番組でも紹介されている通りオリジナルの商品など魅力があると思ってます。津山店では夏休みなどにやってる工作のワークショップに子供が参加させてもらったりもしていて、岡山店でもあると嬉しいなと思ったりしてます。

ホームセンター通販のカインズ

コーナン(5店舗:コーナンプロ含む/高柳はプロを個別カウント)

近畿圏ではメジャーなコーナンですが、ここ10年ちょっとくらいで岡山に一気に店舗を増やしてきた感があります。 特にコーナンプロは普通のホームセンターにあまりおいていないような資材があったり単価も安かったりします。2×4材とか構造用合板とかはここ数年は私はこちらで買うことが多いいかも。

コーナン商事

コメリ(2店舗)

なんとなく田舎の方にありがちという印象もありますが(失礼)、岡山市内にもあります。まあ結構郊外の方ではありますが……。 農業系の資材の取り揃えが良かったりエクステリア資材(敷材とか)が地味に他と比べて安かったりするので、たまに行って大量購入するような利用の仕方をさせてもらってます。

つい先週もコンクリ敷材50枚とかトラックに積んでもらって帰った記憶があったり。

そういえば数年前に”蚊帳”が必要になった探したところ、他店は扱いが無くてようやくコメリで見つけたということもありました。

ホームセンター通販コメリドットコム

ジュンテンドー(5店舗)

ジュンテンドーさんは私の生活圏内から店舗が無くなってしまったこともありここ10年くらいはほぼ行ってないかもしれません。 強いて言えば、たまたま通りがかったときに買い物を思い出して神崎店にちょろっと寄ったことがあるくらいかも……。

昔、倉田に店舗があった頃は当時自転車が交通手段の自分的に唯一気軽に行ける店舗だったのでよく行ってました。 あと比較的物持ちの良い我が家ではその店で買ったジュンテンドーの値札シールが張られたままの工具や資材に未だちょくちょく出くわしたりするので、なんとなく馴染はああったり。

暮らし、いきいき ジュンテンドー

タイム(6店舗)

生活圏や行動範囲にそこそこ店舗があるのでよく利用させてもらっています。系列の酒市場チャオ!とか手芸マキも含めてよくお世話になってます。 私がよく利用されてもらう店舗だけかもしれませんがビスや配線などの工事資材小物の品ぞろえは他に一歩譲るかなという感じがあり、自分的にはどちらかというと生活用品をメインに買いに行くお店、という感じになっています(あくまで個人の感想)。

ホームセンタータイム|公式ホームページ

DCM(4店舗)

少し前まで岡山だと「ダイキ」のブランドでしたが今は「DCM」に統一されたようです。

藤田のPモールの元ダイキEXと呼ばれたお店はめちゃくちゃ広く品ぞろえも良く、隣のケーズデンキやプラッツなんかと合わせて色々揃うのでまとめて買い物済ませたいときに足を延ばすことが多いです。ただめっちゃ広いので、どこに何があるか把握してないと無駄にうろうろすることになるので注意が必要かも。

北側の入り口付近では産直系の食べ物とかを売ってるコーナーがあったり、レンコンコロッケとか売るお店が出てたり(いつも出てるかは不明)していろいろ楽しいです。

ホームセンター|DCM株式会社

ナフコ(2店舗)

岡山市内出店前の昔、祖父母の家の近くの関係で玉島店によくお世話になっていたこともあり昔は田舎の方に出してる印象を持ってました(失礼な偏見)。

ホームセンターにしてはコジャレた感じがある気がします(TWO-ONEスタイルのイメージが強いせいかも)。 富浜町の岡山店はアウトドア商品の取り揃えが多いのが気に入っています。

組み立て家具やカーテンなども、ニトリかここか……で買うことが多いかも。独自ブランドの組み立て家具はバリエーションもあり値段もお手頃じゃないかとおもいます。

株式会社ナフコ | HOME

ナンバ(1店舗)

昔は岡山市内に数店舗あったと思うのですが、現在は岡山市内には備中高松店の1店舗のみ。自宅からだと実は備前店の方が時間に近いのではという疑惑があります。 数年前、自宅にサイクルポートを設置するときに比較検討した結果、ナンバさんが一番安く工事内容も納得いくものだったのでお願いした記憶があります(この時は高松店に)。

昔は洲崎の現在はDIOになってるところにあったお店によく行ってました。31アイスクリームもあったので高校時代はちょくちょく学校の帰りによったりしてた思い出も。

HOME | ナンバホームセンター

ロイヤル(1店舗)

カインズができるまでは自宅から一番最寄りだったこともあり、今でも一番利用頻度が高いです。生活用品は少な目でどちらかというと職人さん向けのバランスだと思います。特に少し前にリニューアルしたタイミングからはそれが顕著になった気がします(アクロスプラザにタイムがオープンしたのであえてそうしてるのかなという気はします)。

リニューアル後からはグループ会社となったアストロプロダクツの商品も置くようになったので、それ目当てで行くことも増えました。アストロのジェネリック系の工具とか地味に安くて便利だったりするので助かります。

ロイヤルホームセンター|DIY・リフォームからペット用品まで豊富な品揃え!

*1:高柳のコーナンとコーナンプロは同一敷地内でも2カウント。建物の出入り口もレジも完全に分かれてるし

*2:見落としてる店舗あったらすみません

GP2040-CEのビルド環境を整えた

Raspberry Pi Picoを超低遅延のアケコン/ゲームパッド基板にするファームウェア、GP2040-CEを手元でビルドできるように環境を整えました

GP2040-CEとは

GP2040-CEとは、ラズベリーパイピコ他RP2040を使ったマイコンボードを超低遅延のアケコン/ゲームパッドのコントロール基板として利用するためのファームウェアです。 gp2040-ce.info

ソースコードはgithubで公開されていて、開発が継続されています

github.com

手元でビルドしたい

せっかくオープンソースなので自分でもビルドできるようにしたいと思い、ビルドの為にどういった環境が必要か調べていたところ、こちらのツイートに行き当たりました。

凄く丁寧で親切な資料で『やった、これで勝てる』と確信しました。

手順書に従って必要なものをインストールしてv.0.6.0のビルド成功

前述の @alirin222 さんの資料に従って必要なものを順次インストールしました。 あえて特筆するべき点があるとすれば、必要なツール類のバージョンについて少し冒険と思いつつも*1現時点の最新バージョンを使用してみた点でしょうか。

  • Arm GNU Toolchain : 13.2.Rel1
    • arm-gnu-toolchain-13.2.rel1-mingw-w64-i686-arm-none-eabi.exe
  • CMake : 3.28.0-rc5
    • cmake-3.28.0-rc5-windows-x86_64.msi
  • Python : 3.12.0
    • Windows embeddable package (64-bit): python-3.12.0-amd64.exe

Visual StudioはもともとVS2022 (Version 17.8.1) のC++環境が入っていたのでそのまま使いました。 Git環境も既存で入ったものを使っています(2.41あたりのまま)。

上記の環境で、GP2040のリポジトリからまずはv0.6.0のタグのバージョンをチェックアウトしてビルドしたところ問題なくビルド完了してuf2が生成されました。

v.0.7.5をビルドするにはnode.jsが必要

ドキュメント記載時点のバージョンのビルドが通ったので、現在の最新リリースのv.0.7.5をチェックアウトしてビルドしようとしたところ……。

cmakeの時点で以下のようにfailedになってしまいました。

[cmake] CMake Error at lib/httpd/CMakeLists.txt:1 (add_library):
[cmake]   Cannot find source file:
[cmake] 
[cmake]     fsdata.c
[cmake] 
[cmake]   Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .h .hh .h++
[cmake]   .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc
[cmake] 
[cmake] 
[cmake] -- Generating done
[cmake] CMake Generate step failed.  Build files cannot be regenerated correctly.

fsdata.c自体はリポジトリにも該当のディレクトリにもあるのに何でや……と思いつつissueを調べてみると同じ質問を発見しました。 fsdata.c missing from main branch · Issue #115 · OpenStickCommunity/GP2040-CE · GitHub

要は、node.jsが足りてないから入れればよい、とのこと(そういえばこの環境、node.jsはもともと入ってなかった)。

ということで追加で最新LTSの20.10.0をインストールしました。

  • Node.js : LTS 20.10.0
    • node-v20.10.0-x64.msi

これを入れて再度cmakeを実行すると問題なく完了し、nmakeも最後まで通ってuf2が作成されました

まとめ

これでGP2040-CEを手元でビルドしてバイナリを生成することができるようになりました。 完全に @alirin222 さんの資料のおかげです。ありがとうございました。

冬休みには時間をとってGP2040-CEをカスタムとかしてみようかなと思ってます。

*1:こういった環境構築ではバージョンが異なると動かないことが多々あるので、原則的にはまず各環境を検証済みのバージョンに合わせて構築してみるのが変にハマらない/ハマってもトラブル解決しやすいのでお勧めと思います

Arduino (Pro Micro)を使ってSNES Controller to XInput Converter を作成した

Arduino (Pro Micro互換ボード)を使用して、スーパーファミコン(SFC/SNES)のコントローラをXInput対応のUSBコントローラーとしてPCで使用できるコンバータを作成しました。

動機

  • 右手を痛めたのでSFC用の片手コントローラー*1をPCで使いたい
  • どうせならXInput対応のコンバーターが欲しい*2
  • XInput対応の既製品の入手性が微妙*3だが、少し調べたところ安価なPro Microで作れそう

モチベーションはざっくりこんな感じです。

仕組みとか

ざっくりした仕組みとしては以下になります:

  • ArduinoのGPIOとSFCコントローラーのコネクタピンを接続
  • SFCコントローラーの入力状態をArduinoで解析
  • 読み取った入力状態に従ってXInputのボタンのON/OFFを切り替える

割とシンプル。

『SFCコントローラーの入力状態をArduinoで解析』については既に実行されている方が何人もいらっしゃいました。私が直接参考にさせていただいたのは以下の記事です。

zenn.dev

こちらの記事中で、Pro MicroをSFCのパッドを読み込みArduinoJoystickLibraryというライブラリ(https://github.com/MHeironimus/ArduinoJoystickLibrary)を使って標準HIDゲームパッド(≒DirectInput対応)として動作させるスケッチも公開されいたのでそれを流用させていただくことにしました。

github.com

また Pro MicroのXInputデバイス化は以下のライブラリを使用することで実現できました。

github.com

先人の成果物に完全におんぶにだっこ状態です(とてもありがたい)。

部材

以下の部材を使用しました。もともと手元にあったものやジャンクからはぎ取ったりしたもの等なので価格記載しません。

  • SFCコントローラー用コネクタ(ジャンクのSFC本体から取得)
  • Pro Micro互換ボード
  • USB MicroBケーブル(100均モノ)
  • ケース(100均モノ)
  • 配線材料(適量)
  • 固定用のネジ等

プログラム(ソースコード)

スケッチはこちらで公開しています。手元のPro Microで試しています。 github.com

参考というよりべースにさせていただいた snes_gamepad_arduino/snes_gamepad_arduino.ino at main · ka-zuu/snes_gamepad_arduino · GitHub から私が書き方ところを中心に説明すると、以下のような感じです

  • AdruinoJoystickLibrary使用箇所をArduinoXInputに変更
    • ほどんと機械的に置き換えるだけのレベルの変更
  • 使用するGPIOピンを5,6,7 → 7,8,9に変更
    • ボードの端から使う方が配線しやすいという程度の理由
  • SERIALを読み取るポートで内部プルアップ抵抗を有効にするようにした
    • pinMode (DATA_SERIAL, INPUT_PULLUP); のところ
    • コネクタにSFCパッドを接続していないときに状態を安定させるため

ArduinoXInput利用時の注意点

ArduinoXInputを利用する場合、Arduino IDEでボードに書き込む際に以下の注意が必要です。

  • XInput USB Core for Arduino AVR が必要
    • ボード選択に「x/XInput」のものを選択
  • 2度目以降の書き込みではリセット操作が必要
    • Pro MiroのGNDとRSTピンを2回、ショートさせる

接続と検証

まずは一旦ブレッドボードを使って配線して動作確認しました。

ゲームパッドとしての動作確認には Gamepad Tester のサイトが便利です。 hardwaretester.com

XInputの場合はXBOX 360 コントローラーとして表示されます。

ケースへの組み込みと配線

最終的に100均のカードケースに組み込みました。 配線は5本だけなので特に基板などは介さず直結しています。またUSBケーブルはあまり抜き差しするとArduinoを痛めるので(実際この実験中にも一つ壊した)、100均のケーブルを指したままにする形で組み込みました。

動画

今回、実験的に作業を動画にしてYoutubeにアップしてみました。

youtu.be

youtu.be

youtu.be

youtu.be

*1:アスキーグリップの状態が良いものをちょうど入手した

*2:Steamで配信されているゲームをプレイすることが多いし

*3:XInput対応か不明なものが多い/対応しているものはそこそこの価格

Synology RT2600acとMR2200acで構成されたメッシュWi-FiにRT6600axを追加した

Synology RT2600acとMR2200ac×2の計3台で構成されているメッシュWi-Fiに対して、

  • メッシュの親(プライマリポイント)を RT2600ac から新規に購入した RT6600ax に入替え
  • 取り外したRT2600acをWi-Fiポイント(子)として追加

という作業を行ったのでメモ。

背景

  • 現状の構成ではWi-Fiの入りが良くない部屋でPC作業をする必要が出てきたため、メッシュにポイントを追加することを検討
  • 現行の構成のまま追加ポイントとして足せるのはMR2200acだが、Wi-Fi 6にも対応していない数世代前レベルの機能であるMR2200acを新たに購入するのは2023年10月現在において魅力が乏しい
  • 少し調査したところ以下が判明
    • 現時点で最新のSRM 1.3.1ベースでは、RT6600axおよびWRX560をプライマリポイントとすることでRT2600acを子のWi-Fiポイントとして利用可能
    • 既存メッシュのRT2600acの、RT6600axおよびWRX560への入替えは公式にサポートされている(一から再構築する必要はない)

以上より、多少コストはかかるもののRT6600axを一台新規購入することで当初の目的を達成しつつネットワーク全体としての性能の向上や将来性の面でもデメリットの無い対応ができそうと判断した。

作業概要

公式のナレッジセンターの以下のドキュメントがピンポイントで適合する。

要約すると:

  • プライマリWi-Fiポイントの入れ替え
    • 既存構成のRT2600acとMR2200acのSRMを最新にアップデート
    • 既存構成をファイルにバックアップ
    • RT6600axを仮セットアップ
    • RT6600axにバックアップを適用
    • RT2600acの取り外しとRT6600axの接続
  • 子Wi-FiポイントとしてRT2600acを追加
    • RT2600acをハードリセット
    • Wi-Fiポイント追加の設定

となる。

以下、いくつかポイントのメモ書き。

プライマリWi-Fiポイントの入れ替え

  • 要はプライマリポイントの機器交換後に交換前のバックアップを適用することで構成を維持することが可能ということ
  • ただしSRMのバージョンについて以下を満たす必要がある
    • SRM のバージョンは 1.3以降(最新が望ましい)
    • SRM のバージョンが入替前後でパッチレベルまで一致している必要がある
  • SRM 1.2系かから1.3以上へのアップデートは自動では行えない模様
  • RT6600ax の初期設定は、とりあえずSRMにログインできれば良い
    • RT6600axがインターネットに接続されている必要はない
    • SRMにログインしてSRMのバージョンアップとバックアップの復元ができればそれでよい
      • ネットワークのSSIDなども適当で良い
      • ただし管理ユーザーのIDとパスワードはバックアップ後も引き継がれる模様なので既存設定の合わせておく方が良さそう
  • RT6600ax のSRMの更新
    • SRMのバージョンアップが必要なケースあり(出荷タイミングによっては不要なケースもありそう)
    • RT6600ax を直接インターネットに接続せず、ダウンロードセンターから取得してアップデートしても良い
  • バックアップから復元
    • RT2600acの取り外しやRT6600ax の接続前にバックアップを戻してしまって問題なかった
  • 機器の入れ替え
    • 物理的に RT2600acを外して同じようにRT6600ax を接続し、RT6600ax を起動すれば交換完了

メッシュの子Wi-FiポイントとしてRT2600acを追加

  • RT2600acのハードリセットが必要な点に注意
  • RT2600acのSRMを1.3.1にしておく必要がある
    • 今回の場合前段で既存構成から取り外す前に行われているので気にしなくて良い
  • Wi-Fiポイントの追加作業そのものは従来と全く変わらない

まとめと今後の展望

  • メッシュWi-Fiのプライマリポイントの入れ替えは公式でサポートされている行為でありドキュメントもそろっているので良かった
  • 作業自体も特にトラブルを起こすこともなくすんなり終わった
  • 今後のWi-Fiポイントの追加や入れ替えも必要応じてスムーズ対応できそう

Sony Float Run WI-OE610 を買った

『ながら作業用ワイヤレスヘッドホン』としてLinkBudsからSony Float Run WI-OE610 に買い替えてみました。

LinkBudsは自分の耳の形のせいもあるのかうまく装着が決まるまで何回かモソモソやり直すことがあったり、動きながら作業してると外れることもあったりで微妙なストレスになることがちょいちょいあった、というのが最大の理由です。

個人的なLinkBudsと比較して買い替えてよかったと思えた点は以下:

  • 装着がしやすい、装着に手間取ることがない
  • 落ちる心配がない
  • 連続使用時間が長い(カタログスペック上は倍近い)

ガッツリ音を楽しむときは別のヘッドホンを使用するのでこれに音質はあまり期待していませんでしたが、ながら作業用用途としては十分及第点という印象です*1。 音漏れも思ったよりないし、かなりいい感じに思えてます。

*1:そもそもLinkBudsもそれなりでしかなかった