ニンテンドー 3DS プチコン3号 SmileBASIC 版 チェスプログラム YOS_CHESS [Chess Program] 公開

以前、ブログを書いてから一年ぐらい経ちますが、色々取り組んでいました。ニンテンドー 3DS ダウンロードソフト ‘プチコン3号’ でコンピュータと対戦できるチェスプログラムを作ってみました。

公開キー、実行画面、動画を載せておきます。

YOS_CHESS (YKChess)
チェス
コンピュータと対戦できるチェスプログラム。
公開キー W2E433R4

実行画面

動画

麗の小屋 - Phono Transceiver PetitModem -
http://rei.to/petitmodem.html

上記 PetitModem Ver. 1.2.7 の使い方を解説した PDF ファイルと Mac 上のテキストエディタ CotEditor でプチコン3号のソースをカラーリング化する定義ファイルなどをまとめた SmileBASIC.zip も公開します。

PetitModem Ver. 1.2.7 の使い方、SmileBASIC 用 CotEditor 定義ファイル
[ SmileBASIC.zip ]
http://kyoshiaki.sakura.ne.jp/osx/Sample/SmileBASIC.zip

上記 URL に含まれる PetitModem Ver. 1.2.7 の使い方を解説した PDF ファイルは、結構苦労して作成しました。良かったらぜひダウンロードして読んでみてください。

チェスプログラム YOS_CHESS.PRG は、

Chess Engine In C - YouTube
https://www.youtube.com/playlist?list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg
Vice (Video Instructional Chess Engine)
Sources (ソース)
http://bluefever.net/Downloads/ViceReadMe.html

上記 URL の YouTube のチェスプログラミング講座とソースを参考に作成しました。

chessprogramming - home
https://chessprogramming.wikispaces.com/
Chessprogramming wiki
https://www.chessprogramming.org/Main_Page

チェスプログラミングの用語、変数名は、上記 URL の Wiki で検索し、理解しました。

プチコン3号の変数は

整数型…変数名末尾が %
32ビット符号あり
データ型 #
倍精度実数型…変数名末尾が #
(省略可能・デフォルト)
64ビット

上記のように整数型とデータ型があります。64ビット整数型の変数が使えないので、局面を64ビットのハッシュ値で表すことができません。そのため、

three-fold repetition (同局面三反復、3レピティション)
同じ局面が3度現れるとドローを主張できる。

Threefold repetition には対応していません。

YOS_CHESS (YKChess) の強さは、Level 5 でも Xboard に一度も勝つことができませんでした。非常に弱いので、初心者向けです。

macOS Sierra バージョン 10.12 付属のチェス (バージョン 3.13) で、2手先まで考えるように設定し、3回対戦しました。YOS_CHESS (level 5) の2勝1引き分けでした。

英語が苦手なのでメッセージの英語表記には、おかしな箇所があるかもしれません。

チェスプログラムを作成してみて、以前より理解が深まったので

2005/06/15(Wed)
リバーシアルゴリズム C++&Java対応—「探索アルゴリズム」「評価関数」の設計と実装 - Seal Software
¥ 1,995
リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS)

リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS)

2005/03/08(Tue)
コンピュータ将棋のアルゴリズム—最強アルゴリズムの探求とプログラミング - 池 泰弘
¥1,995
コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング (I・O BOOKS)

コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング (I・O BOOKS)

以前購入した上記2冊を読み返してみようと思いました。ただし、書籍「コンピュータ将棋のアルゴリズム」は紛失してしまいました。

ところが最近、最新刊が

2016/09/07(Wed)
Java将棋のアルゴリズムアルゴリズムの強化手法を探る (I・O BOOKS)
池 泰弘
¥ 2,484

発売されていました。上記、書籍とソースを参考に理解を深めています。

最後に YOS_CHESS (YKChess) の取扱説明書 README_JA.PRG の内容を添付しておきます。

===== README_JA.PRG =====

'
' YKChess (YOS_CHESS.PRG)
' Version 1.0 Programmed by KYoshiaki
'
'【概要】
'
' YouTube のチェスプログラミング講座とソースを参考に、プチコン3号で
' コンピュータと対戦できるチェスプログラムを作ってみました。思考ルーチンは、
' 単純なアルファ・ベータ法を使用しています。非常に弱いので、チェスを始めてみたい
' 人向けです。
'
'【説明】
'
' YKChess には、3つのモード
'
' ・プレイモード
' ・プレイヤーのタイプ、レベル選択モード
' ・棋譜再生モード
'
' があります。
'
' YOS_CHESS.PRG を実行すると `プレイモード´ に入ります。
'
' New ボタンをタッチすると `プレイヤーのタイプ、レベル選択モード´、
' Play ボタンをタッチすると `プレイモード´、
' `プレイモード´ でゲームが終了するか、Resign ボタンをタッチすると
' `棋譜再生モード´ に入ります。
'
'■ プレイモード
' 駒を動かして、ゲームをプレイできます。
'
' 駒の移動は、駒をタッチして選択し、次に移動したいマス目をタッチしてください。
' Assistant ラジオボタンがオンなら、選択した駒の移動可能なマス目が緑色で
' 表示されます。
' Assistant ラジオボタンをタッチしてオフにすると、移動可能なマス目は表示
' されません。
'
'■ プレイヤーのタイプ、レベル選択モード
' New ボタンをタッチするとプレイヤーのタイプ、レベル選択モードに入ります。
'
' White(白), Black(黒) それぞれのプレイヤーの Type (タイプ)、
' Level (レベル) をポップアップメニューをタッチして選択できます。
'
' Type は、2種類あります。
'
' You: あなた
' Machine: コンピュータ
'
' Level (レベル)は 1 から 5 まで選択できます。YKChess では
' レベル 5 が最強です。
'
' コンピュータ同士の対戦を終了したい場合は、START ボタンを押して強制終了
' してください。
'
' Eval は、思考ルーチンの情報を表示します。
'
' Material:
' 駒ごとに割り当てた点数の合計で評価する関数を使用します。
'
' Table:
' 駒の点数と盤上の位置に割り当てた点数の合計で評価する関数を使用します。
'
' Depth:
' 先読み数(半手)。
' チェスの1手先読みが、Depth 2 になります。
'
' Level: 2
' Eval:
' Material
' Depth: 2
'
' この場合、思考ルーチンは、1手先読みのアルファ・ベータ法で、評価関数は
' Material 使用しています。
'
'■ 棋譜再生モード。
'
' |<
' 棋譜の最初に移動。
' <
' 半手戻す。
' >
' 半手進める。
' >|
' 棋譜の最後に移動。
'
'【ボタンの解説】
'
' New
' 新規のゲーム
'
' Play
' ゲームの開始
'
' Undo
' 1手戻す
'
' Flip
' チェス盤の反転
'
' Resign
' リザイン
' 投了
'
' Quit
' プログラムの終了。
'
' 【情報】
' Ply: half-move
' 半手数。
' 白と黒のどちらか半手動くと Ply が 1 増えます。
'
' チェスの1手は、Ply では 2 になります。チェスでは、白、黒、両方動いて
' 1手になります。
'
'
' DIALOG
'
RESTORE @DIALOG
READ NUM
FOR I=0 TO NUM-1
READ TEMP$
TEXT$=TEXT$+TEMP$+CHR$(13)
NEXT
DIALOG TEXT$,0
@DIALOG
DATA 3
DATA "取扱説明書は README_JA.PRG に記載されています。"
DATA "作業用プロジェクトを YOS_CHESS に変更し、'SmileBASICでプログラムを作る' から"
DATA "ファイル README_JA.PRG を読み込んで閲覧してください。"

Parallels Desktop 11 for Mac の Ubuntu 15.10 上で Swift をビルド、example のコンパイル、GitHub にある Apple のリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプト集を紹介。

以前の書き込みから随分経ってしまいました。新年を跨ぎましたが、今年も宜しくお願いします。

Swift.org - Welcome to Swift.org
https://swift.org/

Swiftオープンソースとして公開されてから、2ヶ月程経ちました。コンパイラの仕組みについては、以前から興味があったのでビルドに挑戦してみました。ただし、OS X 側の環境を汚したくないので、Parallels Desktop 11 for Mac の仮想環境で Ubuntu 15.10 をインストールして Swift をビルドしてみました。swift-package-manager を使った example のコンパイルGitHub にある Appleリポジトリを全てダウンロードするスクリプトとコマンド git の補助スクリプト集を紹介したいと思います。

最初に自作スクリプトを下記URL で公開しておきます。詳細は、アーカイブに含まれる ReadMe.rtfd ファイルとブログの後半を参考にしてください。

GitHub にある Appleリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプト集。
http://kyoshiaki.sakura.ne.jp/osx/Sample/Apple.zip

Parallels Desktop 11 for MacUbuntu 15.10 の仮想環境を作成。

まず、最初に Linux ディストリビューションUbuntu 15.10 をダウンロードする必要があります。

The leading OS for PC, tablet, phone and cloud | Ubuntu
http://www.ubuntu.com/
Download Ubuntu Desktop | Download | Ubuntu
http://www.ubuntu.com/download/desktop

上記 URL から (ここでは、英語版での解説になります。)

Ubuntu 15.10
64-bit

‘ダウンロード’ ボタンをクリックして、ファイル ubuntu-15.10-desktop-amd64.iso をダウンロードしてください。

Parallels Desktop 11 for Mac を起動し、メニュー/ファイル/新規… を選び、イメージファイルとして ubuntu-15.10-desktop-amd64.iso を選択してインストールしてください。

インストールに成功したら、Ubuntu 15.10 を Software Updater で最新の状態にしてください。

Ubuntu 15.10 上で swift コマンドを実行できる環境を作成。

次に Ubuntu 上で swift コマンドを実行できる環境を作成します。詳しい解説は、

Swift.org - Download Swift
https://swift.org/download/
Linux
https://swift.org/download/#linux

を参照してください。上記 URL の

Latest Development Snapshots
Linux	Ubuntu 15.10 Swift 2.2 Snapshot (Signature) January 11, 2016

から Ubuntu 15.10 Swift 2.2 Snapshot のリンクを Ubuntu 15.10 上の Firefox などのウェブブラウザでクリックして、ファイル swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz をダウンロードしてください。さらに (Signature) のリンクをクリックして swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig ファイルもダウンロードしてください。Signature ファイルはダウンロードしたファイルが改変されていないか検証するために使います。

(最新の Snapshot をダウンロードしてください。2016/01/17(Sun) 現在、Ubuntu 15.10 Swift 2.2 Snapshot (Signature) January 11, 2016 が最新です。)

Ubuntu 上で Terminal を起動し、

~ $ sudo apt-get install clang libicu-dev
~ $ 

で必要なパッケージをインストールします。

~ $ wget -q -O - https://swift.org/keys/all-keys.asc | gpg --import -

上記コマンドで公開鍵をインポートします。これは、1回だけ実行すれば良いようです。

swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz
SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig

先ほどダウンロードした上記2つのファイルをデスクトップに移動します。

~/Desktop $ gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift

上のコマンドを実行した後、

~/Desktop $ gpg --verify swift-<VERSION>-<PLATFORM>.tar.gz.sig

ダウンロードしたアーカイブが改変されていないか上記コマンドで検証します。ここでは、

~/Desktop $ gpg --verify swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig
gpg: assuming signed data in `swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz'
gpg: Signature made Tue 12 Jan 2016 10:02:41 AM JST using RSA key ID xxxxxxxx
gpg: Good signature from "Swift Automatic Signing Key #1 <swift-infrastructure@swift.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
~/Desktop $ 

上記コマンド gpg –verify swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig になります。gpg: Good signature と表示されれば良いようです。ただし、警告が表示されています。どこか間違っているのかもしれません。

~/Desktop $ tar xzf swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz

コマンド tar を使って上記のように swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz を展開します。

swift コマンドのパスを環境変数 PATH に設定します。ホームディレクトリの .profile ファイルは、.bashrc ファイルを読み込んでいます。.bashrc ファイルの最後に

export PATH=$HOME/Desktop/swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10/usr/bin:"${PATH}"

emacsvim、vi などのエディタを使って追加します。Terminal を再起動し、

~ $ swift --version
Swift version 2.2-dev (LLVM 3ebdbb2c7e, Clang f66c5bb67b, Swift 42591f7cba)
Target: x86_64-unknown-linux-gnu
~ $

上記のように swift コマンドで実行できるか確認できます。

swift-package-manager を使った example のコンパイル

Apple · GitHub
https://github.com/apple/
GitHub - apple/example-package-dealer: Example package for use with the Swift Package Manager
https://github.com/apple/example-package-dealer

上記の example の大元は example-package-dealer です。依存関係はパッケージマネージャーが面倒を見てくれます。

~/Desktop $ git clone https://github.com/apple/example-package-dealer.git
Cloning into 'example-package-dealer'...
remote: Counting objects: 18, done.
Unpacking objects: 100% (18/18), done.
remote: Total 18 (delta 0), reused 0 (delta 0), pack-reused 18
Checking connectivity... done.

上記のように git clone コマンドで example-package-dealer リポジトリをダウンロードし、

~/Desktop $ cd example-package-dealer/
~/Desktop/example-package-dealer $ swift build
Cloning https://github.com/apple/example-package-deckofplayingcards.git
Using version 1.0.2 of package example-package-deckofplayingcards
Cloning https://github.com/apple/example-package-fisheryates.git
Using version 1.0.2 of package example-package-fisheryates
Cloning https://github.com/apple/example-package-playingcard.git
Using version 1.0.1 of package example-package-playingcard
Compiling Swift Module 'FisherYates' (1 sources)
Linking Library:  .build/debug/FisherYates.a
Compiling Swift Module 'PlayingCard' (3 sources)
Linking Library:  .build/debug/PlayingCard.a
Compiling Swift Module 'DeckOfPlayingCards' (1 sources)
Linking Library:  .build/debug/DeckOfPlayingCards.a
Compiling Swift Module 'Dealer' (1 sources)
Linking Executable:  .build/debug/Dealer
~/Desktop/example-package-dealer $ 

example-package-dealer ディレクトリに移動した後、 上記のように swift build コマンドを実行します。

実行ファイルは .build/debug に作成されます。

~/Desktop/example-package-dealer $ cd .build/debug
~/Desktop/example-package-dealer/.build/debug $ ./Dealer
♠︎Q
♣︎3
♠︎8
♢4
♣︎Q
♢6
♢J
♡2
♡5
♠︎J
~/Desktop/example-package-dealer/.build/debug $ 

上記が実行結果です。

Ubuntu 15.10 上で swift コマンドをビルドする。

Ubuntu 15.10 上で Terminal を起動し、

~ $ sudo apt-get install git cmake ninja-build clang python uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config

を実行してください。

Apple · GitHub
https://github.com/apple/
GitHub - apple/swift: The Swift Programming Language
https://github.com/apple/swift

から Swiftリポジトリを Ubuntu15.10 デスクトップ上の Apple という名前のフォルダに

~ $ cd Desktop/
~/Desktop $ mkdir Apple
~/Desktop $ cd Apple/
~/Desktop/Apple $ git clone https://github.com/apple/swift.git
Cloning into 'swift'...
remote: Counting objects: 324410, done.
remote: Compressing objects: 100% (156/156), done.
remote: Total 324410 (delta 62), reused 0 (delta 0), pack-reused 324254
Receiving objects: 100% (324410/324410), 68.43 MiB | 5.43 MiB/s, done.
Resolving deltas: 100% (265946/265946), done.
Checking connectivity... done.
~/Desktop/Apple $ ls
swift
~/Desktop/Apple $

上記コマンド git clone https://github.com/apple/swift.git を使ってダウンロードします。

Swift のビルドの仕方の詳細は、

~/Desktop/Apple/swift/README.md

に書いてあります。(後で、AppleGitHub 上のリポジトリを全てダウンロードするスクリプトを紹介します。そのスクリプトOS X 上で実行し、Finder 上で Apple/swift/README.md ファイルをダブルクリックすると Xcode で Markdown 形式のファイルを見ることができます。)

追記) 2016/03/09(Wed)
Markdown 記法ファイルの表示、編集には下記 URL の Atom エディタを使うのが一番簡単です。

Atom
https://atom.io/

Markdown の表示は、Markdown ファイルを開き、

ショートカットキー: ctrl-shift-M
コマンド: Markdown Preview:Toggle

で表示できます。

Split Pane だと扱いにくいので
Settings/Packages の Package: markdown-preview をクリックして、設定画面を表示し、Open Preview In Split Pane のチェックを外してください。別 Pane に表示されるようになります。

~/Desktop/Apple $ cd swift
~/Desktop/Apple/swift $ ./utils/update-checkout --clone
--- Cloning 'cmark' ---
--- Cloning 'lldb' ---
--- Cloning 'llvm' ---
--- Cloning 'swift-corelibs-xctest' ---
--- Cloning 'swift-integration-tests' ---
--- Cloning 'swiftpm' ---
--- Cloning 'swift-corelibs-foundation' ---
--- Cloning 'clang' ---
--- Cloning 'llbuild' ---
~/Desktop/Apple/swift $ 

上記コマンド ./utils/update-checkout –clone を使って必要なパッケージをダウンロードします。(swift フォルダではなく、Apple フォルダに保存されので注意してください。)

最後に ./utils/build-scrip スクリプトを実行して swift コマンドをビルドします。引数 -R を指定しない限り debug モードでビルドされます。引数 -R の場合 release モードになります。引数 -t は Ninja による基本的なテストを行います。

詳しい解説は

~/Desktop/Apple/swift $ ./utils/build-script -h

を参照してください。環境変数 SWIFT_SOURCE_ROOT(ソースの位置)、SWIFT_BUILD_ROOT(swift が作成される位置) を設定できます。設定されていない場合、推論されます。

実際に ./utils/build-script -t でビルドすると

~/Desktop/Apple/swift $ ./utils/build-script -t
.
.
libLLVMSupport.a -lrt -ldl -ltinfo -lpthread -lm -Wl,-rpath,"\$ORIGIN/../lib" && :
clang: error: unable to execute command: Killed
clang: error: linker command failed due to signal (use -v to see invocation)
[1121/1984] Linking CXX executable bin/llvm-ar
ninja: build stopped: subcommand failed.
./utils/build-script: command terminated with a non-zero exit status 1, aborting
~/Desktop/Apple/swift $ 

上記エラーによりビルドに失敗します。メモリが足りないと表示されるようです。

図 1) 構成…/ハードウェア/CPU および メモリ

Parallels Desktop 上で、メニュー/処理/構成… を選び 、’ハードウェア’ タブを選択し、上図のように Ubuntu 側のメモリを 8192MB に変更します。

また、メモリを節約する意味で、引数 -j 1 を指定して、ビルドプロセスを1つにします。最終的に

~/Desktop/Apple/swift $  time ./utils/build-script -j 1 -t

上のコマンドを実行します。(time コマンドはビルド時間を計測してくれます。)

私の MacBook Pro の動作環境は

OS X El Capitan バージョン 10.11.3
MacBook Pro (Retina, 15-inch, Late 2013)
プロセッサ 2.3GHz Intel Core i7
メモリ 16GB 1600 MHz DDR3
グラフィクス
Intel Iris Pro 1536 MB
NVIDIA GeForce GT 750M
Parallels Desktop 11 for Mac
バージョン 11.1.2 (32408)
~/Desktop/Apple/swift $  time ./utils/build-script -j 1 -t
-- check-swift-linux-x86_64 finished --
--- Finished tests for swift ---
real	108m35.712s
user	112m17.964s
sys	4m48.860s
~/Desktop/Apple/swift $ 

です。上記のように time コマンドで確認するとビルドに1時間40分ほどかかりました。

ビルドした swift コマンドの位置は、

~/Desktop/Apple/build/Ninja-DebugAssert/swift-linux-x86_64/bin/swift

にあります。

最後にOS X 上で使用する自作スクリプトを紹介したいと思います。

GitHub にある Appleリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプト集。

GitHub にある Appleリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプトhttp://kyoshiaki.sakura.ne.jp/osx/Sample/Apple.zip

上記 URL で GitHub にある Appleリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプト集を公開します。

ダウンロードした Apple.zip をデスクトップに移動し、Finder 上でダブルクリックして展開します。コマンド install.sh を

~/Desktop/Apple $ ./install.sh
Cloning into 'swift'...
Cloning into 'swift-package-manager'...
.
.
~/Desktop/Apple $ 

上記のように実行すると、GitHub にある Appleリポジトリを全てダウンロードします。すべてのリポジトリを最新の状態にアップデートしたい場合は update.sh を使用します。

~/Desktop/Apple $ ./log.rb
0: example-package-dealer
1: example-package-deckofplayingcards
2: example-package-fisheryates
3: example-package-playingcard
4: swift
5: swift-3-api-guidelines-review
6: swift-clang
7: swift-cmark
8: swift-corelibs-foundation
9: swift-corelibs-libdispatch
10: swift-corelibs-xctest
11: swift-evolution
12: swift-integration-tests
13: swift-llbuild
14: swift-lldb
15: swift-llvm
16: swift-package-manager
?
4

上記のように log.rb を実行するとリポジトリ一覧を表示し、番号を入力することで選択したリポジトリのコミットログを表示することができます。次ページを見るには、スペースキーを押してください。カーソル上下キーでもスクロールできます。終了するには、q キーを押してください。その他のスクリプトは、Apple/Dcuments フォルダの ReadMe.rtfd を参照してください。

プチコン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 などで閲覧するのに便利です。