書籍 日本車は生き残れるか (講談社現代新書) Kindle版 を読んだ感想

自動車評論家・川端由美さんがゲストの西川善司さんによる YouTube 動画

自動車業界の大変革の時代が到来と言われ、トヨタは大丈夫かとよく話題になりますが、自動車評論家 川端由美さんがゲストの西川善司さんによる YouTube 動画を見て、現状を知りたくなり、価格も手頃なので、日本車は生き残れるか (講談社現代新書) Kindle版 価格: ¥825 を購入してみました。

2021/07/11(Sun) 16:46:31
Amazon | 本, ファッション, 家電から食品まで | アマゾン
https://www.amazon.co.jp/ref=nav_logo

日本車は生き残れるか (講談社現代新書) Kindle版
桑島浩彰  (著), 川端由美 (著)  形式: Kindle版
5つ星のうち4.3    63個の評価	
期間限定キャンペーン
すべての形式と版を表示
Kindle版 (電子書籍)
¥825
獲得ポイント: 248pt
今すぐお読みいただけます: 無料アプリ
 
購入オプション
紙の本の価格:	¥990
Kindle 価格:	¥825
(税込)

ポイントを利用する
- ¥42
ご請求額:
¥783
獲得ポイント:
248ポイント (30%)

2021/07/11(Sun) に購入したのですが、ようやく読み終えました。

この本に書かれている海外メーカーと同じことをするのが良いかわかりませんが、会社のトップの舵取りが生命線であることは間違いないと思います。個人的には、トヨタだけではなく、日本から新興企業が出てくれば良いなと思います。

インターネット創世記にホームページを作って喜んでいた自分には、現在の Google や Amazon などの会社やサービス、業種が生まれるとは想像できなかったのですが、自動車業界にも同じく新しいサービスや会社が生まれるのでしょうか?

また、自動車業界にインターネットにおける iPhone のような革新的な自動車が出て来るのか?それがテスラの自動車がなのかもしれませんが、楽しみです。

Fire HD 10 を使って読んだのですが、試しに読み上げ機能も使ってみました。結構、実用になるんですね!

2021/10/05(Tue) 19:05:17
Amazon.co.jp ヘルプ: 読み上げ機能を使用する
https://www.amazon.co.jp/gp/help/customer/display.html?ref_=mobile-search-result-item-1-1&nodeId=201829850&qid=1633403016001&sr=1-1

Mac でプログラミングを始めるために必要な書籍とドキュメント

Mac でプログラミングするには、macOS の /アプリケーション/App Store.app からダウンロードできる Xcode アプリの Help メニューが起点になりますが、Apple Developer Documentation、App Store Connect ヘルプ も参考になります。

2020/01/03(Fri) 17:06:05
Xcode Help
https://help.apple.com/xcode/mac/current/
2020/01/24(Fri) 17:42:03
Apple Developer Documentation
https://developer.apple.com/documentation/
2020/01/03(Fri) 17:06:03
App Store Connect ヘルプ
https://help.apple.com/app-store-connect/

プログラミング言語 Swift については、macOS の /アプリケーション/ブック.app で無料で入手できる

2020/01/03(Fri) 17:05:58
The Swift Programming Language
Swift 5.1 Edition
https://books.apple.com/jp/book/the-swift-programming-language-swift-5-1/id881256329

は必須だと思います。新しいドキュメントが公開されると古いドキュメントのリンクはブックストアでは表示されなくなります。一度ダウンロードしておけば、再度ダウンロードできます。

/アプリケーション/ブック.app のツールバーから「ブックストア」を選択し、検索フィールドで AppleApple Education で検索すれば、色々書籍が出てくるので参考になります。

近況と書籍 Creative Selection、Programming Rust の紹介

ご無沙汰しています。

Raspberry Pi を主に Radiko の録音に使っています。最近、何度も挑戦して諦めていた Ruby on Rails が理解できるようになりました。

Raspberry Pi 上で録音した音声ファイルを iOS の GoodReader で聴いていたのですが、ブラウザで再生する Ruby on Rails プログラム yplayer を作ってみました。ほとんど完成しているのですが、実行画面と動画をちょっとだけチラ見しておきます。

実行画面

動画

この動画は Ruby on Rails をインストールした Rapsberry Pi 上で、録音した Radiko.jp の音声ファイルを yplayer を使って、iPhone XS MaxSafari で聴いている様子を録画したものです。

公開するためにはもうしばらくかかりそうです。できれば GitHub で公開しようと思っています。

今日は2つ書籍を紹介します。

まず最初は

2018/11/18(Sun) 14:32:41
Amazon.com
Creative Selection: Inside Apple's Design Process During the Golden Age of Steve Jobs Kindle Edition
by Ken Kocienda (Author)
Audible Audiobook from $16.22 

Hardcover  $18.89

Paperback $12.90

Kindle $15.07

1$=¥112.82
¥1700
クレジット会社からの請求
¥1750

です。私は米国 Amazon.comKindle 版を購入しています。日本の Amazon.co.jpKindle 版を購入すると 1,474 円 と割安です。

Podcast、Rebuild.fm と Misreading Chat で紹介されていました。

Rebuild - Podcast by Tatsuhiko Miyagawa
http://rebuild.fm/
Misreading Chat – CS の論文読んで話をしよう
https://misreading.chat/

Apple の製品開発プロセスの内情を紹介したものです。作者 Ken Kocienda さんが関わったプロジェクト SafariiOS のソフトウェアキーボードの開発過程が詳細に説明されています。

最初に Steve Jobs 氏の前でデモする場面が書いてあるのですが、読みながら緊張してしまいました。時代背景の説明や識者からの言葉の引用があったり面白く読めました。

作者はオリジナル Macintosh の開発者 Bud Tribble さんと Mac のソフトウェアエンジニア Andy Hertzfeld さんが起こしたスタートアップ会社 Eazel で働いていました。

その時の上司だった Don Melton さんと一緒にアップルに入社します。Don さんは Eazel の前に Netscape に勤めていました。Ezael で Linux 向けに作った Nautilusオープンソースだったのは WebKitオープンソースだったりするのに影響しているのでしょうか?

作者はアップルで自前のウェブブラウザを開発することになるのですが、最初は Mozilla を移植しようと取り組んでいました。上手くいかず、新しく入った元 NeXT 社員、Richard Williamson さんが KHTML を移植し、頓挫していたプロジェクトの救世主になります。

WebKit
https://webkit.org/
Blink - The Chromium Projects
https://www.chromium.org/blink

KHTML をフォークした Safari のブラウザエンジン WebKitSafariWebKit を fork した blink、Chrome の基礎となるわけですから、世の中わからないですよね。

全然関係ないですが Steve Jobs 氏が現在の Apple Store、店舗を開くと聞いた時、大丈夫かなと思ったのですが、それが iPhone のサポートなどに使われるわけですから、私のような凡人には予測不可能ですね。

2018/12/07(Fri) 15:56:38
Microsoft Edge: Making the web better through more open source collaboration - Windows Experience BlogWindows Experience Blog
https://blogs.windows.com/windowsexperience/2018/12/06/microsoft-edge-making-the-web-better-through-more-open-source-collaboration/

上記よりブラウザ勢力図はどうなるんでしょうか?

iOS のキーボートを開発していく過程も細かく描写されています。iPhone を見た時の感動や iPhone が発表されて初めて製品名が iPhone だと知ったことなどが書かれています。

後半には題名 Creative Selection にもなっている Apple開発プロセス demo -> feedback -> next demo: creative selection と Google の A/B テストを用いた開発の違いが説明されています。

英語力が乏しいので間違って理解している箇所もあるかもしれません。

もう一冊は

2018/07/06(Fri) 18:38:39
Amazon.com
Programming Rust: Fast, Safe Systems Development 1st Edition, Kindle Edition
by Jim Blandy (Author), Jason Orendorff (Author)
Digital List Price: $50.99
Print List Price: $59.99 Save $26.67 (44%)
Kindle
$33.32
1$=¥110.63
¥3686
クレジット会社
¥3771

Programming Rust: Fast, Safe Systems Development

Programming Rust: Fast, Safe Systems Development

プログラミングRust

プログラミングRust

です。以前からプログラミング言語 Rust に興味を持っていました。読んでいる途中ですが、Rust を理解するには、インタープリタコンパイラがどのように作られているか理解している必要性を感じました。lifetime parameter のように言語の構造がむき出しになっている部分もあります。簡単なプログラミング言語 basic

basic version 1.0.0
http://kyoshiaki.sakura.ne.jp/osx/lion.html#bas100

を作成した経験やプログラミング言語作成の書籍を読んだ知識が理解するのに役に立ちました。

ニンテンドー 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 を読み込んで閲覧してください。"

Kindle 版書籍 Cocoa Design Patterns (Developer's Library) 購入。

今月はあまり書くことがないので、本の紹介です。
iOS、OS X のプログラミングを続けていると、Appleフレームワークの出来の良さに舌を巻きます。デザインパターンについては、良書だと評判の

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

を随分前に読んだきりです。それで、もう少し理解を深めようと

Cocoa Design Patterns (Developer's Library)

Cocoa Design Patterns (Developer’s Library)

を購入してみました。読んでいる途中ですが

Memory Zones
Category
Informal Procotols
Fast Enumrators
Accessors
Copying
Notifications

など、より深く理解することが出来ました。ただし、Objective-C 2.0 には対応していますが、新たに追加された Objective-C value literal syntax

NSNumber *longNumber = @42l;
NSDictionary *dictionary = @{
@"anObject" : someObject,
@"helloString" : @"Hello, World!",
@"magicNumber" : @42,
@"aValue" : someValue
};
NSArray *someArray = @[firstObject, secondObject, thirdObject];

などには対応していません。情報としては少し古いかもしれませんが、十分に通用する内容です。

はてなポイントが余っていたので、アマゾンギフト券に交換し、次の Kindle版書籍とコミックを買ってみました。

進撃の巨人(1): 1 (少年マガジンKC)

進撃の巨人(1): 1 (少年マガジンKC)

進撃の巨人(2): 2 (講談社コミックス)

進撃の巨人(2): 2 (講談社コミックス)

テルマエ・ロマエI: 1 (ビームコミックス)

テルマエ・ロマエI: 1 (ビームコミックス)

テルマエ・ロマエII: 2 (ビームコミックス)

テルマエ・ロマエII: 2 (ビームコミックス)

Kindle 版書籍やコミックは手軽に買えるので、 注意しないといけませんね!
いくらお金があっても足りません!

Apple Education Event、Land of Lisp

随分遅くなりましたが、本年も宜しくお願いします。

Apple Education Event, January 2012
http://events.apple.com.edgesuite.net/1201oihbafvpihboijhpihbasdouhbasv/event/index.html
Apple Keynotes - iTunes Podcast
http://itunes.apple.com/jp/podcast/apple-keynotes/id275834665

1月19日、Apple はニューヨークで開催したメディアイベントで、「iBook 2」、電子書籍作成アプリ「Books Author」、iOS向けに「iTunes U」のアプリを発表しました。

早速、iBooks Author をダウンロードし、試してみました。ウィジェットを追加できる仕組みは、可能性を感じますね。OS 純正の Calculator.wdgt を追加して遊んでみました。ウィジェクト作成ソフト Dashcode も随分進歩しています。すっかり、使い方を忘れてしまったので、

ヘルプ/Dashcode User Guide
▼ デュアルプロダクトWebアプリケーションチュートリアル
▼ プロジェクトを開始する
▼ ウィジェットまたはWebアプリケーションのユーザインターフェイスをデザインする
▼ テストする/共有する
Webアプリケーションを動作形式で保存する

を拾い読みし、基本操作を学びました。

Dashcode で Dashboard のテンプレートから、カスタムを選びます。プロジェクトウインドウ左側 (ナビゲータ) の ‘実行と共有’ をクリックします。ウインドウ右下に ‘ディスクに保存…’ ボタンが現れるのでクリックすると、拡張子が wdgt 形式のファイルで保存されます。iBooks Author では、中央の ‘ウィジェット‘ ボタンから ‘HTML’ を選択します。現れたエリアにウィジェットをドラッグ・ドロップすれば追加できます。プレビューするには、iPad が必要になります。拙作 YKMinesweeper.wdgt を作り直してみたいですね!

Land of LISP: Learn to Program in Lisp, One Game at a Time!

Land of LISP: Learn to Program in Lisp, One Game at a Time!

以前にも書いたように、Land of Lisp [ asin:1593272812 ] を読書中です。サンプル orc-battle.lispsbcl で実行してみました。sbcl については Homebrew

brew update
brew install sbcl

を利用してインストールしました。

sbcl を起動し、 load 関数で orc-battle.lisp を読み込み、(orc-battle) で実行しました。

~ $ sbcl
This is SBCL 1.0.53, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (load "~/lisp/Land of Lisp/orc-battle.lisp")
T
* (orc-battle)
You are a valiant knight with a health of 30, an agility of 30, and a strength of 30
Your foes:
1. (Health=3) A fierce BRIGAND
2. (Health=6) A malicious hydra with 6 heads.
3. (Health=2) A fierce BRIGAND
4. (Health=6) A slime mold with a sliminess of 4
5. (Health=6) A wicked orc with a level 6 club
6. (Health=7) A fierce BRIGAND
7. (Health=1) A wicked orc with a level 8 club
8. (Health=8) A fierce BRIGAND
9. (Health=10) A malicious hydra with 10 heads.
10. (Health=4) A slime mold with a sliminess of 5
11. (Health=7) A malicious hydra with 7 heads.
12. (Health=4) A fierce BRIGAND

キーの入力状態になるのですが、入力状態の前に出力した文字列が表示されません。sbcl の場合 (read) を呼ぶ前に (force-output) を呼ぶ必要があります。

orc-battle.lisp の場合

(defun player-attack ()
(fresh-line)
(princ "Attack style: [s]tab [d]ouble swing [r]oundhouse:")
(force-output)
(case (read)
(s (monster-hit (pick-monster)
(+ 2 (randval (ash *player-strength* -1)))))
(defun pick-monster ()
(fresh-line)
(princ "Monster #:")
(force-output)
(let ((x (read)))

上記のように (read) の前に、(force-output) を2箇所、追加しました。これで正しく動作しました。

* (orc-battle)
You are a valiant knight with a health of 30, an agility of 30, and a strength of 30
Your foes:
1. (Health=3) A fierce BRIGAND
2. (Health=6) A malicious hydra with 6 heads.
3. (Health=2) A fierce BRIGAND
4. (Health=6) A slime mold with a sliminess of 4
5. (Health=6) A wicked orc with a level 6 club
6. (Health=7) A fierce BRIGAND
7. (Health=1) A wicked orc with a level 8 club
8. (Health=8) A fierce BRIGAND
9. (Health=10) A malicious hydra with 10 heads.
10. (Health=4) A slime mold with a sliminess of 5
11. (Health=7) A malicious hydra with 7 heads.
12. (Health=4) A fierce BRIGAND
Attack style: [s]tab [d]ouble swing [r]oundhouse:

終了するには、(sb-ext:quit) を実行します。

 You have been killed. Game Over.
NIL
* (sb-ext:quit)
~ $ 

sbcl ではなく clisp も試したくなったのですが、Homebrew でインストールするとビルドに失敗します。llvm-gcc ではなく gcc が必要なようです。
自分で gcc をビルドするのは大変なので

kennethreitz/osx-gcc-installer - GitHub
https://github.com/kennethreitz/osx-gcc-installer

の osx-gcc-installer を利用しました。Xcode をインストールした状態で osx-gcc-installer をインストールしたので、問題があるかもしれません。

Homebrew で gcc を使ってビルドするには、環境変数 CC を設定するのではなく

brew install clisp --use-gcc

オプション –use-gcc を使うと良いようです。

clisp を使って orc-battle.lisp を実行するには、sbcl のような (force-output) を追加する必要はありません。

~ $ clisp
i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
I I I I I I I      8     8   8           8     8     o  8    8
I  \ `+' /  I      8         8           8     8        8    8
\  `-+-'  /       8         8           8      ooooo   8oooo
`-__|__-'        8         8           8           8  8
|            8     o   8           8     o     8  8
------+------       ooooo    8oooooo  ooo8ooo   ooooo   8
Welcome to GNU CLISP 2.49 (2010-07-07) <http://clisp.cons.org/>
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2010
Type :h and hit Enter for context help.
[1]> (load "~/lisp/Land of Lisp/orc-battle.lisp")
;; Loading file /Users/yoshiaki/lisp/Land of Lisp/orc-battle.lisp ...
;; Loaded file /Users/yoshiaki/lisp/Land of Lisp/orc-battle.lisp
T
[2]> (orc-battle)
You are a valiant knight with a health of 30, an agility of 30, and a strength of 30
Your foes:
1. (Health=8) A wicked orc with a level 1 club
2. (Health=9) A malicious hydra with 9 heads.
3. (Health=1) A fierce BRIGAND
4. (Health=9) A slime mold with a sliminess of 3
5. (Health=9) A malicious hydra with 9 heads.
6. (Health=8) A wicked orc with a level 1 club
7. (Health=2) A slime mold with a sliminess of 5
8. (Health=7) A malicious hydra with 7 heads.
9. (Health=5) A fierce BRIGAND
10. (Health=2) A slime mold with a sliminess of 4
11. (Health=5) A malicious hydra with 5 heads.
12. (Health=5) A slime mold with a sliminess of 5
Attack style: [s]tab [d]ouble swing [r]oundhouse:
NIL
[3]> (exit)
Bye.
~ $ 

clisp を終了するに、(exit) を使ってください。

orc-battle.lisp は、簡単なプログラムです。それで、ゲームに勝つのもそんなに難しくないと思っていました。ところが、なかなか勝つことができません。それで、ソースを熟読して攻撃パターンや、ヘルスポイントの計算方法を理解し、ようやく勝てるようになりました。単純なゲームですが、熱中してしまいました。絶妙なバランスです。ソースの熟読には、別の理由もあったのですが!

orc-battle.lisp で勝利した動画を添付しておきます。後、おまけとして、最近取り組んでいたプログラムの動作模様も公開します。( 04 分 01 秒から始まります。)

現在、Kindle 版 Land of Lisp

IV. Lisp is Science
15. Dice of Doom, a Game Written in the Function Style
Implementing Dice of Doom, Version 1
P312
Location 7551
Calculating Passing Moves

まで読んだのですが、Common Lisp を理解するには、最良の本ですね!Practical Common Lisp も持っているのですが、Land of Lisp の方が基本的な知識を得ることができます。Practical Common Lisp では、途中で投げ出してしまったので、気付かなかったのですが、Common Lisp では、構造体も使えるのですね!

P163
Location 4314
Common Lisp Structures
> (defstruct person
name
age
waist-size
favorite-color)
PERSON
> (defparameter *bob* (make-person :name "Bob"
:age 35
:waist-size 32
:favorite-color "blue"))
> *bob*
#S(PERSON :NAME "Bob" :AGE 35 :WAIST-SIZE 32 :FAVORITE-COLOR "blue")
> (person-age *bob* )
35
> (setf (person-age *bob* ) 36)
> (person-age *bob* )
36

Amazon Kindle 版 Steve Jobs 伝記、日経ソフトウエア 2012年 1月号 (新メモリー管理方式「ARC」の使い勝手)、Emacs Tips バッファリストを同一ウインドウで開く

Amazon KindleSteve Jobs 伝記をようやく読み終えました。読んでいる途中で、本の更新メールが届き、驚きました。電子版になると文章の修正などが簡単になるので、更新処理も可能になるのですね。メールに記載された更新手続きを行うと、問題なく更新されました。

NeXT、iPhone に関する技術的な考察を知りたかったのですが、内容は少なめでした。本の最後にある And One More Thing …、Steve Jobs 自身の言葉は、感慨深いものがありました。ご冥福をお祈りします。

日経ソフトウエア 2012年 1月号 の内容

日経 ソフトウエア 2012年 01月号 [雑誌]

日経 ソフトウエア 2012年 01月号 [雑誌]

P16
特集 1
Java 新時代へ
P40
連載型 特集
アプリはまず「骨格」を作れ
Android ネイティブ・アプリ 設計法
■ 赤井 忠昭
P54
特集 3
iOS 5 で変わる iPhone プログラミング
retain や release はもういらない
新メモリー管理方式「ARC」の使い勝手
■ 荻原 剛志
P62
特集 4
Windows 8 & Visual Studio 11 徹底解説!
Metro アプリ開発をいち早く体験
■ 矢嶋 聡
P132
日本マイクロソフト エバンジェリストが語る最新プログラミング実践講座
Windows Phone 7 プログラミングを始めよう
第2回 スタート画面のタイルを使いこなす
■大西 彰
連載
NEW
P74
プチコンでニンテンドー3DS/DSi/DSi LL
ゲームプログラミング講座
第1回 お題 シューティングゲーム
■松原 拓也
NEW
P87
Xcode 4 使い方入門
第1回 各画面やメニューを理解する
■ 大津 真

に大変興味が湧き、購入しました。特に

P54
特集 3
iOS 5 で変わる iPhone プログラミング
retain や release はもういらない
新メモリー管理方式「ARC」の使い勝手
■ 荻原 剛志

については、ARC のより深い理解の参考になりました。再確認のため Apple の資料を調べてみました。

まず、最初に新しい機能については

What's New in iOS: Introduction
https://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008244-SW1

What's New in iOS: iOS 5.0
https://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iOS5.html#//apple_ref/doc/uid/TP30915195-SW1
Automatic Reference Counting

で概要を理解できます。上で紹介されているリンク先

Xcode New Features User Guide: Introduction
https://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/00-Introduction/Introduction.html#//apple_ref/doc/uid/TP40004626
▼ New Features in Xcode 4.2
Automatic Reference Counting

でも確認できます。さらに紹介されているリンク先

Transitioning to ARC Release Notes
https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html#//apple_ref/doc/uid/TP40011226

が一番詳しいので、これさえ読んでおけば、充分だと思います。

私自身の経験ですが、NSLog などで

Thread 1: Program received signal: "EXEC_BAD_ACCESS".

が表示される時、原因となるファイルの ARC を無効にすると回避できることがあります。本当は、原因を取り除くべきなのですが、私自身、究明できないので暫定処理として使っています。

ARC のファイルごとの設定方法は、上のリンク先に載っています。簡単に説明すると

プロジェクト名/プロジェクト/Build Settings
▼ Apple LLVM compiler 3.0
Objective-C Automatic Reference  Co…

で、プロジェクト自体の ARC を有効にし、

プロジェクト名/TARGETS/Build Phases
▼ Compile Sources (6 items)

上図のように ARC を無効にしたいファイル名の右側、Compiler Flags エリアをダブルクリックし、表示されたウインドウに

-fno-objc-arc

を入力してください。これで、ARC を無効にできます。何も指定していない場合は、プロジェクト自体が ARC を有効にするので、自動的に -fobjc-arc フラグがセットされます。

また、日経ソフトウエア 2012年 1月号

連載
NEW
P74 プチコンでニンテンドー3DS/DSi/DSi LL
ゲームプログラミング講座
第1回 お題 シューティングゲーム
■松原 拓也

の記事も購買目的の一つです。早速、プログラムを入力して遊んでいます。いろいろ改造しながら、スプライトの利用方法 (ミニ・シュート: 自機の爆破処理など)を理解しています。

最後に、ちょっとした Tips です。通常 Emacs でバッファリストを開くと別ウインドウに表示されますが、同じウインドウに表示する設定です。

;;  ========================== .emacs ==========================
;; list-buffers
(setq same-window-regexps '("\*Buffer List\*"))    ;; \ = バックスラッシュ = Option + \
Force Same Window - GNU Emacs Manual
http://www.gnu.org/s/libtool/manual/emacs/Force-Same-Window.html
Special Buffer Frames - GNU Emacs Manual
http://www.gnu.org/s/libtool/manual/emacs/Special-Buffer-Frames.html#Special-Buffer-Frames

を参考に設定してみました。same-window-regexps 変数は、正規表現のリストです。