PC 内の音声ファイルをブラウザで再生する Ruby on Rails プログラム yplayer を公開。

PC 内の音声ファイルをブラウザで再生する Ruby on Rails プログラム yplayer を下記 URL で公開します。

kyoshiaki/yplayer
https://github.com/kyoshiaki/yplayer
yplayer/README.md
https://github.com/kyoshiaki/yplayer/blob/master/README.md

詳しい解説は上記 URL の README.md を参照してください。README.md は Markdown 記法で書かれています。上記サイトでプレビューを見ることができます。

最近だと Markdown 記法ファイルの表示、編集には下記 URL の エディタ Visual Studio Code を使うのが一番簡単です

Visual Studio Code - Code Editing. Redefined
https://code.visualstudio.com/

GitHub や git に不慣れだったり、私にとって Ruby on Rails の仕組みが複雑すぎて yplayer がうまく動作するか心配ですが、よかったらダウンロードしてみてください。

後、私の運用方法ですが、Raspberry Pi 2 Model B に

2018/11/04(Sun) 00:05:40
【 日本正規代理店品 】 Seagate 外付けハードディスク 2TB 3.5インチ USB3.0 3年保証 Expansion デスクトップ STEB2000100
販売: Amazon Japan G.K.
¥ 8,380
注文内容
商品の小計:¥ 8,380
配送料・手数料:¥ 0
注文合計:¥ 8,380
タイムセール割引:-¥ 1,200
ご請求額:
¥ 7,180

上記、アマゾンのタイムセールで安売りしてた Seagate 外付けハードディスク 2TB 3.5インチ USB 3.0 (Raspberry Pi の USB 規格は 2.0 です。) を ext4 形式でフォーマットして繋げ、

yplayer/tools/README.md
https://github.com/kyoshiaki/yplayer/blob/master/tools/README.md

上記 tools/README.md で紹介したスクリプト rec_radiko_live.sh を crontab で指定時刻に起動するように予約して Radiko を録音しています。

以前は 64GB の SDカードに録音し、拙作 delete.py を使ってディレクトリごとに最新 28 個のファイルだけ残すようにしていたのですが、SD カードでエラーが出るようになったので、ハードディスクに保存するように変更しました。今現在、録音した音声ファイルは全て残しています。

録音に失敗したら macOS Mojave バージョン 10.14.3(18D109)のターミナルで、同じ上記 tools/README.md で紹介したスクリプト rec_radiko_ts.sh を使ってダウンロードしています。ダウンロードした音声データはコマンド scp を使って Raspberry Pi 2 Model B に繋げたハードディスクにコピーしています。

yplayer は Raspberry Pi 2 Model B の電源を入れたら systemd を使って自動起動するようになっています。

上記スクリプトで録音した Radiko の音声ファイルを yplayer を使って iPhone XS MaxSafari で聴いています。
ほとんど自動化されているので聴きたくなったら Safari を起動する感じです。

Raspberry Pi 2 Model B に不満がないので Raspberry Pi 3 Model B+ は買うか悩んでいます。
Synology などの NAS にも興味があります。NAS があれば yplayer も必要ないかもしれません。

近況と書籍 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 を読み込んで閲覧してください。"