2021年4月25日日曜日

「シンプルな(すぎる)画像ビューワー」更新

HPのほうで公開している 「シンプルな(すぎる)画像ビューワー」
すごーく久しぶりに更新。

少しだけ機能を追加しました。
画像の表示順を変更できるようになりました。
ファイル名、作成日時、更新日時の昇順 / 降順を設定できます。


・・・ちなみに、最近、
諸用で新規に購入したWindows10、64bitのPCに
旧バージョン(1.3)をインストールしてみたら、
正常に動作しないことが発覚 orz
どうやら同梱のファイル(DLL)に取り違えのミスがあった模様。
ちゃんと動作テストしてたと思ったのだけど、どこで間違えたのやら。
しかも長いことそのまま放置してたのね・・・。
もし、動かねーじゃん、という方がいたら失礼しました。


2021年3月10日水曜日

Logicool G13 スティック付近のスイッチの交換

また続いてLogicool G13の修理。

以前、スティックのそばにある2つのスイッチの片方(下側)がチャタリングを起こしていたので、接点復活剤でなんとかなっていたのだけど、最近またチャタリングを起こすように・・・

で、とりあえずまた接点復活剤を使ってなんとか改善したのだけれど、これはそろそろ交換しないとアカンかなと。

G13 ジョイスティックの基板
この写真の、スティックの下と横にある長方形の小さいスイッチ。

だがしかし、いろいろと探してみたのだけど、なかなか見つからない。

で、あるとき、それとは別にG13の乗り換え先としてRazerのアレとかコレとかどうなの? とか調べているときに、ORBWEAVERを修理している記事の写真に、似たような部品が映っているのを発見。実はだいぶ前にORBWABERは試しに買ってみた(が、いまいちでお蔵入りしていた)ものが手元にあったので、引っ張り出して分解、実物の該当部品を確認してみたところ、寸法も端子形状もG13のヤツとぴったり同じで、互換性がありそうだぞ、と。

Razer ORBWABER サムパッドの基板
Razer ORBWAVER のサムパッド部分の基板

ORBWAVERはちょっとお高いので、さすがにこれから部品を取るのは気が引けるので、修理記事にあった互換品を探してみた。

写真のはOMRONと書かれているけど、どうにもOMRON製の部品は見つからない。どうやらKailhという中国のメーカーのコレ ↓ が使えるらしい。

Kailh CMI873101D01-3 (メーカーのカタログページ)
http://www.kailh.com/en/Products/MS/MN/389.html

キーボードの交換用スイッチとかで時々聞く中国のメーカー。なるほど、キーボードだけじゃなくて、こういうスイッチも作ってるのね。

購入手段は、どうやら AliExpress しか無いっぽい?

10 個 kailh 高ミニマイクロスイッチで 10,000,000 サイクル機械的寿命 CMI873101D01
https://ja.aliexpress.com/item/4000343886996.html
レビューには、ORBWABERに使ったとかいうコメントがちらほら。
10個で$8.8(ざっくり1,000円ぐらい)。

この中国のwebストア、使ったことがなかったのだけれど、調べてみると、日本では見つけられないモノがいろいろあったりする一方で、いろいろトラブルが多いとかなんとか・・・。おっかなびっくりな感じでアカウントを作成、クレカを登録するのには若干不安を感じるので支払いはPayPal。配送方法は無料(ただし遅め)があるみたいなのでそれを選択。

注文して待つこと、約2週間で到着。ちゃんとストアで表示されていた日数の範囲内で届いた。

AliExpressから届いた部品と梱包。
乾燥剤が入っていたりして意外とちゃんとした梱包。

Kailh CMI873101D01-3 外観
スイッチ部品。上面にロゴが付いている。

Kailh CMI873101D01-3 中身
スイッチの中身。G13に付いていたものと、ほぼ同じ構造。
下敷きにしてあるのは、同梱されていたカード。

到着した部品を確認してみたところ、寸法や端子形状など、G13のスイッチ部品と全く同じ。押しボタンの部分が白い程度しか違いは無い。並べて比較してみた。

G13のジョイスティック基板と交換用スイッチ
G13の基板と、購入したKailh製のスイッチ。

問題無さそうなので、いざ交換作業。

G13のジョイスティック基板、スイッチを外したところ
スイッチを外したところ。
基板にちゃんとスイッチの向き(押しボタンの向き)がプリントしてある。

G13のジョイスティック基板、スイッチ交換完了
交換完了。
左下のが外した部品。よく見ると端子の根元が錆びている・・・

交換完了。
ジョイスティックの基板を本体に戻し、PCに接続しての動作確認も問題なし。

ということで修理完了。
これでまたG13を使っていけそうだ。


他のG13の修理記事:

ジョイスティックの可変抵抗器の交換
https://glsharp.blogspot.com/2021/02/logicool-g13.html

Logicool G13の修理
https://glsharp.blogspot.com/2017/04/g13.html


2021年2月15日月曜日

Logicool G13 ジョイスティックの可変抵抗器の交換

 だいぶ前にもG13の修理のことを書いたけど、今度はジョイスティックの交換。

ニュートラル位置で若干グラついたり、時々ニュートラル位置がずれていたりするようになってきたので修理に挑戦してみた。

ググるなりしてジョイスティック部分の可変抵抗器の互換品を調べてみたのだけど、記事が古かったりして、これだというモノがなかなか見つからない。

で、
試しに手元にあったPC用のコントローラーをバラして互換性がある可変抵抗器が入ってないかと探してみたところ・・・

・・・あったよ、全く同じのが!

ロジクールのF310r

下の写真は、G13から外した可変抵抗(左側)と、F310rの基板に載ってるジョイスティックの可変抵抗(右側)。


若干のマイナーチェンジ程度の差はあるようだが、ほぼ同一の部品が使われているようだ。

プラスチック製のスティック部分はだいぶ形が違うので、試してはみたけどF310rのスティックはG13には収まらなかった。なのでスティック部分はそのまま既存のものを継続。

実際に交換してみると、問題なく動作した。ニュートラル位置のぐらつきなども無くなり快適に。

ただ、半田付け時に部品が微妙に浮いていたのか、スティックの半球みたいな形の部分が、G13のスティックが出る穴の裏側(この表現で伝わるんだろうか)にほんの少しだけ当たってしまうようで、可変抵抗のスティックを刺す棒状の部分の先端を少しだけ(1mm足らず程度)削ったら、うまく収まってくれた。

F310rならド定番のコントローラーで安価かつ入手性も良いし、都合の良いものが見つかって一安心。といっても、そうしょっちゅう必要になる作業じゃない(といいなぁ)けど。



他のG13の修理記事:

Logicool G13の修理

スティック付近のスイッチの交換


2020年5月25日月曜日

C# (.NET)でMS Officeファイルを扱う - Apache POI & IKVM

C#でWordとかExcelのファイルを読み書きする手段としてはいくつかあるのだけど、無償で利用可能な手段だと、だいたいこの2つが定番っぽい。

Microsoft.Office.Interop

Microsoftが提供している、Visual Studioに付属するライブラリ。
ググればいくらか情報も出てくる。
導入も簡単。参照設定に追加するだけだし。

だけど、超遅い。
10ページほどのdocファイルからテキストを抽出するコードを書いてみたのだけど、
それだけでも5~6秒とかかかる。新しいdocx形式のファイルだといくらかマシなようだが。(2019年製のSSDにCorei5の安価なPCだったけど、それにしたってこれは重すぎる。)

扱うファイルが少数で、それほど実行速度が問題にならないならこれでいい。
さすがにMicrosoftが提供しているだけあって、図形の扱いなど複雑なこともできるのは利点かもしれない。

NPOI

Apache POI というJavaのOfficeファイルを読み書きするライブラリを.NETに移植したもの。
NuGetから導入できる。高速に動作する。

ただし、扱えるファイルの種類は xls, xlsx, docx の3種類のみ。
元のApache POIだと doc, ppt, pptx などOffice系のファイルは一通り対応しているのだけど、どういう理由か扱えるのは前述の3種のみ。
また、テキストボックスや図形などには対応できていないようだ。

で、問題は、

  • それなりの速度が欲しい
  • doc, ppt, pptx なども扱いたい
  • テキストボックスや図形なども扱いたい
という場合。

Java の Apache POI を .NET から呼び出せるようにすればいいんじゃね?

と思うのだが、それが難しいからこそ NPOI を作ってるんじゃないのかなー
とか思いつつ調べていたら、ずばりそういうのがあるようだ。


IKVM

公式
wikipedia
「Mono及び.NET Framework上で実装された、Java仮想マシンを含むJavaの実装」
「他実装と比べ2重の仮想化が行われるため速度面では不利ではあるが、.NET上からJavaの各種ライブラリ等をプログラミング言語レベルで一切意識せずに利用できる。」
だそうな。(wikipediaより)

2015年あたりで更新が終了してしまっているのが惜しいところか。

でもソースもバイナリも公開は継続しているので、利用可能。

使い方よくわかんないし、

だれかこれで Apache POI を .NET で使えるようにしたモノを公開してないかなー
とか日和ったことを考えながら調べていると、
・・・あったよ。NuGetにあるじゃん。


「poi」で検索するといくつかそれっぽいのがでてくるのだけど、
試してみたところ、作成者「qcat」さんの「poi」が使えるようだ。
(「poi-ikvm」という名前のもあるが、こちらは対応するファイル形式が限られていて、なんか半端なもの(失礼)のようだ。)

これをインストールすると、プロジェクトの参照設定に

「poi」に加えて「IKVM.~」というライブラリが大量に追加される。



Apache POI でググると情報はたくさん出てくるのに加えて、
JavaとC#は構文がかなり似ているので、それほど参考資料には困らないはずなので、
ここではPOIの使い方については省略。

ただ、実際に試してみると、docxファイルを開いたときにエラーが発生したので、その対処法について。

エラーの内容を見ると、なにかXML関連のライブラリの参照が足りてない様子。で、↑の画像の参照設定と、IKVMの公式サイトからダウンロードしてきたバイナリ一式(ver. 7.2.4630.5)を見比べてみると、XMLと名前の付くもので
  • IKVM.OpenJDK.XML.Crypto.dll
  • IKVM.OpenJDK.XML.Transform.dll
  • IKVM.OpenJDK.XML.WebServices.dll
  • IKVM.OpenJDK.XML.XPath.dll
の4つが足りてないようなので、これら4つのファイルを直接、参照設定に追加すると、無事にエラーが解消した。
(Visual Studio のソリューションエクスプローラーで「参照」を右クリック
→ 参照マネージャー左側の「参照」 を選択
→ 右下の「参照」ボタン(OKボタンのとなり)で、上記4つのdllを選択)

試してみると、wikipediaでは速度面では不利なんて書いてあるけれども、十分実用範囲内だと思われる。

10ページ程度のdocxファイルからテキストをすべて抽出するのに約200msほど、同じファイルをdoc形式で保存したファイルだと50msほど(なぜか旧形式のほうがずっと速い)だった。
もちろんファイルの内容やマシンスペックに依存するだろうが Microsoft.Office.Interop よりは断然速い。

この「qcat」さん製のPOIライブラリは、現在公開されている Apache POI (最新版は4.1 @2020年5月現在)と比べるとバージョンが古いのが難点か。

自前でApache POIをIKVMを通して使えるように、
あとでIKVMの使い方を調べておくべきかな。

※追記 @2020.05.31
POI+IKVMの実行時、内部で大量に例外をスローしているようだ。
例外処理はされているようなので途中でプログラムが落ちたりはしないが、デバッグ出力に大量にエラーメッセージのログが表示される。
このせいで重くなっているらしい。
デバッグ無しで実行すると、かなり軽くなる。
上で.docxファイルだと200ms、.docファイルだと50msほど、と書いているが、これをデバッグ無しで実行するとそれぞれ約50msとか約20msぐらいまで速くなる。

2019年3月17日日曜日

HP移転しました

なんだかYahooジオシティーズが2019年3月末でサービス終了するらしいので、
ホームページを移転しました。

http://tegetegeosprey.g1.xrea.com/

そっくりそのまま移転しただけで何にも変わってないし、
そもそもホームページ自体、最近更新してないけど・・・。

2017年4月21日金曜日

Nintendo Switchのドックを改造:画面の傷対策

Nintendo Switchを買ったのだけど、本体の液晶に貼った保護シート(反射低減のやつ)が、どうもいつの間にか画面の右側の縁にばかり傷が増えていくので調べてみると、どうやらドックの本体を格納するスペースが微妙に歪んでいる。

具体的には、格納スペースの、ロゴ側から見て右側のほうが左側よりも約0.5mmほど狭く、そのせいで格納スペースの内側の突起部分が画面と接触しているらしい。



なので、任天堂に修理に出したら・・・
異常なしとか言ってそのまま返してきやがった。

つまり、ドックに本体を格納すると画面に傷が付くのは仕様らしい。

何このクソ欠陥設計。

で、だ。

ドック自体はどうやら分解記事なんかを見ているとほとんど空っぽらしく、画面に接触する部分は切り落としてしまっても問題なさそうなので、やってみる。

まずは分解記事を参考にバラす。
といっても、少々特殊な形状のネジが使われているだけで、対応するドライバーさえあれば割と簡単にバラせる。

一枚だけ入っている基板と端子類とを接続しているフレキシブル基板を外すのが少々面倒だけど、ピンセットで外せるのでコレも問題ない。

問題の、ロゴが書かれている前面パネルは、外側と格納スペースの内側の部分とで2つのパネルが組み合わせてあるが、これは手でスライドさせれば簡単に外れる。
この内側のパネルが画面に当たって傷を付けている。これはいらないので捨ててよし。

ロゴが書かれている前面パネルを、ちょうど絵と文字の間のあたり、外した内側のパネルがハマる部分を切り落とす。無駄に厚みがありカッターとかでは切れないのでノコギリで。


格納部分の底部のパーツの前面側の突起は不要になるので、これも切り落としておく。
あとは切り口をヤスリで整えてから組み立てれば完了。
(ちょっと切り口がずれてしまったが、見た目は気にしないということで。)


本体を格納するとこんな感じ。


これで、画面に傷が付く心配も無くなった。
また、改造後のほうが差し込む距離がたった2cmほどになり、かなり格納しやすくなった。
格納時の固定ぐあいは、元々、格納部分の底部にゴム製の押さえが付いているので問題ない。

2017年4月14日金曜日

Logicool G13の修理

普段使ってるLogicoolのG13が、ジョイスティックの下側のボタンがチャタリングを起こすようになってうっとうしくなってきたのだけど、買い換えるにも地味に高いので、自分で修理してみてダメだったら諦めて買い換えるしかないかなー、という感じで自分で修理してみることに。

あっれ、こんなに高かったっけ・・・

ググってみると同じ箇所でチャタリング起こしてる人が結構いるようなので、自己流修理方法のメモ。

何はともあれ、まずはバラすところから。
裏側のゴムと中央の丸いところを剥がして6カ所のネジを外し、マイナスドライバーなどを使ってこじ開ける。

で、問題の箇所。


右下の黒くて四角いのが問題のスイッチ。
よく見るとなんか簡単にバラせそうだったのでイジってみると・・・


先のとがったピンセットで簡単にカバーが外れた。
押し下げるボタン部分のパーツが小さいので注意。
ピンが3本あって、そこにバネを兼ねたスイッチの金具が引っかけてある構造。
このピンと金具が汚れて(サビて?)いたので、たぶんコレが原因で接触不良 → チャタリングを起こしているのかと。(上の写真は汚れを落とした後。)
ピンと金具を#1000ぐらいの目の細かいサンドペーパーで軽く磨いて終了。

で、ついでに、この部分のキーを押し下げるときにギシギシ引っかかるので、そこも直してしまおうかと思いボタン側のプラスチックのパーツを見ていると、上記のスイッチを押すパーツが折れ掛かっている、というか、まだ折れてないけど、プラスチックをグニャグニャ繰り返し曲げていくと折れるその一歩前みたいな、やばそうな状態。

なので、このパーツは折れる前に複製して置き換えることに。
こんなのを使うと、簡単にプラスチックの部品を複製できます。



  

「型取りくん」は、名前の通り。
熱湯で温めると柔らかくなる合成樹脂。
素手で扱えるし、手にもほとんどくっつかないので扱いやすい。
柔らかくなったところに複製したい部品を押しつけて埋めたら、冷ますだけで即、型取りが完了する。

「プラリペア」は、粉末と液体を混ぜ合わせると化学反応を起こして固まるプラスチック。というかアクリルの原材料みたいなものらしい。20~30分程度で硬化するし、粉末と液体の分量もかなり適当でいいし、硬化後の強度もあるので(アクリルですし)、小さいプラスチック部品の補修などに使いやすい。

で、元の部品(黒いほう)と複製したヤツ(白いほう)、型を取った「型取りくん」。
写真では裏になってる側にも突起があるので、両面を型取りしてます。
型取りくんに刺さってるのは、上面と下面の位置合わせ用の針金。

型をプラリペアの粉末でテキトーに埋めて、硬化用の液剤をややあふれ気味に加えて30分ほど放置。硬化したら型から取りだして(型はそんなにガチガチに硬くはないので、型を曲げればすぐに取り出せる)、気泡をまたプラリペアで埋めて、ヤスリとデザインナイフで形を整えて完了。・・・といいつつ、この形を整えるのが手間なんだけど。


複製したパーツをはめたところ。左のネジ止めされてる白いヤツ。
どうやらコレも、同じように破損しているらしき報告(グチ?)がwebで散見されます。


オリジナルと複製したのとで交換してみたりしながらボタンを押したときの引っかかりの様子を見ていると、どうやらこのパーツが原因の様子。
リング状のネジ止めする部分が、微妙に穴の内側に引っかかるらしい。
なので、複製したヤツはすこーしだけ外径を小さめに削ってます。だいたいネジの頭と同じぐらい。

あとは分解したのを元に戻してネジ止めして修理完了。
ちゃんとチャタリングやボタンの引っかかりは解消しました。

スイッチのチャタリングだけならたぶん1時間ぐらいで終わってたはずなのに、ボタンの引っかかりの原因を調べたり、パーツを複製したりなんかしてたので硬化時間を待ったりして、だいたい3~4時間ぐらいかかったかも。


追記
他の部分の修理もしたので、それらは下記の記事にて。

ジョイスティックの可変抵抗器の交換

スティック付近のスイッチの交換