扇形PCデスクの自作(組立編)

前回:扇形PCデスクの自作(設計編)

天板の到着

当初の予定日より数日早く出荷され、注文確定から年末年始を含めて6週間程度で到着した。

天板の加工

位置を測りつつ脚を仮置きした。 ボルトで固定する位置に、穴の中心と円周が分かるようにシャープペンシルで印を付けた。 ここに鬼目ナットを埋め込むための下穴を開けていく。

いきなり径の大きな穴を開けると位置がズレる恐れがあるので、直径1mm~11mmまでドリル刃を交換しながら1mmずつ穴を広げていった。 また、穴の深さが分かるようにドリル先にマスキングテープで目印を付け、貫通させないように慎重に掘り進めた。
穴が浅すぎても鬼目ナットがきれいに埋め込めないため、千枚通しに目印を付けて適宜穴の深さを確認した。

穴が掘れたら、木くずを除去して鬼目ナットを埋め込んだ。

完成

天板と脚をボルトで固定した後、裏返して完成。

振り返り

無事に脚を取り付けることができ、満足できる仕上がりとなった。
今回の反省点をまとめると主に以下の3つ。

ボルトの長さを間違えた

最初は皿ボルトを購入したのだが、必要な長さよりも短かった。 調べてみると、基本的にはボルトの長さ表記はボルトの頭を含まないが、皿ボルトについては頭を含めた全長を指すらしい。

注意したいのは、他の小ネジやボルトなどの頭のあるネジの寸法は首下からの長さなのですが皿頭の場合は全長、丸皿頭の場合は丸みを除いた皿部の最大径から端までが長さとなります。
参考:十字穴付き皿小ねじ | 富田螺子株式会社

長さが短かったことに加えてそもそも皿頭だと収まりが良くなかったので、ボタンボルトを買い直した。

下穴の加工が面倒だった

今回は自分で下穴を開けたが、貫通させないように少しずつ穴を広げていく作業に時間がかかった。 また、天板を床に置いて作業していたため、やや腰に負担がかかった。 天板を購入したマルトクショップでは穴開け加工の有料オプションもあったので、依頼した方が良かった気がする。

もう少し安定感がほしかった

実用上は特に問題ない程度の安定感はあるが、机に力を加えてみると少し揺れるような状態となった。 どっしりとした机にするため、脚と脚の間に棒を入れて補強するなどの手もあるかもしれない。

扇形PCデスクの自作(設計編)

背景

これまで使用していたPCデスクは奥行きが45cmで、作業するには手狭だと感じていた。 サイズ・デザイン共に満足できる製品を探すよりは自作したほうが早そう、ということでPCデスクを自作した。 自作といっても天板の設計のみで、脚は既製品を購入して組み合わせただけなので、そこまで難しいものではなかった。

天板の設計

天板はマルトクショップという木材通販サイトで購入した。 このサイトでは樹種やサイズ等をフォームに入力して木材を注文することができる。 また、フォームに入力することができないものについても図面を送ると見積もりをしていただけるようなので、図面を作成して送ってみることにした。

天板の形状は、自分が座った位置から等距離に色々なものを置けると便利なのでは?という考えから扇形にしてみた。 部屋に配置したときにデッドスペースができそうだが、そこは後々考えることにする。

Fusion 360で以下の3Dモデルを作成した。

top_board_3d

Fusion 360では、3Dモデルを元に2Dの図面に出力できる便利な機能がある。 2Dの図面に出力後、寸法や加工用の注釈を追加したものが以下の図面。

top_board_2d

木材加工については、面取り加工塗装など、マルトクショップのサイトに分かりやすくまとめられている。 一通り読んだので少し詳しくなった気がする。

樹種や塗装方法の指定とともにpdfの図面を送ると、切り出し元の木材のサイズと木目方向を確認する図面の返信が届いた。 確認後、見積もりとともに決済用のリンクが送られて来るので、支払いを行うと注文が完了となる。

最終的に以下の見積もりとなった。

アカシア(節・白太有り) 集成材フリーカット 25*840*1838mm | 面内側C面(表)+ 磨き その他糸面+磨き ◆ 反り止め:無し ◆自然塗料クリア塗装
※別紙図面加工 | 三方向使用
単価:37680 円 数量:1 金額:37680 円

脚の選定

机に使用する脚を検討し、価格の観点からニトリの組み合わせデスク「プレフェ」用の脚を採用した。 机の手前側にスペースをなるべく取りたいので、両端にT型脚を使用することにした。 また、天板の重心を考慮すると両端のみだとバランスが悪いので、真ん中に脚を追加した。 真ん中には2本セットのうち1本を使用したので、1本余った。

固定方法の検討

天板と脚の固定方法は、付け外しができるような形にしておくと引っ越しの際に都合が良い。 そこで、木ネジで脚を固定するのではなく、天板に鬼目ナットを埋め込んで脚をボルトで固定することにした。

「プレフェ」に付属しているボルトを実測してみたところ、M8の1.0mmピッチであった。 それに適合する鬼目ナットはあまり見当たらなかったため、ボルトを別で用意した。

購入品まとめ

購入したものを表にまとめた。 部品のほか、下穴を開けるために必要な径のドリル刃が手元になかったので、合わせて購入した。 合計で49,089円だった。

部品

品名 価格※ 数量 リンク
天板 37,680 1 https://shop.woodworks-marutoku.com/
T型脚 2,500 2 https://www.nitori-net.jp/ec/product/6240424/
昇降脚2本入り 2,500 1 https://www.nitori-net.jp/ec/product/6240422/
鬼目ナット 呼びM8長さ13mm 1パック(6個) 395 4 https://www.monotaro.com/p/4175/5131/
六角穴付ボタンボルト 呼びM8長さ15mm 1パック(29個) 791 1 https://www.monotaro.com/p/0552/5283/

工具

品名 価格※ 数量 リンク
六角軸木工用ドリルセット 945 1 https://www.monotaro.com/p/6087/9316/
六角軸TiN鉄ドリル ドリル径11mm 593 1 https://www.monotaro.com/p/5469/4999/

※ 価格は購入時点の税込み価格

組立編に続く

【Mac】SpringToolSuite4(STS)でパッケージが同一階層にまとめて表示されない

概要

事象

MacのSpringToolSuite4で「Package Explorer > Package Presentation > Hierarchical」を選択した際に、以下のように同一階層にまとめて表示されない場合がある。

> aaa
   > bbb ← 同一階層に"aaa.bbb"のようにまとめて表示してほしいが、別の階層として表示されてしまう
      > ccc
      > ddd
   .DS_Store ← STS上は表示されない

原因

表示するディレクトリに.DS_Storeファイルが生成されている。

対処

以下のコマンドで.DS_Storeファイルを削除する。

find . -name .DS_Store -print -delete

補足

SpringToolSuite4ではパッケージの表示形式としてHierarchicalとFlat の2つがあり、それぞれ以下のように表示される。

  • Hierarchical
> aaa.bbb  
  > ccc  
  > ddd
> aaa.bbb.ccc
> aaa.bbb.ddd

Hierarchical表示の場合、他にファイルがない場合は同一階層にパッケージがまとめて表示されるが、.DS_Storeファイルが存在する場合には別の階層として表示されてしまう。この状態だとパッケージの階層が深い場合に開きたいファイルを開く手間が増える。
一方でFlat表示にすれば同一階層に表示されるものの、パッケージの数が多い場合にやや見づらくなる。
どのタイミングで.DS_Storeファイルが生成されるのかは不明だが、このファイルを削除することで期待通りに表示される。

削除コマンドについて

findコマンドで、対象ディレクトリ以下の指定したファイルを再帰的に削除する。

find <target_directory> -name <file_name> -print -delete

-name:findする対象のファイル名を指定
-print:対象のファイルを表示
-delete:対象のファイルを削除

Androidアプリのリバースエンジニアリング手順

Androidアプリのソースコードが気になったので、リバースエンジニアリングをしてみた。 手順をまとめた。

関連するファイルの種類

  • apk
    Androidアプリのパッケージ。Google Playではこのファイル形式でアプリが配信される。
  • dex
    Java(Kotlin)のファイルをAndroid環境で実行可能な形式に変換圧縮したもの [1]
  • jar
    Javaのファイルをまとめて圧縮したもの。
  • class
    Javaのコードをコンパイルしたもの 。

手順

実機からapkを取得

AndroidスマホをPCに接続し、以下のコマンドで実機に入っているパッケージの一覧を取得する。今回は、ヨドバシカメラ電子書籍アプリdolyを見てみることにした。

> adb shell pm list packages
...
package:com.yodobashi.doly
...

次に、取り出したいパッケージのパスを取得する。

> adb shell pm path com.yodobashi.doly                
package:/data/app/com.yodobashi.doly-nPQjQrYSk9EIi7lTI85-GA==/base.apk

そして、取得したパスを指定し、base.apkを実機からコピーする。

> adb pull /data/app/com.yodobashi.doly-nPQjQrYSk9EIi7lTI85-GA==/base.apk
/data/app/com.yodobashi.doly-nPQjQrYSk9EIi7lTI85-GA==...lled, 0 skipped. 33.9 MB/s (36025531 bytes in 1.013s)

apkからdexを取り出す

コピーしたbase.apkをbase.zipにリネームし、解凍する。
中に入っているclasses.dexを取り出す。

dexからjarへ変換

d2j-dex2jarを使用し、classes.dexをjarへ変換する。 sourceforgeからDLし、d2j-dex2jar.batを実行する。

> ./d2j-dex2jar.bat ./classes.dex
dex2jar ./classes.dex -> .\classes-dex2jar.jar
Detail Error Information in File .\classes-error.zip
Please report this file to http://code.google.com/p/dex2jar/issues/entry if possible.

エラーが出たようなのでclasses-error.zipを確認すると、summary.txtには以下のように書かれていた。

There are 40 methods fail to translate.

一部変換に失敗したよ、とのことだが、だいたいは変換できたようなので次へ進む。

jar(class)をjavaとして読む

JD-GUIで、変換したjarを開く。すると、jarの中に入っているclassファイルを逆コンパイルして、javaファイルとして表示してくれる。

アプリのソースコード

f:id:erakuma:20210424200345p:plain
JD-GUIのスクショ

ソースコードを見てみると、クラス、メソッド、変数の名前がアルファベット1文字になっていたり、不要と思われるクラスがいくつも存在したり、難読化されている。 一方、そのままの名前で読めそうな部分もあった。

参考

Android リバースエンジニアリング
Android リバースエンジニアリング 入門
[1] dexファイルってなんだっけ

はじめに

 ブログを開設しました。
 初投稿なので、まずはブログ開設の動機でも書いておこうと思います。

 私は何かをつくるのを好み、それに関して個人的なメモを残しています。このメモは適当に書かれているので、後で読み返しづらいです。そこで、もう少し体裁を整えてブログという形で残し、読み返しやすくしようという考えがあります。
 また、せっかく書いたものを個人で完結させてしまうのはもったいない、と以前から感じていました。普段、自分も誰かしらのブログのお世話になっているので、ほんの少しでもお返しができたらいいなぁと思います。

 今回、とりあえず場を用意しておこうと考え、重い腰を上げて開設に至りました。ブログ開設~初投稿で、"hello, world!"まではできたかなぁという気分です。どの程度続くかも分かりませんが、細々とやっていけたらと思います。
 こんにちは。