読者です 読者をやめる 読者になる 読者になる

てけとーぶろぐ。

ソフトウェアの開発と、お絵かきと、雑記と。

AndroidDrawableResizer

Androidアプリ作成の際に、画像を使う場合
各解像度用の画像を用意するのが望ましいのだけど
手でつくっていると面倒なのでツールを作った。

GitHub - kurima-yoshida/AndroidDrawableResizer

settings.json に設定を書き込んで
変換元のファイルを引数として渡して実行すると
指定のフォルダー内に変換後のファイルが生成される。

拡大縮小の他に、非透明色部分を指定の色で塗りつぶす機能も付けている。

例えばMaterial icons - Material Designでダウンロードしたアイコンを好きな色にできる。

Windows用の実行ファイルは以下。

drisezer100.zip

一時的にパスを通したコマンドプロンプトを起動するバッチ

コマンドプロンプトから実行するソフトには
パスを通しておいた方が使いやすいものが多いけど

いちいち環境変数pathに追記していたらpathの値がえらい長くなるわ
ソフトが不要になってもpathから取り除き忘れるわ。

それを避けたい場合はコマンドで一時的にpathに追記すればいいけど
何度も使う場合はいちいちやってられない。

そんなときには「一時的にパスを通したコマンドプロンプトを起動するバッチ」を用意しておくと便利。

例えば「C:\Python27」にパスを通した状態でコマンドプロンプトを起動するバッチファイルなら以下のような感じ。

cd /d %~dp0
set path=%path%;C:\Python27
cls
%windir%\system32\cmd.exe /k

1行目はおまけでバッチファイルのあるディレクトリーをカレントディレクトリーにしている。
4行目でコマンドプロンプトを起動、そのまま表示しておく。

参照:
batファイルで、そのファイル自身のパスを取得する - 砂漠の音楽

ScreenOCR(2)

ScreenOCR で紹介した「ScreenOCR」のソースコード、公開しておきます。

GitHub - kurima-yoshida/ScreenOCR

TesseractというオープンソースOCRがあるらしい。これを組み込めばオフラインで動くものが作れるのだろうなぁ。

tesseract-ocr · GitHub

100均素材でRaspberry Piケースをつくる!

本記事はMorning Project Samurai Advent Calendar 2016の12/5の記事として作成しました。

Raspberry Piで何か、例えば監視カメラなんかをつくったとき、何もしないと基盤むき出しの配線ぐちゃぐちゃになってしまいます。
そんな状態を避けるために最低限のケース(ガワ)を作ってみましょう。

f:id:kurimayoshida:20161203215927j:plain

材料

  • Raspberry Pi 2 Model B
  • はがきケース(100均(ダイソー)で調達)
  • ネジ(M2.6 長さ8mm)
  • ナット(M2.6)
  • スペーサー(M2.6 長さ3mm)
  • ワッシャー(M2.6)

ケースとして今回ははがきケースを選択しました。LANケーブル、USBケーブル、HDMIケーブル等をつなぐ場合は大きめのものを使い、ケースに穴を空けてケーブルだけ出すと見た目がすっきりします。また、開閉しやすいものを選ぶとメンテナンスが楽です。

f:id:kurimayoshida:20161203215524j:plain

ネジ類はRaspberry Piの基盤にある穴にあわせてネジ径 M2.6 のものを使います。
あまりお店に置いていないサイズらしいのですが渋谷の東急ハンズなどにありました。
通販だとヒロスギネットが少量から購入できておすすめです。

ケースとRaspberry Piにネジを通してナットでとめるだけなのですがRaspberry Piの裏側はデコボコなのでケースとRaspberry Piの間にスペーサーが必要になります。

ネジは、ネジにワッシャー、ケース、スペーサー、Raspberry Piと通してナットで止められる長さのものを選んでください。

工具

  • ドライバー
  • ピンバイス(タミヤ クラフトツール 精密ピンバイスD 74050)
  • ドリル刃(タミヤ クラフトツールシリーズ No.49 ベーシックドリル刃セット 74049)
  • ニッパー
  • 棒ヤスリ(半丸など丸面があるもの)
  • 紙ヤスリ(400番くらいの細かいもの)
  • コンパス(両方の脚の先が針になっているもの)

タミヤ クラフトツール 精密ピンバイスD 74050

タミヤ クラフトツール 精密ピンバイスD 74050

手順

ケースにRaspberry Pi固定用のネジ穴を開ける

Raspberry Piのケース内での位置を決め、ケースにドリルでネジ穴を空けます。
ドリル刃は2.5mm径のものを使います。
ケース内にRaspberry Pi を置いて、その状態でRaspberry Piのネジ穴に上からドリル刃を通してケースに穴を空けます。

1つ穴が空いたらスペーサーを入れてネジを通し、ナットで固定してしまいます。
ケース内にRaspberry Pi を置いているのに対して裏からネジを通す形になります。
裏から、ネジ頭→ワッシャー→ケース→スペーサー→Raspberry Pi→ナット の並びです。

この状態で残りのRaspberry Piのネジ穴からドリル刃を通してケースに穴を空けていけば穴の位置を間違うこともありません。(ドリル刃を垂直に通すようには注意)

穴を空け終わってネジで止めたのを裏から見るとこんな感じです。(写真では上の説明と逆でナットが表になってしまっていますがミスです…)

f:id:kurimayoshida:20161203220024j:plain

ケースにケーブル用の穴を開ける

Raspberry Piに繋いだケーブル類を通すための穴を空けます。
ケーブルを通すためにはコネクターを通さなければなりませんからそれなりの大きさの穴を開けることになります。

まずケースに、両方の脚の先が針になっているコンパスで、開ける穴の形に円を描きます。(針で円の形に傷をつける)
この円の少し内側に、円に沿う感じでピンバイスで穴をいくつも空けていき、円を一周したら隣り合う穴同士をニッパーで繋いで切り取り、あとはヤスリで仕上げます。
棒ヤスリで円の痕に近づくように削っていき、あと0.2ミリくらいになったら紙ヤスリを棒ヤスリに巻きつけて微調整をかける感じです。

塗装後ですけど、穴はこんな感じ。

f:id:kurimayoshida:20161203220903j:plain

Raspberry Piをケースに固定する

Raspberry Piをネジでケースに固定し、配線し、完成。

写真だと脚ついてるけど…?

これも100均(ダイソー)で調達したスマホ用の脚です。これのすばらしいところは分解するとナットが手に入るところ。
このナット、一般的なカメラの三脚に対応していて、三脚の変更にも対応できちゃう。

Raspberry PiにLakkaをインストールしてゲーム機にする

ファミコン自作にて「recalbox」や「RetroPie」といったRaspberry Piをゲーム機のようにするエミュレーター専用OSの名をあげた。

実際試してもみたのだけど、操作方法が洗練されておらずゲームパッドで完結しないところがあったり、画面遷移や画面デザインも若干つぎはぎな印象を受けた。

そんなところ、もっと良さそうなものを見つけた。それが「Lakka」だ。

日本語でインストール方法を説明しているサイトが少なそうだったので書いておく。

Lakkaのイメージファイルのダウンロード

Lakka documentation - Disclaimerにアクセスし「Get Lakka」をクリック。
操作中のOS(例えばWindows)を選択。
LakkaをインストールしたいRaspberry Piの種類(例えばRaspberry Pi 2)を選択。
「Download Lakka」をクリック。圧縮されたイメージファイルがダウンロードされる。

Raspberry Pi用のSDカードの準備

LakkaをインストールするRaspberry Pi用のMicroSDカードを用意する。
容量はLakka自体には1GBも必要ないので8GBもあれば十分だがエミュレーター用のロムファイルをどのぐらい入れたいのかによってお好みで。

圧縮されたLakkaのイメージファイルを7-zipなどで解凍する。

Win32DiskImagerを使って解凍したLakkaのイメージファイルをSDカードに書き込む。
Win32DiskImagerを起動して、Image FileとしてLakkaのイメージファイルを、DeviceとしてSDカードのドライブを選んでWriteをクリックすればOK。

Raspberry Piの起動

Raspberry Piに出来上がったSDカードを挿入し、ディスプレイ、USBゲームパッド、USB無線LANアダプターを接続して電源を入れる。
Lakkaが起動し、USBゲームパッドで操作できるはず。

iBUFFALO USBゲームパッド 8ボタン スーパーファミコン風 グレー BSGP801GY

iBUFFALO USBゲームパッド 8ボタン スーパーファミコン風 グレー BSGP801GY

BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2

BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2

ネットワーク設定

Lakkaのメイン画面から歯車のアイコン→Wi-Fiと進み
接続するWi-Fiスポットを選択する。
Passphraseを入力するとネットワークに接続される。

Lakkaのメイン画面からLakkaのアイコン→Informationと進み
Network Informationを選択する。
「Interface(wlan0):」に続くIPアドレスをメモする。

ゲームのROMファイルの転送

PCから先程メモしたLakkaのIPアドレスに接続する。
例えばPCのOSがWindowsで、LakkaのIPアドレスが「192.168.12.5」だったら
エクスプローラーのパス欄に「\\192.168.12.5」と入力する。
するとLakka内のフォルダーが表示されるのでその中の1つ「ROMs」フォルダー内にゲームのROMファイルを置く。

Lakkaに戻り、Lakkaのメイン画面から+のアイコン→Scan Directoryと進み
romsを選択、<Scan This Directory>を選択すると、ROMsフォルダー内に置いたROMファイルが認識される。

コントローラーの設定

ゲームからLakkaのメイン画面に戻るためのボタンを設定する。
ボタンの少ないゲームパッドで初期設定だと存在しないボタンが設定されている事になりゲームから戻れずハマるので注意。

Lakkaのメイン画面から歯車のアイコン→Input→Menu Toggle Gamepad Comboと進み
ボタンの組み合わせ(例えばL1+R1+Start+Select)を選択する。

ゲームの実行

認識したROMファイルに応じて、エミュレーターのアイコンが増えているので、そこからゲームを選択してプレイする。

ゲームの中断

ゲームを中断する時はコントローラーの設定で設定したボタンの組み合わせを押す。

Raspberry Piのシャットダウン

Lakkaのメイン画面からLakkaのアイコン→Shutdownを選択する。
少し待つとシャットダウンされる。

ScreenOCR

個人的に欲しかったので、画面の任意の領域からOCRで文字を読み取るツールをつくった。

何のことなのか伝わりづらいので絵付きで説明すると

ツールを起動して…
f:id:kurimayoshida:20161112003314p:plain

Ctrl+F1で画面がグレースケールになるので
OCRで読みたい領域をドラッグして選択する(赤くなる)。
f:id:kurimayoshida:20161112003323p:plain

領域内の文字を読み取った結果がウィンドウ右のテキストボックスに表示される。
f:id:kurimayoshida:20161112003333p:plain

ダウンロードはこちら

使用にあたってはFree OCR APIの「Register for free API key」から登録し、
取得したAPI keyをsettings.jsonに追記する必要があるのでご注意ください。

<2016/12/11追記>
ソースコード公開しました。
GitHub - kurima-yoshida/ScreenOCR

ChromebookにインストールしたUbuntuで日本語入力できるようにする

日本語入力したいだけならわりと短い手順でできることがわかった。
先回のシステムイメージバックアップで気軽にリトライできるようになり何度か試したおかげでもある。
以下手順。なおこの手順だと日本語入力できるだけでUIは英語のままです。

言語パック、日本語フォント、日本語IMEのインストール

以下のコマンドで「language-pack-ja-base」「language-pack-ja」をインストールして、
適当な日本語フォント(ここではモトヤマルベリとモトヤシーダ)をインストールして、
日本語IMEのMozcをインストール。

$ sudo apt-get update
$ sudo apt-get install language-pack-ja-base language-pack-ja
$ sudo apt-get install fonts-motoya-l-maruberi fonts-motoya-l-cedar
$ sudo apt-get install ibus-mozc

あとはGUIからの設定。

キーボードの設定

日本語キーボードなのに英語キーボードと認識されていたので以下で修正。

Applications Menu → Settings → Keyboard
→「Keyboard」のダイアログが表示されるので「Layout」タブを選択
→・「Use system defaults」のチェックを外す
 ・「Keyboard model」「Change layout option」「Compose key」を「-」に
 ・「Keyboard layout」を「jajpanese」のみにする
  (Addからjapaneseを選ぶと「Layout」が「japanese」で「Variant」が空で追加でき
  これで問題なさそう。)
→「Close」

日本語IMEの設定

Mozcを使えるようにする。

Applications Menu → Settings → Input Method
→「Input Method Configration」のダイアログが表示されるので「OK」
→Do you explicitly select the user configration?「Yes」
→「default」を選択して「OK」

Applications Menu → Settings → Keyboard Input Methods
→「IBus Preference」のダイアログが表示されるので「Input Method」タブを選択
→・「Customize active input methods」にチェックを入れる
 ・「Select an input method」から「Japanese - Mozc」を選択し「Add」をしたりして
 「Input Method」を「Japanese - Mozc」のみにする
→「Close」

IBus Daemon自動起動するようにする。

Applications Menu → Settings → Session and Startup
→「Session and Startup」のダイアログが表示されるので
 「Application Autostart」タブを選択
→「Add」
→「Add application」のダイアログが表示されるので
 「Name」「Command」に「ibus-daemon -rdx」と入力して「OK」
→「Close」

ログインし直すと「半角/全角」キーでIMEのON/OFFができるようになっている。