KOYAMA Yoshiaki のブログ

プログラミングについての試行錯誤をつらつら書き溜めていきます。

プチコン3号用マインスイーパ YOS_MINE と YOS_NEKO 公開キーの公開。縦長の画像を指定したサイズで分割し、それぞれの画像を PNG 形式 (72 dpi) のファイルに書き出すアプリケーション SliceImage 公開。Safari、プレビュー、拙作 SliceImage を使った Web ページの PDF 化。

以前、ブログを書いてから随分立ちますがいろいろ取り組んでいました。その中でもニンテンドー 3DS ダウンロードソフト 'プチコン3号' 用のプログラムを2つ作成しました。2つともプチコン大喜利に投稿してみました。すでに TwitterMiiverse で公開しましたが、公開キーと実行画面をブログにも載せておきます。

YOS_MINE
マインスイーパ
開いたセルに書かれた数字の数だけ、周りのセルに旗を立てて、数字の書かれた
セルをAボタンで押すと旗を立てていないセルを開くことができます。
公開キー E3AN3XZF
YOS_NEKO
猫や犬が画面の中を駆け回るプログラムです
女の子は、十字ボタン、スライドパッドで操作できます。女の子が移動すると
猫達が集まってきます。しばらくすると離れていきます。
公開キー 23N432QE

YOS_MINE 実行画面


図 1) 初級画面


図 2) 中級画面


図 3) ゲームクリア時の下画面


図 4) ゲーム選択画面

YOS_NEKO 実行画面


図 5) YOS_NEKO


プチコン3号 - 命令表
http://smileboom.com/special/ptcm3/reference/

上記ウェブページを PDF 化するのに作成した Mac 用プログラム SliceImage を下記 URL で公開します。(実際には、PDF のダウンロードリンクが上記ページにあるので PDF 化する必要はありません。)

SliceImage version 1.0
【概要】
縦長の画像を指定したサイズで分割し、それぞれの画像を PNG 形式 (72 dpi) の
ファイルに書き出すアプリケーション。
【動作環境】 
Mac OS X 10.9 Mavericks 以上で動作します。
http://kyoshiaki.sakura.ne.jp/osx/Download/SliceImage.zip

恥ずかしい話ですが、上部に PDF ファイルのリンクがあるのを見落としていました。実際には無駄になってしまいましたが、Web ページを PDF 化するのに役立つかもしれないと思い公開します。



【使用例】
Safari, 'プレビュー'、拙作 'SliceImage' を使ったウェブページの PDF 化

プチコン3号 - 命令表
http://smileboom.com/special/ptcm3/reference/

上記ウェブページを PDF 化する過程で説明したいと思います。

Safari のメニュー/ファイル/プリント… で PDF 化できるのですが、色がついた画面をそのまま再現してくれません。

それで Safari の機能拡張 Awesome Screenshot 1.4.5 を利用します。

注意) Google などで検索すると Awesome Screenshot 機能拡張が訪問したサイトのURLを外部に送信している記述も見つかるので十分注意してください。使用後は、アンインストールしたほうが良いかもしれません。


まず、Safari のメニュー/Safari/Safari 機能拡張… を選択してください。表示されたウインドウをスクロールすると

図 6) Safari 機能拡張

上図のように Awesome Screenshot 機能拡張が見つかるはずです。アイコンをクリックしてください。

図 7) Safari 機能拡張

上図赤枠の部分 Install Now をクリックして Awesome Screenshot 機能拡張をインストールしてください。

図 8) Awesome Screenshot 機能拡張

インストールが成功すると Install Now という文字が Installed に変わり、上図のようにツールバーの URL テキストフィールド左横に Awesome Screenshot 機能拡張アイコンが追加されます。

図 9) 機能拡張

後、余計な機能が追加されるので Safari のメニュー/Safari/環境設定… を選び、’機能拡張’ タブから Awesome Screenshot を選び、

Enable similar product search powered by Superfish
Enable price comparation

のチェックマークを外してください。通常、ページを開くと有効にするか尋ねてくるので NO を選んでください。

 プチコン3号 - 命令表
http://smileboom.com/special/ptcm3/reference/

ここで、例として上の URL ページ全体 (実際に表示されて部分ではなく、スクロールして表示されるページ全体) を画像に保存したいと思います。

まず最初に、上の URL を Safari で開きます。

図 10) プチコン 3 号 - 命令表

上図 Awesome Screenshot 機能拡張アイコンをクリックし、メニュー

Capture Visible Part of Page 		: 表示されているエリアだけキャプチャ
Capture Selected Area			: マウスで選択したエリアだけキャプチャ
Capture Entire Page				: ページ全体をキャプチャ

から、Capture Entire Page を選択してページ全体をキャプチャします。自動的にスクロールして下図のページが開きます。



図 11) 編集

ここで文字を追加したり、線を描画できますが、何もせず上図のように Done ボタンをクリックして終了します。



図 12) スクリーンショット

上図のようにスクリーンショットが画像として表示されます。

図 13) スクリーンショット保存

上図のように画像を右クリック(CTRL + 左クリック)してメニューから ‘イメージを別名で保存…’ を選択します。



図 14) ダイアログ

上図のように保存するファイル名を尋ねられるので、reference.png と入力します。保存する画像形式は PNG イメージなので拡張子 png を忘れずに追加してください。

図 15) スクリーンキャプチャ終了

図 14) より、保存先がデスクトップなので、デスクトップに reference.png という名の画像ファイルが保存されているはずです。スクリーンキャプチャは終了したので、上図の赤枠の x ボタンをクリックしてタブを閉じてください。

デスクトップに PDF という名前のフォルダを作り、そこに先ほど保存したファイル reference.png を移動します。

図 16) デスクトップ/PDF

図 17) SliceImage 実行画面

SliceImage version 1.0
【概要】
縦長の画像を指定したサイズで分割し、それぞれの画像を PNG 形式 (72 dpi) の
ファイルに書き出すアプリケーション。
【動作環境】 
Mac OS X 10.9 Mavericks 以上で動作します。
http://kyoshiaki.sakura.ne.jp/osx/Download/SliceImage.zip

Finder 上で SliceImage をダブルクリックして起動し、ラジオボタン ‘A4: 自動計算’ を選択します。refernece.png ファイルを Finder 上からドラッグして、SliceImage ウインドウの茶色いエリアにドラッグ・ドロップしてください。

=================================================
ファイル名: reference.png
サイズ: 2416.0 x 89278.0
分割サイズ: 3417.47096774194
合計(ファイル数): 27

reference.png 画像ファイルの分割が終わると ‘情報’ テキストエリアに上の文字列が表示されます。(注意、画像が大きいと処理が終わるまでに随分時間がかかります。しばらくお待ちください。)

この場合、横: 2416 ピクセル、縦: 89728 ピクセルの画像 reference.png を縦方向に約 3417 ピクセルで分割しています。画像ファイルは 27 個に分割されました。(Retina ディスプレイではない MacSafari の画面をキャプチャーすると reference.png の縦横サイズは小さくなります。)

図 18) SliceImage 実行後

図 19) 1_reference.png から 27_reference.png を選択

Finder 上で 1_reference.png から 27_reference.png を上図のように選択します。
(reference.png アイコンの左上の何もないエリアを左クリックし、右下の方向にドラッグします。その後、そのまま下へドラッグするとスクロールするので 27_reference.png などの全てのアイコンが含まれるようにドラックして離します。すると全てのファイルが選択されている状態になります。シフトキーを押して、refrence.png アイコンを左クリックしてください。 reference.png アイコンが選択状態から外れます。)

図 20) プレビュー

Finder 上で 1_reference.png ファイルをダブルクリックします。すると上図のように ‘プレビュー’ が起動します。上図のように赤枠の部分のアイコンをクリックして、サムネールを選択します。下図のようにサムネールが表示されます。

図 21) サムネール表示

上図のようにサムネールに 1_reference.png から 27_reference.png まで順番に並んでいるか確認して下さい。順番が違う場合は、サムネールに表示されている画像をドラッグして挿入したい場所に移動してください。(例えば、上図の 3_reference.png を 1_reference.png と 2_reference.png の間にドラッグ・ドロップすると 1_reference.png、3_reference.png、2_reference.png の順になります。)

また、27_reference.png だけ別ウインドウで開いてしまった場合は、そのウインドウを閉じ、Finder 上の 27_reference.png ファイルを ‘プレビュー’ 上のサムネールの 26_reference.png の上にドラッグして + の画像が現れたらドロップしてください。



図 22) プリント

上図のように ‘プレビュー’ からメニュー/ファイル/プリント… を選択します。

図 23) PDF 化

SliceImage で今回 A4 サイズで収まるように画像を分割したので、用紙サイズは A4 に設定してください。
左下の PDF ポップアップメニューから ‘PDF として保存…’ を選択してください。



図 24) PDF 化

保存ファイル名を入力してください。pdf 以外の拡張子が付いていると保存できないので、上図のように reference.png.pdf と入力してください。reference だけだと自動的に拡張子 pdf が付きます。’保存’ ボタンをクリックしてください。

図 25) PDF

保存した refrence.png.pdf ファイルを Finder 上でダブルクリックすると上図のようにプレビューで表示されます。

refrence.png.pdf ファイルに新規のページを追加したい場合は、テキストエディットで A4 サイズのページを1枚 PDF 化し、そのファイルを Finder 上から ‘プレビュー’ のサムネールの挿入したい位置の前のサムネイルにドラッグし、+ の画像が現れたらドロップします。’プレビュー’ のメニュー/ファイル/保存 を選択すると追加できます。

テキストエディットで refrence.png.pdf の目次を作成し、上記例のように refrence.png.pdf の最初のページに追加すると iPad の GoodReader などで閲覧するのに便利です。

OS X 10.9 Mavericks 上での Go インストール方法。CotEditor 用 Go 言語シンタックスカラーリング定義ファイル Go.plist と Go で作った初めてのプログラム zlist.go 公開。

iPhone 6、iPhone 6 Plus が発売され、10月16日10時 (現地時間) のスペシャルイベントでは、新型iPadMacOS X Yosemite も発表されました。特に、27 インチ iMac Retina 5K ディスプレイモデルは、15インチMacBook Pro Retina ディスプレイモデルを所有していなかったら、すぐにでも手に入れたいですね!

OS X 10.10 Yosemite も、早速 MacBook Pro Retina にインストールしました。ただし、残り1分の表示から1時間かかりました。Homebrew などで /usr/local にデータをインストールしていると残り1分の表示から1、2時間かかるようです。


もうすぐ iOS 8.1 も公開されます。拙作 iYKRSS は、iPhone 6、 iPhone 6 Plus に対応する予定です。しばらくお待ちください。

Docker - Build, Ship, and Run Any App, Anywhere
https://www.docker.com/

Linux コンテナ管理ソフトウェア Docker の開発に使用されているプログラミング言語 Go に以前から興味を持っていました。


Amazon で洋書を探してみると

Programming in Go: Creating Applications for the 21st Century (Developer's Library)

Programming in Go: Creating Applications for the 21st Century (Developer's Library)

Programming in Go: Creating Applications for the 21st Century (Developer's Library) [Kindle Edition]
Mark Summerfield (Author)

上記本が良さそうなので購入してみました。読み終えた感想は、struct フィールドの tags 利用方法、defer の解説など説明不足のところもあります。結局、

Documentation - The Go Programming Language
http://golang.org/doc/
References

を参照したり、Go のパッケージソースを参考にしました。


Mac に Go をインストール方法は、2通りあります。(残念ながら OS X 10.9 Mavericks 上での説明になります。)

最初は、

Homebrew — The missing package manager for OS X
http://brew.sh/

Homebrew を使って、

$ brew install go	

上記コマンドを実行してインストールする方法です。

.bash_profile ファイル

export GOPATH=$HOME/go
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin

に上記内容を追加してください。

$GOPATH は、

~ $ go get -u github.com/jessevdk/go-flags

上記コマンド go get を使って、github にあるパッケージをインストールするフォルダを指定するのに使います。この場合 go-flags パッケージを $GOPATH にインストールしています。go-flags を利用するには、ソースに

import (
  "github.com/jessevdk/go-flags"
)

上記のように import 宣言する必要があります。

後、コマンド godoc をインストールするには mercurial が必要なので

~ $ brew install hg

上記コマンドで hg をインストールしてください。

~ $ go get code.google.com/p/go.tools/cmd/godoc

上のコマンドを実行すると $GOROOT/bin に godoc コマンドがインストールされます。godoc の使い方は

~ $ godoc fmt

この場合は fmt パッケージのドキュメントが表示されます。Safari などでドキュメントを見たい場合は、

~ $ godoc -http=:8080

上記コマンドを実行し、Safarihttp://localhost:8080 にアクセスしてください。

コマンド vet は

~ $ go get code.google.com/p/go.tools/cmd/vet

上記のようにインストールしてください。

$ go vet zlist.go

vet 単独コマンドではなく、上記のように利用してください。


基本的に Go では import するパッケージは $GOPATH/src に置くことになります。

export GOPATH=$HOME/go:$HOME/Desktop/Book\ Sample/goeg

のように : で分けて複数のパスを宣言することもできます。

export GOPATH=path

なら

path/ + src/ + shaper1/   + shape1.go
             |            |
             |            + shapes/        + shapes.go
             |                 
             + safemap/   + safemap.go 


main プログラム shape1.go から shapes/shapes.go、safemap/safemap.go パッケージを利用するには

import (
    "shaper1/shapes"
     "safemap"
)

と宣言する必要があります。もちろん、main プログラムが $GOPATH 以外にあるときもパッケージを利用するには、上記のように宣言します。


もう一つの Go のインストール方法は、

Getting Started - The Go Programming Language
http://golang.org/doc/install

を参考に

Downloads - The Go Programming Language
https://golang.org/dl/

から、

go1.3.3.darwin-amd64-osx10.8.tar.gz	Archive	OS X 10.8+	64-bit
go1.3.3.darwin-amd64-osx10.8.pkg	Installer	OS X 10.8+	64-bit	

上記バイナリパッケージ、どちらかをダウンロードし、

go1.3.3.darwin-amd64-osx10.8.tar.gz の場合、ターミナルで

~ $ tar -C /usr/local -xzf ~/Downloads/go1.3.1.darwin-amd64-osx10.8.tar.gz 

上記コマンドを実行してインストールしてください。

go1.3.3.darwin-amd64-osx10.8.pkg	Installer	OS X 10.8+	64-bit	

go1.3.3.darwin-amd64-osx10.8.pkg の場合は、Finder 上でダブルクリックしてインストールしてください。

.bash_profile に

export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin

を設定してください。バイナリパッケージは /usr/local/go にインストールされます。


Go についての感想は、すべてのオブジェクトを interface{} で表したり、クラスや継承がサポートされなかったり、また、ソースや Reference の読み方に慣れるまで苦労しました。

struct フィールドの tags の理解するのにパッケージソースを参考にしました。パッケージのソースは $GOROOT/src/pkg にあります。

tags の理解には、$GOROOT/src/pkg/reflect/type.go の

763行目
func (tag StructTag) Get(key string) string {

が参考になります。

peco/peco · GitHub
https://github.com/peco/peco

Bash - pecoの基礎の基礎 - Qiita
http://qiita.com/xtetsuji/items/05f6f4c1b17854cdd75b

上記サイトも Go プログラミングがどんなものか理解するのに役立ちました。


Go のパッケージソースにメモを付けたいので、必要なソースを PDF 化する時に CotEditor

CotEditor -Text Editor for OS X
http://coteditor.github.io/

を利用しました。PDF 書類にメモを書き込むには、Apple 純正の 'プレビュー' を使っています。Go の文法をハイライトするために、Go のシンタックスを色分けするシンタックスカラーリング定義ファイル Go.plist を作成しました。Go で初めて作ったプログラム zlist.go と一緒に下記 URL

CotEditor 用の Go 言語シンタックスカラーリング定義ファイル Go.plist と
 Go で作った初めてのプログラム zlist.go 公開。

http://kyoshiaki.sakura.ne.jp/osx/Sample/go_example.zip


で公開します。メニュー/CotEditor/環境設定の 'フォーマット' タブで

上図のようにウインドウ一番下、中央のギアアイコンから、'読み込み...' を選択し、上記 URL に含まれる Go.plist を選んでください。

シンタックスカラーを Xcode に近づけるため

上図のようにシンタックスカラーリングを変更すると見やすくなります。


いろいろなテキストエディタシンタックスカラーリングファイルは

$GOROOT/misc

にあります。


以前は、ソースの PDF 化には、mi

mi - テキストエディタ
http://www.mimikaki.net/

を使っていたのですが、デフォルトのシンタックスカラーリング対応言語が少ないのであきらめました。また、Mac App Store から Jedit X Plus を購入して使用しているのですが、'メニュー/ファイル/ページ設定...' で拡大縮小を設定し、'メニュー/ファイル/プリントで PDF 化する' を選択すると、ページごとに縮小してしまい、思ったように縮小してくれません。その点、CotEditor は、全体を問題なく縮小してくれます。


シンタックスカラーリング作成には Kate の go.xml が参考にしやすいです。XcodeVim、Kate などいろいろ試しましたが、PDF 化には CotEditor が一番使いやすいです。


Xcode の場合、

$GOROOT/misc/xcode/4/go4xcode.sh

を実行すれば良いのですが、Mac App Store から Xcode をダウンロードした場合、Xcode の所有権が root になっています。Homebrew を使って Go をインストールした場合は、go4xcode.sh ファイルの先頭、 set -e の後に

GOROOT=/usr/local/opt/go/libexec

を追加し、また、バイナリパッケージを使ってインストールした場合は、

GOROOT=/usr/local/go

を追加してください。その後、下記のように sudo ./go4xcode.sh を実行してください。

~ $ cd $GOROOT/misc/xcode/4
/usr/local/opt/go/libexec/misc/xcode/4 $ sudo ./go4xcode.sh 
Password:
Backing up plugindata file (copied to DVTFoundation.xcplugindata.bak).
Adding Go language specification entry.
Installing Go language specification file for Xcode.
Run 'sudo rm -rf /var/folders/*' and restart Xcode to update change immediately.
Syntax coloring must be manually selected from the Editor - Syntax Coloring menu in Xcode.
/usr/local/opt/go/libexec/misc/xcode/4 $ 

上記説明にあるように、

/usr/local/opt/go/libexec/misc/xcode/4 $ sudo rm -rf /var/folders/*

を実行し、Xcode を起動します。
Xcode で Go のソースファイルを開いた後、メニュー/Editor/Syntax Color/Go を選ぶとシンタックスがカラーリングされます。Go ファイルを開いても自動でカラーリングされないので注意してください。


Vim の場合、

macvim - Vim for the Mac - Google Project Hosting
https://code.google.com/p/macvim/

ターミナル上で vim を使用するのも良いのですが、折角なので、上記 URL から MacVim をダウンロードしました。設定は共通のようです。

インストールされた Go の

$GOROOT/misc/vim/syntax/go.vim 

にある go.vim

~/.vim/ftdetect/go.vim:

にコピーするとシンタクスカラーリングされます。


しかし、Vim には、プラグイン管理ツール neobundle.vim があるので、こちらを利用する方がお勧めです。

Shougo/neobundle.vim · GitHub
https://github.com/Shougo/neobundle.vim

インストールするには

~ $ curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh | sh

を実行し、スクリプトを実行すると下記内容

Please write NeoBundle initial setting to your vimrc path ...

"NeoBundle Scripts-----------------------------
if has('vim_starting')
  set nocompatible               " Be iMproved

  " Required:
  set runtimepath+=/Users/yoshiaki/.vim/bundle/neobundle.vim/
endif

" Required:
call neobundle#begin(expand('/Users/yoshiaki/.vim/bundle'))

" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'

" My Bundles here:
NeoBundle 'Shougo/neosnippet.vim'
NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'kien/ctrlp.vim'
NeoBundle 'flazz/vim-colorschemes'

" You can specify revision/branch/tag.
NeoBundle 'Shougo/vimshell', { 'rev' : '3787e5' }

" Required:
call neobundle#end()

" Required:
filetype plugin indent on

" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck
"End NeoBundle Scripts-------------------------

が表示されます。

"NeoBundle Scripts-----------------------------

の次の行から

"End NeoBundle Scripts-------------------------

の上の行まで、ファイル .vimrc としてホームディレクトリに保存します。


次に、下記のようにターミナルで vim を実行するとパッケージをインストールするか聞いてくるので y を選択してください。

~ $ vim
Not installed bundles:  ['vimshell', 'ctrlp.vim', 'vim-colorschemes', 'vim-fugitive', 'neosnippet.vim', 'neosnippet-snippets']
Install bundles now?
(y)es, [N]o: y


Go の Vim プラグイン、ファイラーなど

Shougo/unite.vim · GitHub
https://github.com/Shougo/unite.vim
vimfiler.vim をインストールするのに unite.vim が必要。

Shougo/vimfiler.vim · GitHub
https://github.com/Shougo/vimfiler.vim

fatih/vim-go · GitHub
https://github.com/fatih/vim-go

をインストールします。

~/.vimrc ファイルの

" My Bundles here:
NeoBundle 'Shougo/neosnippet.vim'
NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'kien/ctrlp.vim'
NeoBundle 'flazz/vim-colorschemes'

の次に

NeoBundle 'Shougo/unite.vim’
NeoBundle 'Shougo/vimfiler.vim’
NeoBundle 'fatih/vim-go'

github.com の ’名前/パッケージ名’ を追加し、Vim を起動すると

~ $ vim 
Not installed bundles:  ['unite.vim', 'vimfiler', 'vim-go']
Install bundles now?
(y)es, [N]o: y

と聞いてくるので y を選択してください。これで終了です。Finder 上で MacVim をダブルクリックし、:VimFiler (:Vim と入力した後、Tab キーを押してください。補完されます。) と入力して Return キーを押します。ファイラーが起動します。カーソルキーと Return キーで移動し、編集したい Go ソースファイル名で e キーを押してください。シンタクスカラーリングされているはずです。:q で終了です。


Kate の場合、

Kate は、KDE が必要なので、Paralells Desktop 10 上に

Main Page - Linux Mint
http://www.linuxmint.com/

から

Download - Linux Mint
http://www.linuxmint.com/download.php

KDE	32-bit	64-bit	An edition featuring the KDE desktop	 Yes

KDE 64-bit 版をダウンロードしインストールしました。

Mac

$GOROOT/misc/kate/go.xml

ファイル go.xml を Mint 側のデスクトップにコピーし、

Linux Mint 側の

~/.kde/share/apps/kate

フォルダに syntax フォルダ作成し、デスクトップの go.xml ファイルを ~/.kde/share/apps/kate/syntax にコピーします。

~/.kde/share/apps/kate $ mkdir syntax
~/.kde/share/apps/kate $ cp ~/Desktop/go.xml syntax/

これで、Kate で Go ソースファイルを開くと Go のシンタックスがハイライトされます。