てけとーぶろぐ。

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

ポケモンGO。

つい先日の友人とのやり取り。

「みんなポケモンGOやりすぎ!

「あのゲーム、歩きスマホ前提だよな。

「いや、操作するとき止まればだけど、まーなー。

「歩きスマホ法が制定されたらスゴそう。

「現行犯でどんどんつかまるな。

「むしろ反発してやるワルガキとかいそう。
 つかまったことを勲章にして
 『ヘヘッ、オレなんか3回もつかまったぜ!』

「つかまっちゃまずいだろ…
 『間抜けなヤツらだ。ポリ公につかまりやがって。俺様ほどになれば…』

「そしたら警察の間で、歩きスマホしてる奴のことを
 隠語で『ポケモン』って呼びだしそう。

「『あ、おれ、今月ポケモン10匹つかまえましたよ。』

「『署長、あそこ、結構ポケモンいますよ。』

「罰金だったらバンバンとれそうだな。

「消費税上げなくて済みそう。

「罰金で財政立て直すとかどんな国だよ。

「『この…ポケモンをお金儲けの材料としか見られないのか!』

「サトシかよ!

…。

英語 音読 筆記 単語帳(1)

というわけで久々にAndroidアプリリリースしました。

英語用の単語帳(単語カード)アプリ。

英語 音読 筆記 単語帳 - Google Play の Android アプリ

特徴としては、音声入力や文字入力で暗記を確認できます。

あとやりたいのは作成した単語帳の共有。
手軽に友達と交換とかできるようにしたい。
サーバー用意しなきゃだろうなー…。

現状はファイルへのエクスポート・ファイルからのインポートのみ対応です。

f:id:kurimayoshida:20160530224929p:plain:w300

Androidアプリのアイコン作成

また新しいアプリを作るにあたってアイコンを作っていたのだけど
近頃の Material design 推しのGoogleさんには
結構細かいガイドラインがあるようで、これに従えばそれっぽい感じにできそう。

Icons - Style - Google design guidelines

で、つくるも…

f:id:kurimayoshida:20160504190611p:plain

こら、「Don't.」って言われるパターンだわ…。中途半端に従ってはいけない…。

それから、リソースとして含めるアイコン画像は解像度の種類ごとに作るのが望ましいのだけど、これまた作るのが面倒。
ストア用に 512pixel x 512pixel で作成しておいて、あとはそれを元に、以下のサイトで解像度ごとのものを作成すると楽ちん。

MakeAppIcon - Generate app icons of all sizes with a click!

install.wim や install*.swm から HDD を復元する

Windows 8 のノートPCを購入時の状態に戻したくなった。

HDDの領域を目一杯使いたかったのでHDD内の回復パーティションは削除している。

でも大丈夫。購入直後に復元ディスク(DVD4枚組)をつくっているから。

…て、あれ、復元ディスクからブート出来ない…。

この状態から復元を試みる。

*.SWM ファイルの収集

復元ディスク1枚めの sources フォルダ内や 2枚目以降のドライブ直下にある
Install*.SWM(*には連番の数字) というファイルをコピーして適当なフォルダに格納する。

Install*.SWM を install.wim へとマージする

以下等から Windows ADK をダウンロード、インストールする。

Windows ADK のダウンロード - Windows ハードウェア デベロッパー センター

インストールするのは Deployment Tools のみでOK。

スタートメニューにできた「展開およびイメージング ツール環境」を管理者として実行。
表示されたコマンドプロンプトで以下を実行。

DISM /Export-Image /sourceimagefile:install.swm /SWMFile:install*.swm /Sourceindex:1 /DestinationImageFile:install.wim

※「install.swm」「install*.swm」は先程収集した*.SWM ファイル

install.wim ができるので、USBメモリーにしまう。
install.wim は場合によっては1Gを超える大きさでNTFSフォーマットでないと入らないので注意。

実は*.SWMのままでも大丈夫なのかもしれないけれど試していません…。

USB回復ドライブ の作成

以下を参考に install.wim が入ったのとはべつにUSB回復ドライブを作成する。

USB 回復ドライブを作成する - Windows ヘルプ

イメージの適用

USB回復ドライブで起動する。

ここでさらに、install.wim の入ったUSBメモリーも接続する。

トラブルシューティング」→「詳細オプション」→「コマンドプロンプト
コマンドプロンプトを起動。

install.wim の入ったUSBメモリーのドライブを確認。

HDDをクリーンしてパーティションを切り直す。

select disk 0
clean
create partition primary
format quick fs=ntfs label="Windows"
assign letter="C"
exit

参考:DISM を使ったイメージの適用

以下のコマンドで「install.wim」を適用する。

Dism /apply-image /imagefile:G:\install.wim /index:1 /ApplyDir:C:\

※「G:\install.wim」は「install.wim」のパスに合わせて変えること。

これをしただけだとHDDからの起動に失敗するので
再度USB回復ドライブで起動し
トラブルシューティング」→「詳細オプション」→「スタートアップ修復」
を行うと無事起動できるようになる。

Ruby 1.9.3 + Ruby/Tk + ocra でWindowsデスクトップアプリ作成

数年前に Ruby 1.8 で作ったアプリImageSpiderが動かなくなったとの報告を受け、直そうとするも Ruby はもう 2.3 とかなんだそうで。

とりあえず Ruby 1.9.3 にしたけど
お気に入りだったGUIライブラリwxRubyは更新が止まっているわ、非同期処理が前と同じやり方で動かないわ、他にしっくりくるGUIライブラリがないわ。

仕方なく見た目が嫌いで一度捨てた Ruby/Tk を使うことに。
いくらか工夫すると少しはましになった。

ポイントを書き残しておく。

ocra用のrequire

以下のような相対パスでのrequireはocraでexeファイルにした時に読み込みに失敗してしまう。

require './script'

以下のように書き換えた。

require File.expand_path(File.join(File.dirname(__FILE__), './script'))

いや、日本語を含むパスだと失敗するのでこうか。

require File.expand_path(File.join(File.dirname(__FILE__), './script').encode(__FILE__.encoding))

と思ったらいいものがあった。

require_relative './script'

Ruby/Tkでのウィンドウのアイコンの設定

Medfreak / Ruby/Tk タイトルバーのアイコンを変更する how to change the window icon using Ruby/Tkを参考に、更に、前述の手法で、ocraで同梱したアイコンファイルを読むように。

root = TkRoot.new
iconFilePath = File.expand_path(File.join(File.dirname(__FILE__), 
  './icon.ico').encode(__FILE__.encoding)).encode(Encoding::UTF_8)
Tk::Wm.iconbitmap(root, iconFilePath)

Ruby/Tkでのウィンドウのタイトルの設定

Tk.root.title("タイトル") 

Ruby/Tkでのパディングの設定

Ruby/Tkのサンプルを見ると、大体が隙間なくコントロールが敷き詰められているのだけど、パディングを設定するとだいぶ印象が変わる。以下の「padx」「pady」の部分。
あとはframeやgrid等を使って丁寧にレイアウト…。

@downloadButton = TkButton.new {
  text "ダウンロード"
  command dl
  grid(row: outerRow, column: 0, sticky: :e, padx: 4, pady: 5)
}

ocraでのEXEファイルの作成

最終的には以下のようなコマンドになった。

ocra script.rb --windows --no-autoload --icon icon.ico --output application.exe C:\Ruby193\lib\tcltk\ icon.ico
  • 「--windows」でコマンドプロンプトウィンドウ表示無しに。
  • 「--output」で実行ファイル名を指定。
  • 「--icon」で実行ファイルのアイコンを指定。
  • Ruby/Tkのファイル一式を同梱
  • アイコンファイルを同梱
  • 「--no-autoload」は理解できていないのだけど、指定しないと以下のエラーが出たので…。
C:/Ruby193/lib/ruby/1.9.1/tk/console.rb:13:in `_create_console': interpreter is deleted (RuntimeError)

できあがり

以下みたいな感じに。

f:id:kurimayoshida:20160320234315p:plain

AndroidアプリをつくってGoogle Playストアに公開しよう!

AndroidアプリをつくってGoogle Playストアに公開しよう!」というイベントをやりました。

開発環境構築からGoogle Playストアへのアプリリリースまで3時間でやってしまうというもの。

みなさまのおかげで無事終了。
リリースまでやるというのが珍しかったようで、参加者の感想も悪くなかったです。

当日の資料はこちらー。

qiita.com


でてくるアプリのソースコードはこちらー。

github.com

…当時JavaScriptをよく知らなかったこともありひどいコードですが…。

ChromebookでSDカードにUbuntuをインストールする

気がついたら自分のChromebookはほとんどUbuntu専用に。
リモートデスクトップも結局使わなくなり
たまにブラウザだけでいいやってときにChromeOSだけで使う。

まぁハードの利点は活かせているので問題ない。

…でしばらく使っていたのだけど、近頃HDDの容量が足りなくなってきてしまった。
そらそうだ。もともとChromeOS用のマシンだものなぁ。

手軽な解決方法としてはSDカードを挿してそこにUbuntu環境を移してしまうことだ。

以下の記事を参考に行った。

Installation of Ubuntu on a SD/USB device

丁寧に1から書いてくれているが、一度croutonでUbuntuをインストールする際にデベロッパーモードにしてある人にとってはやることは少ない。

以下手順。

SDカードを用意。容量も大事だが読み書きの速度も重要。
財布と相談しつつ以下を選んだ。

SDカードをEXT3またはEXT4でフォーマットする。
自分は Partition Master Free を使用してEXT3でフォーマットした。パーティションラベルは「SD」とした。

2016/10/30追記:
あらためてためしてみると「Partition Master Free」でEXT3にフォーマットしたSDカードがChromebookで認識されなかった。Linuxマシンでgpartedを使ってEXT4でフォーマットすると認識された。

2016/10/30追記:
インストール中に放っておいてスリープに入るとSDカードがアンマウントされてしまうらしい(未確認)のでKeep Awake - Chrome ウェブストアをインストールしてスリープしないようにしてインストールに望む。

ChromebookにSDカードを挿入。
デベロッパーモードで起動して、ログイン。
Chromehttps://goo.gl/fd3zc にアクセスし、croutonスクリプトファイルをDownloadディレクトリに保存。
terminalからshellを起動。
以下のコマンドでダウンロードおよびインストール開始。

$ cd media
$ cd removable
$ cd SD
$ sudo sh ~/Downloads/crouton -r trusty -t xfce -p /media/removable/SD

インストール後の実行は

$ sudo sh media/removable/SD/bin/startunity

以上。

自分のChromebookはSDカードが奥まで入らないタイプなので刺したまま持ち歩きづらいのが難点…。
ここまで見越してChromebookの中から機種選べてたら最高だったなぁ。
それでも元はとれている感じだけど。