KOYAMA Yoshiaki のブログ プログラミングについての試行錯誤をつらつら書き溜めていきます。 2023-03-28T22:19:06+09:00 KYoshiaki Hatena::Blog hatenablog://blog/12704830469096903546 Docker Compose を使って WordPress、MySQL、phpMyAdmin、WP-CLI のローカル環境の構築 hatenablog://entry/4207112889975709275 2023-03-28T22:19:06+09:00 2023-03-28T22:19:06+09:00 KOYAMA Yoshiaki のブログ – WordPress 出張所に記事を書きました。kyoshiaki.sakura.ne.jp <p><a href="https://kyoshiaki.sakura.ne.jp/wp/?p=1326">KOYAMA Yoshiaki &#x306E;&#x30D6;&#x30ED;&#x30B0; &ndash; WordPress &#x51FA;&#x5F35;&#x6240;</a>に記事を書きました。</p><p><a href="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2023/03/docker_desktop.png" class="http-image"><img src="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2023/03/docker_desktop.png" class="http-image" alt="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2023/03/docker_desktop.png"></a></p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fkyoshiaki.sakura.ne.jp%2Fwp%2F%3Fp%3D1326" title="Docker Compose を使って WordPress、MySQL、phpMyAdmin、WP-CLI のローカル環境の構築 – KOYAMA Yoshiaki のブログ – WordPress 出張所" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://kyoshiaki.sakura.ne.jp/wp/?p=1326">kyoshiaki.sakura.ne.jp</a></cite></p> KYoshiaki Nintendo Switch Pro コントローラーを Mac mini (2023) で試す hatenablog://entry/4207112889969727146 2023-03-08T22:10:50+09:00 2023-03-08T22:12:39+09:00 KOYAMA Yoshiaki のブログ – WordPress 出張所に記事を書きました。kyoshiaki.sakura.ne.jp <p><a href="https://kyoshiaki.sakura.ne.jp/wp/?p=1310">KOYAMA Yoshiaki &#x306E;&#x30D6;&#x30ED;&#x30B0; &ndash; WordPress &#x51FA;&#x5F35;&#x6240;</a>に記事を書きました。</p><p><a href="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2023/03/BIO_CONTROLLER.png" class="http-image"><img src="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2023/03/BIO_CONTROLLER.png" class="http-image" alt="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2023/03/BIO_CONTROLLER.png"></a></p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fkyoshiaki.sakura.ne.jp%2Fwp%2F%3Fp%3D1310" title="Nintendo Switch Pro コントローラーを Mac mini (2023) で試す – KOYAMA Yoshiaki のブログ – WordPress 出張所" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://kyoshiaki.sakura.ne.jp/wp/?p=1310">kyoshiaki.sakura.ne.jp</a></cite></p> KYoshiaki Mac で Karabiner-Elements を使ってファンクションキーにショートカットキー Ctrl + C を割り当てる方法 hatenablog://entry/13574176438076272065 2022-03-24T19:44:14+09:00 2022-04-04T19:18:39+09:00 KOYAMA Yoshiaki のブログ – WordPress 出張所に記事を書きました。kyoshiaki.sakura.ne.jp <p><a href="https://kyoshiaki.sakura.ne.jp/wp/?p=1024">KOYAMA Yoshiaki &#x306E;&#x30D6;&#x30ED;&#x30B0; &ndash; WordPress &#x51FA;&#x5F35;&#x6240;</a>に記事を書きました。</p><p><a href="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2022/03/karabiner_complex.png" class="http-image"><img src="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2022/03/karabiner_complex.png" class="http-image" alt="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2022/03/karabiner_complex.png"></a></p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fkyoshiaki.sakura.ne.jp%2Fwp%2F%3Fp%3D1024" title="Mac で Karabiner-Elements を使ってファンクションキーにショートカットキー Ctrl + C を割り当てる方法 – KOYAMA Yoshiaki のブログ – WordPress 出張所" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://kyoshiaki.sakura.ne.jp/wp/?p=1024">kyoshiaki.sakura.ne.jp</a></cite></p> KYoshiaki Raspberry Pi 4 Model B のセットアップ方法 hatenablog://entry/26006613792872552 2021-08-01T23:47:25+09:00 2022-04-04T19:19:37+09:00 KOYAMA Yoshiaki のブログ – WordPress 出張所に記事を書きました。kyoshiaki.sakura.ne.jp <p><a href="https://kyoshiaki.sakura.ne.jp/wp/?p=846">KOYAMA Yoshiaki &#x306E;&#x30D6;&#x30ED;&#x30B0; &ndash; WordPress &#x51FA;&#x5F35;&#x6240;</a>に記事を書きました。</p><p><a href="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2021/08/Raspberry-Pi-4-Model-B-Armor-.png" class="http-image"><img src="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2021/08/Raspberry-Pi-4-Model-B-Armor-.png" class="http-image" alt="https://kyoshiaki.sakura.ne.jp/wp/wp-content/uploads/2021/08/Raspberry-Pi-4-Model-B-Armor-.png"></a></p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fkyoshiaki.sakura.ne.jp%2Fwp%2F%3Fp%3D846" title="Raspberry Pi 4 Model B のセットアップ方法 – KOYAMA Yoshiaki のブログ – WordPress 出張所" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://kyoshiaki.sakura.ne.jp/wp/?p=846">kyoshiaki.sakura.ne.jp</a></cite></p> KYoshiaki Mac でプログラミングを始めるために必要な書籍とドキュメント hatenablog://entry/26006613514807611 2020-02-16T19:26:12+09:00 2020-02-16T19:26:12+09:00 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://develo… <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> でプログラミングするには、<a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> の /アプリケーション/<a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a>.app からダウンロードできる <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> アプリの Help メニューが起点になりますが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> Developer Documentation、<a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> Connect ヘルプ も参考になります。</p> <pre>2020/01/03(Fri) 17:06:05 Xcode Help <a href="https://help.apple.com/xcode/mac/current/">https://help.apple.com/xcode/mac/current/</a> 2020/01/24(Fri) 17:42:03 Apple Developer Documentation <a href="https://developer.apple.com/documentation/">https://developer.apple.com/documentation/</a> 2020/01/03(Fri) 17:06:03 App Store Connect ヘルプ <a href="https://help.apple.com/app-store-connect/">https://help.apple.com/app-store-connect/</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC">プログラミング言語</a> Swift については、<a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> の /アプリケーション/ブック.app で無料で入手できる</p> <pre>2020/01/03(Fri) 17:05:58 The Swift Programming Language Swift 5.1 Edition <a href="https://books.apple.com/jp/book/the-swift-programming-language-swift-5-1/id881256329">https://books.apple.com/jp/book/the-swift-programming-language-swift-5-1/id881256329</a> </pre><p>は必須だと思います。新しいドキュメントが公開されると古いドキュメントのリンクはブックストアでは表示されなくなります。一度ダウンロードしておけば、再度ダウンロードできます。</p><p>/アプリケーション/ブック.app の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>から「ブックストア」を選択し、検索フィールドで <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> Education で検索すれば、色々書籍が出てくるので参考になります。</p> KYoshiaki Xcode のアカウント移行 hatenablog://entry/26006613506096287 2020-02-02T17:22:22+09:00 2020-02-02T17:41:49+09:00 最新版は公開していないんですが、ウインドウに並べられた各々ボタンにアプリケーションやフォルダを登録して実行できる拙作 PocketLauncher を使用しています。PocketLauncher のボタンにホームフォルダを登録して実行すると ‘アプリケーション “PocketLauncher” に “ホームフォルダ”を開くアクセス権がありません。’ と表示されます。以前、ターミナルで間違ってアクセス権を変更したのが原因かと思い、再度アクセス権を変更し直したら macOS Catalina 起動しなくなってしまいました。アクセス権がないという警告は、回避方法はわからないのですが、正しい動作のよう… <p>最新版は公開していないんですが、ウインドウに並べられた各々ボタンにアプリケーションやフォルダを登録して実行できる拙作 PocketLauncher を使用しています。PocketLauncher のボタンに<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A1%BC%A5%E0%A5%D5%A5%A9%A5%EB%A5%C0">ホームフォルダ</a>を登録して実行すると ‘アプリケーション “PocketLauncher” に “<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A1%BC%A5%E0%A5%D5%A5%A9%A5%EB%A5%C0">ホームフォルダ</a>”を開くアクセス権がありません。’ と表示されます。以前、ターミナルで間違ってアクセス権を変更したのが原因かと思い、再度アクセス権を変更し直したら <a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> Catalina 起動しなくなってしまいました。アクセス権がないという警告は、回避方法はわからないのですが、正しい動作のようです。</p><p>ちょうど、随分前に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Boot%20Camp">Boot Camp</a> のインストールで苦労したため (時間がなくプログに顛末を書けなかったのですが)、外部 HDD にインストールした <a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> Catalina がありました。</p> <pre>2019/11/06(Wed) 14:06:09 Amazon | 本, ファッション, 家電から食品まで | アマゾン <a href="https://www.amazon.co.jp/">https://www.amazon.co.jp/</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%ED%A5%B8%A5%AF%A1%BC%A5%EB">ロジクール</a> アドバンスド ワイヤレスマウス MX Master 3 MX2200sMG Unifying <a class="keyword" href="http://d.hatena.ne.jp/keyword/Bluetooth">Bluetooth</a> 高速スクロールホイール 充電式 FLOW 7ボタン <a class="keyword" href="http://d.hatena.ne.jp/keyword/windows">windows</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> OS 対応 無線 マウス MX2200 ミッドグレイ 国内正規品 2年間無償保証 ¥ 13,500 135pt (1%) 在庫あり。 数量: 1 販売: <a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon">Amazon</a> Japan G.K. </pre><p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B07XQ6XD8J/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/41Wb0DPsQnL._SL160_.jpg" class="hatena-asin-detail-image" alt="ロジクール アドバンスド ワイヤレスマウス MX Master 3 MX2200sGR Unifying Bluetooth 高速スクロールホイール 充電式 FLOW 7ボタン windows Mac iPad OS 対応 無線 マウス MX2200 グラファイト 国内正規品 2年間無償保証" title="ロジクール アドバンスド ワイヤレスマウス MX Master 3 MX2200sGR Unifying Bluetooth 高速スクロールホイール 充電式 FLOW 7ボタン windows Mac iPad OS 対応 無線 マウス MX2200 グラファイト 国内正規品 2年間無償保証"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B07XQ6XD8J/yoshiakishome-22/">ロジクール アドバンスド ワイヤレスマウス MX Master 3 MX2200sGR Unifying Bluetooth 高速スクロールホイール 充電式 FLOW 7ボタン windows Mac iPad OS 対応 無線 マウス MX2200 グラファイト 国内正規品 2年間無償保証</a></p><ul><li><span class="hatena-asin-detail-label">発売日:</span> 2019/09/27</li><li><span class="hatena-asin-detail-label">メディア:</span> Personal Computers</li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/iMac">iMac</a> 5K で上記<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%ED%A5%B8%A5%AF%A1%BC%A5%EB">ロジクール</a> アドバンスド ワイヤレスマウス MX Master 3 を使用しているのが原因か HDD から起動するとあまりの動作の遅さにびっくりしてしまいました。</p> <pre>2019/11/26(Tue) 23:41:37 Mac専門店 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%CD%D5%B4%DB">秋葉館</a>.com|<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a>・<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a>本体・周辺機器・パーツ <a href="https://www.akibakan.com/">https://www.akibakan.com/</a> DDR4 SO-DIMM 2666MHz 16GB(8GBx2) [260-2666-8192x2-CR] ¥11,550 商品合計 ¥11,550 送料 ¥550 合計 ¥12,100 (内消費税 ¥1,100) </pre><p>それで上記メモリ 16GB を増設して 24GB にし、やっと何とか使えるようになりました。どうせならと下記 1TB の外部 <a class="keyword" href="http://d.hatena.ne.jp/keyword/SSD">SSD</a> も購入してみました。</p> <pre>2019/12/08(Sun) 21:43:06 Amazon | 本, ファッション, 家電から食品まで | アマゾン <a href="https://www.amazon.co.jp/ref=nav_logo">https://www.amazon.co.jp/ref=nav_logo</a> BUFFALO ポータブル<a class="keyword" href="http://d.hatena.ne.jp/keyword/SSD">SSD</a> 日本製 <a class="keyword" href="http://d.hatena.ne.jp/keyword/PS4">PS4</a>(メーカー動作確認済) <a class="keyword" href="http://d.hatena.ne.jp/keyword/USB3.1">USB3.1</a>(Gen1) 対応 1TB <a class="keyword" href="http://d.hatena.ne.jp/keyword/SSD">SSD</a>-PG1.0U3-B/NL 耐衝撃・コ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CD%A5%AF%A5%BF%A1%BC">ネクター</a>保護機構 ¥ 9,680 97pt (1%) 在庫あり。 数量: 1 販売: <a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon">Amazon</a> Japan G.K. 注文内容 商品の小計: ¥9,680 配送料・手数料: ¥0 合計: ¥9,680 Amazon ポイント: -¥51 ご請求額: ¥9,629 </pre><p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B07HCM8383/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51W-sa5n91L._SL160_.jpg" class="hatena-asin-detail-image" alt="BUFFALO ポータブルSSD 日本製 PS4(メーカー動作確認済) USB3.1(Gen1) 対応 1TB SSD-PG1.0U3-B/NL 耐衝撃・コネクター保護機構" title="BUFFALO ポータブルSSD 日本製 PS4(メーカー動作確認済) USB3.1(Gen1) 対応 1TB SSD-PG1.0U3-B/NL 耐衝撃・コネクター保護機構"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B07HCM8383/yoshiakishome-22/">BUFFALO ポータブルSSD 日本製 PS4(メーカー動作確認済) USB3.1(Gen1) 対応 1TB SSD-PG1.0U3-B/NL 耐衝撃・コネクター保護機構</a></p><ul><li><span class="hatena-asin-detail-label">発売日:</span> 2018/09/15</li><li><span class="hatena-asin-detail-label">メディア:</span> Personal Computers</li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>内蔵ディスクのボリューム <a class="keyword" href="http://d.hatena.ne.jp/keyword/Macintosh">Macintosh</a> - Data を削除し、ボリューム <a class="keyword" href="http://d.hatena.ne.jp/keyword/Macintosh">Macintosh</a> HD を消去してから、ボリューム <a class="keyword" href="http://d.hatena.ne.jp/keyword/Macintosh">Macintosh</a> HD と外部 <a class="keyword" href="http://d.hatena.ne.jp/keyword/SSD">SSD</a> に <a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> Catalina をインストールしました。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> Catalina の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%E9">インストーラ</a>アプリ入手方法は、外部 HDD から <a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> Catalina の最新版で起動し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> から <a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> Catalina の入手ボタンをクリックするとアップデートが始まりますが、最新版なのでアップデートが終了した後、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%E9">インストーラ</a>をダウンロードするか尋ねてくるのでダウンロードを選択すれば入手できます。</p><br /> <br /> <p> ■ <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> のアカウント移行</p><p>前置きが長くなってしまいましたが、その時に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> の developer accounts 環境をコピーしたので、備考録のために書いておきます。</p><p>以前は、古い <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の developer accounts を新しい <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> にコピーするには、キーチェーンアクセスによる複雑な処理が必要でしたが、下記 URL のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> から developer accounts を export して、新しい環境の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で Import するだけです。ちょっとしたコツとして <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> を再起動する必要があります。</p> <pre>2020/01/03(Fri) 17:06:14 Export signing certificates and provisioning profiles - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> Help <a href="https://help.apple.com/xcode/mac/current/#/dev8a2822e0b">https://help.apple.com/xcode/mac/current/#/dev8a2822e0b</a> ▼Maintain signing assets Export developer accounts </pre><p>順を追って説明したいと思います。キーチェーンアクセスの操作は必要ないのですが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で import するとキーチェーンアクセスの中身がどう変化するのか確認するため表示しています。</p><br /> <br /> <p>■ 古い <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> での操作</p><p>古い <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の /アプリケーション/ユーティリティ/キーチェーンアクセス.app を起動して、「キーチェーン」リストで「ログイン」を選択し、「分類」で ‘鍵’ と ‘証明書’ を表示した状態</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163708" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163708.png" alt="f:id:KYoshiaki:20200202163708p:image" title="f:id:KYoshiaki:20200202163708p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 1) 鍵</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163713" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163713.png" alt="f:id:KYoshiaki:20200202163713p:image" title="f:id:KYoshiaki:20200202163713p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 2) 証明書</p><p>古い <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の /アプリケーション/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a>.app を起動し、メニュー > <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> > Preferences... を選択してから、表示されたウインドウの Accounts タブをクリックします。Export したいアカウント(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> ID) を選択した後、左下隅にあるギアアイコンをクリックして、下図のように メニュー > Export <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> ID and Code Signing Assets... を選択します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163717" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163717.png" alt="f:id:KYoshiaki:20200202163717p:image" title="f:id:KYoshiaki:20200202163717p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 3) Export Developer Accounts..</p><p>下図のようなダイアログが表示されるので、ファイル名 (下記例、Account ) とパスワードを入力し、保存先 (下記例、Desktop) を指定してから Save ボタンをクリックして保存します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163725" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163725.png" alt="f:id:KYoshiaki:20200202163725p:image" title="f:id:KYoshiaki:20200202163725p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 4) ファイル名とパスワードを入力</p><p>下図のようにファイルに保存された developer profile の情報がダイアログで表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163730" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163730.png" alt="f:id:KYoshiaki:20200202163730p:image" title="f:id:KYoshiaki:20200202163730p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 5) developer profile の情報</p><p>デスクトップに保存した developer profile を含むファイル Account.develperprofile が表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163734" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163734.png" alt="f:id:KYoshiaki:20200202163734p:image" title="f:id:KYoshiaki:20200202163734p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 6) Account.develperprofile</p><br /> <br /> <p>■ 新しい <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> での操作</p><p>新しい <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のキーチェーンアクセス.app を起動して、「キーチェーン」リストで「ログイン」を選択し、「分類」で ‘鍵’ と ‘証明書’ を表示した初期状態</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163740" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163740.png" alt="f:id:KYoshiaki:20200202163740p:image" title="f:id:KYoshiaki:20200202163740p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 7) 鍵</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163746" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163746.png" alt="f:id:KYoshiaki:20200202163746p:image" title="f:id:KYoshiaki:20200202163746p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 8) 証明書</p><p>下図は、新しい <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の /アプリケーション/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a>.app を起動し、メニュー > <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> > Preferences... を選択してから表示されたウインドウの Accounts タブをクリックした空っぽの状態です。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163750" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163750.png" alt="f:id:KYoshiaki:20200202163750p:image" title="f:id:KYoshiaki:20200202163750p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 9) Accounts タブ</p><p>下図のように、左下隅にあるギアアイコンをクリックして、 メニュー > Import <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> ID and Code Signing Assets... を選択します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163756" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163756.png" alt="f:id:KYoshiaki:20200202163756p:image" title="f:id:KYoshiaki:20200202163756p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 10) Import Developer Accounts...</p><p>古い <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で Export した developer profile 含むファイル Account.develperprofile を下図のように選択して Open をクリックします。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163803" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163803.png" alt="f:id:KYoshiaki:20200202163803p:image" title="f:id:KYoshiaki:20200202163803p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 11) Account.develperprofile</p><p>パスワードを入力して、OK ボタンをクリックすると下図のようにファイルに Import された developer profile の情報がダイアログで表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163808" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163808.png" alt="f:id:KYoshiaki:20200202163808p:image" title="f:id:KYoshiaki:20200202163808p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 12) developer profile </p><p>この段階だと下図のように Team にメンバーが表示されず、Download Manual Profiles、Manage Certiticates... ボタンも有効になっていません。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163812" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163812.png" alt="f:id:KYoshiaki:20200202163812p:image" title="f:id:KYoshiaki:20200202163812p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 13) Download Manual Profiles、Manage Certiticates... ボタン</p><p>そこで <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> を一旦終了して、再度実行してください。メニュー > <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> > Preferences... を選択してから Accounts タブをクリックすると下図のように "Your session has expired. Please log in" という警告が出るので <a class="keyword" href="http://d.hatena.ne.jp/keyword/Sign">Sign</a> In Again... ボタンをクリックしてログインしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163818" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163818.png" alt="f:id:KYoshiaki:20200202163818p:image" title="f:id:KYoshiaki:20200202163818p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 14) Your session has expired. Please log in.</p><p>下図のように Team にメンバーが表示され、Download Manual Profiles、Manage Certiticates... ボタンも有効になります。これで developer accounts の移行に成功しました。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163822" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163822.png" alt="f:id:KYoshiaki:20200202163822p:image" title="f:id:KYoshiaki:20200202163822p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 15) <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> のアカウント移行に成功</p><p>新しい <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の /アプリケーション/ユーティリティ/キーチェーンアクセス.app を起動して、「キーチェーン」リストで「ログイン」を選択し、「分類」で ‘鍵’ と ‘証明書’ を表示した状態です。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163829" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163829.png" alt="f:id:KYoshiaki:20200202163829p:image" title="f:id:KYoshiaki:20200202163829p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 16) 鍵 </p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20200202163833" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20200202/20200202163833.png" alt="f:id:KYoshiaki:20200202163833p:image" title="f:id:KYoshiaki:20200202163833p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 17) 証明書</p><p>上図で 図 2) で表示されている <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> Worldwide Develpoer Relations Certification Authority、Developer ID Certification Authority 証明書が表示されていませんが、図 15) の Download Manual Profiles ボタンをクリックすればダウンロードされると思います。</p> KYoshiaki Nintendo Switch 版ダウンロードソフト 'プチコン4' で遊べるマインスイーパ YOS_MINE4 と PC からプチコン4へファイルを転送するためのソフトウェア Petit4Send の簡易説明書を公開。 hatenablog://entry/26006613448869739 2019-10-13T17:33:25+09:00 2019-12-08T12:26:53+09:00 Nintendo Switch|ダウンロード購入|プチコン4 SmileBASIC https://ec.nintendo.com/JP/ja/titles/70010000010547 Nintendo Switch 版ダウンロードソフト 'プチコン4' で遊べるマインスイーパを作ってみました。良かったらダウンロードしてみてください。公開キーと実行画面を載せておきます。 マインスイーパ(YOS_MINE4) ヨシアキ YOS_MINE4 マス目上に置かれたセルを開き、地雷以外のセルをすべて開くゲーム。 公開キー 4TAJVV3NJ 実行画面 2019/08/23(Fri) 19:44:57 … <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a>|ダウンロード購入|<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4 SmileBASIC <a href="https://ec.nintendo.com/JP/ja/titles/70010000010547">https://ec.nintendo.com/JP/ja/titles/70010000010547</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> 版ダウンロードソフト '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4' で遊べる<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%F3%A5%B9%A5%A4%A1%BC%A5%D1">マインスイーパ</a>を作ってみました。良かったらダウンロードしてみてください。公開キーと実行画面を載せておきます。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%F3%A5%B9%A5%A4%A1%BC%A5%D1">マインスイーパ</a>(YOS_MINE4) ヨシアキ YOS_MINE4 マス目上に置かれたセルを開き、地雷以外のセルをすべて開くゲーム。 公開キー 4TAJVV3NJ </pre><p>実行画面</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20191013170956" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20191013/20191013170956.png" alt="f:id:KYoshiaki:20191013170956p:image" title="f:id:KYoshiaki:20191013170956p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20191013170951" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20191013/20191013170951.png" alt="f:id:KYoshiaki:20191013170951p:image" title="f:id:KYoshiaki:20191013170951p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20191014132340" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20191014/20191014132340.png" alt="f:id:KYoshiaki:20191014132340p:image" title="f:id:KYoshiaki:20191014132340p:image" class="hatena-fotolife" itemprop="image"></a></span></p><br /> <p></p> <pre>2019/08/23(Fri) 19:44:57 麗の小屋 - PetitCom4 File Sender Petit4Send - <a href="http://rei.to/petit4send.html">http://rei.to/petit4send.html</a> </pre><p>PCから<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4へファイルを転送するためのソフトウェア Petit4Send には大変お世話になりました。簡単な簡易説明書を下記のように書いてみました。</p><p>■ <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4で作成したプログラムをPCに転送する方法。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4で作成したプログラムをPCに転送するのは比較的簡単です。</p><p>「Pro Micro」(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Arduino">Arduino</a>互換機)などは必要ありません。</p><p>必要なのは <a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> 本体背面、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> Lite の場合は底面に装着する <a class="keyword" href="http://d.hatena.ne.jp/keyword/microSD">microSD</a> メモ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%AB%A1%BC%A5%C9">リカード</a> (または microSDHC、microSDXC メモ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%AB%A1%BC%A5%C9">リカード</a>) だけです。</p> <pre>麗の小屋 - PetitCom4 File Sender Petit4Send - <a href="http://rei.to/petit4send.html">http://rei.to/petit4send.html</a> </pre><p>上記サイトのダウンロード・頒布より、PCと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4側それぞれにソフトをダウンロードします。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4の</p> <pre>TOPMENU > ファイル操作 > 使用するプロジェクトを変更 </pre><p>で設定したカレントプロジェクトに P4SEND122.PRG と PC に転送したいプログラムをコピーします。</p> <pre>TOPMENU > プログラムを作る </pre><p>をタップします。- ボタンを押してソフトウェアキーボードを表示し、Lボタンを押しながらソフトウェアキーボード上部にある '簡易LOAD' をタップして P4SEND122.PRG を読み込みます。次に + ボタンを押して実行します。</p><p>表示されるメニューから SCREENSHOT SEND を方向ボタン上下または <a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> Lite の場合、十字ボタン上下で選び、Aボタンを押して選択します。<br /> ファイル選択画面が表示されるのでPCに転送したいファイルを選びます。</p><p>ファイル名や圧縮状態が表示されます。圧縮が終了したら画像の枚数が表示されるので、Aボタンを押して転送したいプログラムの画像を表示します。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Joy-Con">Joy-Con</a> (L) のキャプチャーボタン (四角いボタン)、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> Lite の場合は、正面左側のキャプチャーボタン (四角いボタン) を押して画像ファイルに保存します。</p><p>Aボタンを押すとメニュー画面に戻るので、複数のプログラムをPCに保存したいなら、再度、SCREENSHOT SEND を選んで先ほどと同様にプログラムを画像に変換して保存してください。</p><p>ちゃんと画像が保存されているか、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> HOME メニューのアルバムアイコンをタップして確認してください。</p><p>電源ボタンを長押しして</p> <pre>電源オプション > 電源OFF </pre><p>を選んで電源を切ってください。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> 本体背面、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> Lite の場合は底面から <a class="keyword" href="http://d.hatena.ne.jp/keyword/microSD">microSD</a> メモ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%AB%A1%BC%A5%C9">リカード</a>を取り出し、SD カードリーダーなどにセットし PC に接続します。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%AF%A5%B9%A5%D7%A5%ED%A1%BC%A5%E9">エクスプローラ</a>の左側ナビゲーションウィンドウで PC を選んで、SD カードドライブを開きます。</p><p>Nintendo という名前のフォルダが見えるはずです。その中の Album フォルダにキャプチャーした画像が入っています。</p><p>西暦/月/日 でフォルダ分けされています。2019年08月23日に撮った画像は、Nintendo/Album/2019/08/23フォルダに格納されています。</p><p>PC 側のソフト Petit4Send.exe を起動します。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows">Windows</a> によって PC が保護されましたと表示されたら、詳細情報をクリックすると実行ボタンが現れるのでクリックしてください。</p><p>表示されたウインドウの Decode Image タブを選択します。<br /> ウィンドウの中にキャプチャーした画像 (先ほどの例だと Nintendo/Album/2019/08/23 フォルダ内の画像) を全てドラッグ・ドロップしてください。</p><p>ウィンドウの内部に画像のファイル名やサイズが表示されます。</p><p>Convert ボタンをクリックしてテキストに変換します。</p><p>デフォルトだとドキュメントフォルダに<a class="keyword" href="http://d.hatena.ne.jp/keyword/UTF-8">UTF-8</a>のTXT形式のファイルとして保存されます。</p><p>これで<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4で作成したプログラムをPCに転送することができました。</p><br /> <br /> <p> ■ PC から<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4に画像やプログラムを転送する方法。</p><p>PC から<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4に画像やテキストを転送するには、「Pro Micro」(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Arduino">Arduino</a>互換機) が必要です。</p><p>私が購入した「Pro Micro」(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Arduino">Arduino</a>互換機)は</p> <pre>KeeYees Pro Micro ATmega32U4 5V/16MHz <a class="keyword" href="http://d.hatena.ne.jp/keyword/Arduino">Arduino</a> Leonardo互換マイクロコントローラ Micro USB 開発ボード (3個) 1,780 円 </pre><p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B07Q4VRT36/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51smHYdKEAL._SL160_.jpg" class="hatena-asin-detail-image" alt="KeeYees Pro Micro ATmega32U4 5V/16MHz Arduino用 互換マイクロコントローラ Micro USB 開発ボード (3個)" title="KeeYees Pro Micro ATmega32U4 5V/16MHz Arduino用 互換マイクロコントローラ Micro USB 開発ボード (3個)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B07Q4VRT36/yoshiakishome-22/">KeeYees Pro Micro ATmega32U4 5V/16MHz Arduino用 互換マイクロコントローラ Micro USB 開発ボード (3個)</a></p><ul><li><span class="hatena-asin-detail-label">メディア:</span></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>です。</p><p>Petit4Send を試すために、私が購入したものは最後に記載してあります。不必要なものもあるし、半田ごてなど別途必要なものもあるので参考程度にしてください。<a class="keyword" href="http://d.hatena.ne.jp/keyword/iMac">iMac</a> 5K の BootCamp 上 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows">Windows</a> 10 Pro 1903 OSビルド 18362.418 で動作確認済みです。</p><p>ブレッドボードは既に所有しているので購入しませんでした。ピンヘッダを差した KeeYees Pro Micro をブレッドボードで固定してはんだ付けしました。結局、TSKツールクリッパー TX303 は必要ありませんでした。</p><p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B003SBS4EM/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/41Hal6jjnGL._SL160_.jpg" class="hatena-asin-detail-image" alt="TSK ツールクリッパー TX303" title="TSK ツールクリッパー TX303"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B003SBS4EM/yoshiakishome-22/">TSK ツールクリッパー TX303</a></p><ul><li><span class="hatena-asin-detail-label">メディア:</span> Tools &amp; Hardware</li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>半田付けの土台以外にブレッドボードは使用しませんでした。</p> <pre>麗の小屋 - PetitCom4 File Sender Petit4Send - <a href="http://rei.to/petit4send.html">http://rei.to/petit4send.html</a> </pre><p>上記サイトの作り方の手順に従ってください。ただし、私の場合はブレッドボードを使用しないので、ピンヘッダの向きと使用したジャンパーワイヤの種類が違います。下図のようになります。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20191013170946" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20191013/20191013170946.png" alt="f:id:KYoshiaki:20191013170946p:image" title="f:id:KYoshiaki:20191013170946p:image" class="hatena-fotolife" itemprop="image"></a></span></p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows">Windows</a> 10 Proへのドライバのインストールですが、</p> <pre>2019/08/24(Sat) 16:55:42 Arduino - Software <a href="https://www.arduino.cc/en/Main/Software">https://www.arduino.cc/en/Main/Software</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Arduino">Arduino</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/IDE">IDE</a> をインストールすればドライバもインストールされるので、上記ページから<a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows">Windows</a> app Requires Win 8.1 or 10 の Get <a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows">Windows</a> アイコンをクリックしてインストールしました。</p><p>すぐに Petit4Send.exe を使って、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%A1%A1%BC%A5%E0%A5%A6%A5%A7%A5%A2">ファームウェア</a>を Pro Micro に書き込んで試しても良いのですが、所有している LED を使って動作確認することにしました。</p><p>Arudino <a class="keyword" href="http://d.hatena.ne.jp/keyword/IDE">IDE</a>アプリで</p> <pre>メニュー > ファイル > スケッチ例 > 01.Basis > Blink </pre><p>を選択して LED 点滅のスケッチを開いて、</p> <pre>メニュー > Help > リファレンス </pre> <pre>Variables Constants LED_BUILTIN <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>/hardware/<a class="keyword" href="http://d.hatena.ne.jp/keyword/arduino">arduino</a>/avr/variants/leonardo/pins_<a class="keyword" href="http://d.hatena.ne.jp/keyword/arduino">arduino</a>.h 106:#define LED_BUILTIN 13 </pre><p>より、Pro Micro には <a class="keyword" href="http://d.hatena.ne.jp/keyword/Arduino">Arduino</a> の13ピンがないので LED を7番ピンに繋げることにして、ソースの LED_BUILTIN をすべて 7 に変更しました。あとは<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%B3%A5%F3">マイコン</a>ボードに書き込んで LED が点滅するのを確認しました。</p><p>Petit4Send.exe の動作確認は、PC と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Nintendo%20Switch">Nintendo Switch</a> を Pro Micro 2台で繋げてから、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4で</p> <pre>TOPMENU > プログラムを作る </pre><p>をタップし、Xボタンを押してエディタを開きます。</p><p>PC 側で Petit4Send.exe を実行し、Keyboard タブを選び、Port を指定して Start ボタン押します。<br /> PC でキーを入力した文字が<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%AD%A5%B9%A5%C8%A5%A8%A5%C7%A5%A3%A5%BF">テキストエディタ</a>に表示されれば正常に動作しています。</p><p>はんだ付けに不備があり、最初は失敗しました。再度、半田付けをやり直したら、PCから<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>4に画像やプログラムの転送に成功しました。</p><br /> <br /> <p> ■ アマゾンで購入したもの。</p> <pre>2019/07/02(Tue) 23:28:31 Amazon | 本, ファッション, 家電から食品まで | アマゾン <a href="https://www.amazon.co.jp/gp/homepage.html">https://www.amazon.co.jp/gp/homepage.html</a> </pre> <pre>KeeYees Pro Micro ATmega32U4 5V/16MHz <a class="keyword" href="http://d.hatena.ne.jp/keyword/Arduino">Arduino</a> Leonardo互換マイクロコントローラ Micro USB 開発ボード (3個) 1,780 円 数量: 1 販売: KeeYees-JP TSK ツールクリッパー TX303 1,616 円 16pt (1%) 数量: 1 販売: <a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon">Amazon</a> Japan G.K. 注文内容 商品の小計: 3,396 円 配送料・手数料: 0 円 合計: 3,396 円 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon">Amazon</a> ポイント: -14 円 ご請求額: 3,382 円 </pre><p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B07Q4VRT36/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51smHYdKEAL._SL160_.jpg" class="hatena-asin-detail-image" alt="KeeYees Pro Micro ATmega32U4 5V/16MHz Arduino用 互換マイクロコントローラ Micro USB 開発ボード (3個)" title="KeeYees Pro Micro ATmega32U4 5V/16MHz Arduino用 互換マイクロコントローラ Micro USB 開発ボード (3個)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B07Q4VRT36/yoshiakishome-22/">KeeYees Pro Micro ATmega32U4 5V/16MHz Arduino用 互換マイクロコントローラ Micro USB 開発ボード (3個)</a></p><ul><li><span class="hatena-asin-detail-label">メディア:</span></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B003SBS4EM/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/41Hal6jjnGL._SL160_.jpg" class="hatena-asin-detail-image" alt="TSK ツールクリッパー TX303" title="TSK ツールクリッパー TX303"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B003SBS4EM/yoshiakishome-22/">TSK ツールクリッパー TX303</a></p><ul><li><span class="hatena-asin-detail-label">メディア:</span> Tools &amp; Hardware</li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><br /> <br /> <p> ■ <a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%B7%EE%C5%C5%BB%D2%C4%CC%BE%A6">秋月電子通商</a>で購入したもの</p> <pre>2019/07/02(Tue) 19:51:02 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%B7%EE%C5%C5%BB%D2%C4%CC%BE%A6">秋月電子通商</a> - 電子部品・<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C8%BE%C6%B3%C2%CE">半導体</a> 【通販・販売】 <a href="http://akizukidenshi.com/catalog/top.aspx">http://akizukidenshi.com/catalog/top.aspx</a> </pre><p>オーダーID E??????-??????-??<br /> 通販コード 商品名 価格 数量 合計</p><p>P-03474 ブレッドボード・ジャンパー延長ワイヤ(メス-メス)15cm赤 1セット 330 円<br /> 数量: 1 セット 330 円</p><p>C-09313 USBケーブル USB2.0 Aオス-マイクロBオス 0.3m A-microB <br /> 1本 110 円<br /> 数量: 2 本 220 円</p><p>C-07607 USBケーブル USB2.0 Aオス-マイクロBオス 1.5m A-microB<br /> 1本 120 円<br /> 数量: 1 本 120 円</p><p>C-13428 USB OTGケーブル TypeC 10cm <br /> 1本 250 円<br /> 数量: 1 本 250 円</p><p>T-02594 はんだ 0.8mm 1個 210 円<br /> 数量: 1 個 210 円</p><p>商品小計 1,130 円<br /> 送料(佐川急便の場合) 500 円<br /> 合計金額(銀行振込、クレジット決済の場合)1,630 円<br /> 代引き手数料(金額に関係なく一律) 300 円<br /> 合計金額(代引きの場合) 1,930 円</p> KYoshiaki PC 内の音声ファイルをブラウザで再生する Ruby on Rails プログラム yplayer を公開。 hatenablog://entry/17680117126986793346 2019-03-03T12:11:06+09:00 2019-03-03T12:14:50+09:00 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… <p>PC 内の音声ファイルをブラウザで再生する <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby%20on%20Rails">Ruby on Rails</a> プログラム yplayer を下記 URL で公開します。</p> <pre>kyoshiaki/yplayer <a href="https://github.com/kyoshiaki/yplayer">https://github.com/kyoshiaki/yplayer</a> yplayer/README.md <a href="https://github.com/kyoshiaki/yplayer/blob/master/README.md">https://github.com/kyoshiaki/yplayer/blob/master/README.md</a> </pre><p>詳しい解説は上記 URL の README.md を参照してください。README.md は <a class="keyword" href="http://d.hatena.ne.jp/keyword/Markdown">Markdown</a> 記法で書かれています。上記サイトでプレビューを見ることができます。</p><p>最近だと <a class="keyword" href="http://d.hatena.ne.jp/keyword/Markdown">Markdown</a> 記法ファイルの表示、編集には下記 URL の エディタ <a class="keyword" href="http://d.hatena.ne.jp/keyword/Visual%20Studio%20Code">Visual Studio Code</a> を使うのが一番簡単です</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Visual%20Studio%20Code">Visual Studio Code</a> - Code Editing. Redefined <a href="https://code.visualstudio.com/">https://code.visualstudio.com/</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> や git に不慣れだったり、私にとって <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby%20on%20Rails">Ruby on Rails</a> の仕組みが複雑すぎて yplayer がうまく動作するか心配ですが、よかったらダウンロードしてみてください。</p><br /> <p>後、私の運用方法ですが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> 2 Model B に </p> <pre>2018/11/04(Sun) 00:05:40 【 日本正規代理店品 】 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Seagate">Seagate</a> 外付けハードディスク 2TB 3.5インチ <a class="keyword" href="http://d.hatena.ne.jp/keyword/USB3.0">USB3.0</a> 3年保証 Expansion デスクトップ STEB2000100 販売: <a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon">Amazon</a> Japan G.K. ¥ 8,380 注文内容 商品の小計:¥ 8,380 配送料・手数料:¥ 0 注文合計:¥ 8,380 タイムセール割引:-¥ 1,200 ご請求額: ¥ 7,180 </pre><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B07FMVNHV5/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/41x9upeOBNL._SL160_.jpg" class="hatena-asin-detail-image" alt="Seagate 3年保証 2TB TV 録画 外付 HDD 4K テレビ PS4 対応 静音 ハードディスク 3.5 インチ シーゲイト 日本正規代理店品 購入前安心サポートあり" title="Seagate 3年保証 2TB TV 録画 外付 HDD 4K テレビ PS4 対応 静音 ハードディスク 3.5 インチ シーゲイト 日本正規代理店品 購入前安心サポートあり"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B07FMVNHV5/yoshiakishome-22/">Seagate 3年保証 2TB TV 録画 外付 HDD 4K テレビ PS4 対応 静音 ハードディスク 3.5 インチ シーゲイト 日本正規代理店品 購入前安心サポートあり</a></p><ul><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/SEAGATE">SEAGATE</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2018/08/12</li><li><span class="hatena-asin-detail-label">メディア:</span> Personal Computers</li><li><a href="http://d.hatena.ne.jp/asin/B07FMVNHV5/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>上記、アマゾンのタイムセールで安売りしてた <a class="keyword" href="http://d.hatena.ne.jp/keyword/Seagate">Seagate</a> 外付けハードディスク 2TB 3.5インチ USB 3.0 (<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の USB 規格は 2.0 です。) を <a class="keyword" href="http://d.hatena.ne.jp/keyword/ext4">ext4</a> 形式でフォーマットして繋げ、</p> <pre>yplayer/tools/README.md <a href="https://github.com/kyoshiaki/yplayer/blob/master/tools/README.md">https://github.com/kyoshiaki/yplayer/blob/master/tools/README.md</a> </pre><p>上記 tools/README.md で紹介した<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_live.sh を crontab で指定時刻に起動するように予約して <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> を録音しています。</p><p>以前は 64GB の SDカードに録音し、拙作 delete.py を使って<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リごとに最新 28 個のファイルだけ残すようにしていたのですが、SD カードでエラーが出るようになったので、ハードディスクに保存するように変更しました。今現在、録音した音声ファイルは全て残しています。</p><p>録音に失敗したら <a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> Mojave バージョン 10.14.3(18D109)のターミナルで、同じ上記 tools/README.md で紹介した<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_ts.sh を使ってダウンロードしています。ダウンロードした音声データはコマンド scp を使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> 2 Model B に繋げたハードディスクにコピーしています。</p><p>yplayer は <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> 2 Model B の電源を入れたら systemd を使って<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BC%AB%C6%B0%B5%AF%C6%B0">自動起動</a>するようになっています。</p><p>上記<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>で録音した <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> の音声ファイルを yplayer を使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone%20XS%20Max">iPhone XS Max</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> で聴いています。<br /> ほとんど自動化されているので聴きたくなったら <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> を起動する感じです。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> 2 Model B に不満がないので <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> 3 Model B+ は買うか悩んでいます。<br /> Synology などの <a class="keyword" href="http://d.hatena.ne.jp/keyword/NAS">NAS</a> にも興味があります。<a class="keyword" href="http://d.hatena.ne.jp/keyword/NAS">NAS</a> があれば yplayer も必要ないかもしれません。</p> KYoshiaki 近況と書籍 Creative Selection、Programming Rust の紹介 hatenablog://entry/17680117126966515865 2019-02-17T13:51:58+09:00 2019-03-08T17:10:30+09:00 ご無沙汰しています。Raspberry Pi を主に Radiko の録音に使っています。最近、何度も挑戦して諦めていた Ruby on Rails が理解できるようになりました。Raspberry Pi 上で録音した音声ファイルを iOS の GoodReader で聴いていたのですが、ブラウザで再生する Ruby on Rails プログラム yplayer を作ってみました。ほとんど完成しているのですが、実行画面と動画をちょっとだけチラ見しておきます。実行画面 動画この動画は Ruby on Rails をインストールした Rapsberry Pi 上で、録音した Radiko.jp の… <p>ご無沙汰しています。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> を主に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> の録音に使っています。最近、何度も挑戦して諦めていた <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby%20on%20Rails">Ruby on Rails</a> が理解できるようになりました。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> 上で録音した音声ファイルを <a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS">iOS</a> の GoodReader で聴いていたのですが、ブラウザで再生する <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby%20on%20Rails">Ruby on Rails</a> プログラム yplayer を作ってみました。ほとんど完成しているのですが、実行画面と動画をちょっとだけチラ見しておきます。</p><p>実行画面<br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20190217123711" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20190217/20190217123711.png" alt="f:id:KYoshiaki:20190217123711p:image" title="f:id:KYoshiaki:20190217123711p:image" class="hatena-fotolife" itemprop="image"></a></span> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20190217123704" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20190217/20190217123704.png" alt="f:id:KYoshiaki:20190217123704p:image" title="f:id:KYoshiaki:20190217123704p:image" class="hatena-fotolife" itemprop="image"></a></span> <br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20190217123657" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20190217/20190217123657.png" alt="f:id:KYoshiaki:20190217123657p:image" title="f:id:KYoshiaki:20190217123657p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>動画</p><p>この動画は <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby%20on%20Rails">Ruby on Rails</a> をインストールした Rapsberry Pi 上で、録音した <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko.jp">Radiko.jp</a> の音声ファイルを yplayer を使って、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone%20XS%20Max">iPhone XS Max</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> で聴いている様子を録画したものです。</p><p><iframe width="420" height="315" src="https://www.youtube.com/embed/MEe2lbwvAWQ?wmode=transparent" frameborder="0" allowfullscreen></iframe></p><p>公開するためにはもうしばらくかかりそうです。できれば <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> で公開しようと思っています。</p><br /> <p>今日は2つ書籍を紹介します。</p><p>まず最初は</p> <pre>2018/11/18(Sun) 14:32:41 Amazon.com Creative Selection: Inside <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a>'s Design Process During the Golden Age of <a class="keyword" href="http://d.hatena.ne.jp/keyword/Steve%20Jobs">Steve Jobs</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Edition by Ken Kocienda (Author) Audible Audiobook from $16.22 
 Hardcover $18.89 
Paperback $12.90 
<a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> $15.07 
1$=¥112.82 ¥1700 クレジット会社からの請求 ¥1750 </pre><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B07F18HYX3/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/3170aUzdV5L._SL160_.jpg" class="hatena-asin-detail-image" alt="Creative Selection: Inside Apple's Design Process During the Golden Age of Steve Jobs (English Edition)" title="Creative Selection: Inside Apple's Design Process During the Golden Age of Steve Jobs (English Edition)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B07F18HYX3/yoshiakishome-22/">Creative Selection: Inside Apple's Design Process During the Golden Age of Steve Jobs (English Edition)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> Ken Kocienda</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> Macmillan</li><li><span class="hatena-asin-detail-label">発売日:</span> 2018/09/06</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><a href="http://d.hatena.ne.jp/asin/B07F18HYX3/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>です。私は米国 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon.com">Amazon.com</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> 版を購入しています。日本の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon.co.jp">Amazon.co.jp</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> 版を購入すると 1,474 円 と割安です。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Podcast">Podcast</a>、Rebuild.fm と Misreading Chat で紹介されていました。</p> <pre>Rebuild - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Podcast">Podcast</a> by Tatsuhiko Miyagawa <a href="http://rebuild.fm/">http://rebuild.fm/</a> Misreading Chat – CS の論文読んで話をしよう <a href="https://misreading.chat/">https://misreading.chat/</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の製品<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B3%AB%C8%AF%A5%D7%A5%ED%A5%BB%A5%B9">開発プロセス</a>の内情を紹介したものです。作者 Ken Kocienda さんが関わったプロジェクト <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS">iOS</a> のソフトウェアキーボードの開発過程が詳細に説明されています。</p><p>最初に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Steve%20Jobs">Steve Jobs</a> 氏の前でデモする場面が書いてあるのですが、読みながら緊張してしまいました。時代背景の説明や識者からの言葉の引用があったり面白く読めました。</p><p>作者はオリジナル <a class="keyword" href="http://d.hatena.ne.jp/keyword/Macintosh">Macintosh</a> の開発者 Bud Tribble さんと <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のソフトウェアエンジニア Andy Hertzfeld さんが起こしたスタートアップ会社 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Eazel">Eazel</a> で働いていました。</p><p>その時の上司だった Don Melton さんと一緒にアップルに入社します。Don さんは <a class="keyword" href="http://d.hatena.ne.jp/keyword/Eazel">Eazel</a> の前に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Netscape">Netscape</a> に勤めていました。Ezael で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux">Linux</a> 向けに作った <a class="keyword" href="http://d.hatena.ne.jp/keyword/Nautilus">Nautilus</a> が<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AA%A1%BC%A5%D7%A5%F3%A5%BD%A1%BC%A5%B9">オープンソース</a>だったのは <a class="keyword" href="http://d.hatena.ne.jp/keyword/WebKit">WebKit</a> が<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AA%A1%BC%A5%D7%A5%F3%A5%BD%A1%BC%A5%B9">オープンソース</a>だったりするのに影響しているのでしょうか?</p><p>作者はアップルで自前のウェブブラウザを開発することになるのですが、最初は <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mozilla">Mozilla</a> を移植しようと取り組んでいました。上手くいかず、新しく入った元 NeXT 社員、Richard Williamson さんが <a class="keyword" href="http://d.hatena.ne.jp/keyword/KHTML">KHTML</a> を移植し、頓挫していたプロジェクトの救世主になります。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/WebKit">WebKit</a> <a href="https://webkit.org/">https://webkit.org/</a> Blink - The <a class="keyword" href="http://d.hatena.ne.jp/keyword/Chromium">Chromium</a> Projects <a href="https://www.chromium.org/blink">https://www.chromium.org/blink</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/KHTML">KHTML</a> をフォークした <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> のブラウザエンジン <a class="keyword" href="http://d.hatena.ne.jp/keyword/WebKit">WebKit</a> が <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> や <a class="keyword" href="http://d.hatena.ne.jp/keyword/WebKit">WebKit</a> を fork した blink、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Chrome">Chrome</a> の基礎となるわけですから、世の中わからないですよね。</p><p>全然関係ないですが <a class="keyword" href="http://d.hatena.ne.jp/keyword/Steve%20Jobs">Steve Jobs</a> 氏が現在の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple%20Store">Apple Store</a>、店舗を開くと聞いた時、大丈夫かなと思ったのですが、それが <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> のサポートなどに使われるわけですから、私のような凡人には予測不可能ですね。</p> <pre>2018/12/07(Fri) 15:56:38 Microsoft Edge: Making the web better through more open source collaboration - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows">Windows</a> Experience BlogWindows Experience Blog <a href="https://blogs.windows.com/windowsexperience/2018/12/06/microsoft-edge-making-the-web-better-through-more-open-source-collaboration/">https://blogs.windows.com/windowsexperience/2018/12/06/microsoft-edge-making-the-web-better-through-more-open-source-collaboration/</a> </pre><p>上記よりブラウザ勢力図はどうなるんでしょうか?</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS">iOS</a> のキーボートを開発していく過程も細かく描写されています。<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> を見た時の感動や <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> が発表されて初めて製品名が <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> だと知ったことなどが書かれています。</p><p>後半には題名 Creative Selection にもなっている <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B3%AB%C8%AF%A5%D7%A5%ED%A5%BB%A5%B9">開発プロセス</a> demo -> feedback -> next demo: creative selection と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> の A/B テストを用いた開発の違いが説明されています。</p><p>英語力が乏しいので間違って理解している箇所もあるかもしれません。</p><p>もう一冊は</p> <pre>2018/07/06(Fri) 18:38:39 Amazon.com Programming Rust: Fast, Safe Systems Development 1st Edition, <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Edition by Jim Blandy (Author), Jason Orendorff (Author) Digital List Price: $50.99 Print List Price: $59.99 Save $26.67 (44%) <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> $33.32 1$=¥110.63 ¥3686 クレジット会社 ¥3771 </pre><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/1491927283/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51cdXICI6nL._SL160_.jpg" class="hatena-asin-detail-image" alt="Programming Rust: Fast, Safe Systems Development" title="Programming Rust: Fast, Safe Systems Development"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/1491927283/yoshiakishome-22/">Programming Rust: Fast, Safe Systems Development</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> Jim Blandy,Jason Orendorff</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> O'Reilly Media</li><li><span class="hatena-asin-detail-label">発売日:</span> 2017/12/21</li><li><span class="hatena-asin-detail-label">メディア:</span> ペーパーバック</li><li><a href="http://d.hatena.ne.jp/asin/1491927283/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873118557/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51vpZLDJAAL._SL160_.jpg" class="hatena-asin-detail-image" alt="プログラミングRust" title="プログラミングRust"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873118557/yoshiakishome-22/">プログラミングRust</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> Jim Blandy,Jason Orendorff,中田秀基</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AA%A5%E9%A5%A4%A5%EA%A1%BC%A5%B8%A5%E3%A5%D1%A5%F3">オライリージャパン</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2018/08/10</li><li><span class="hatena-asin-detail-label">メディア:</span> 単行本(ソフトカバー)</li><li><a href="http://d.hatena.ne.jp/asin/4873118557/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>です。以前から<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC">プログラミング言語</a> Rust に興味を持っていました。読んでいる途中ですが、Rust を理解するには、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%BF%A1%BC%A5%D7%A5%EA%A5%BF">インタープリタ</a>や<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%D1%A5%A4%A5%E9">コンパイラ</a>がどのように作られているか理解している必要性を感じました。lifetime parameter のように言語の構造がむき出しになっている部分もあります。簡単な<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC">プログラミング言語</a> basic</p> <pre>basic version 1.0.0 <a href="http://kyoshiaki.sakura.ne.jp/osx/lion.html#bas100">http://kyoshiaki.sakura.ne.jp/osx/lion.html#bas100</a> </pre><p>を作成した経験や<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC">プログラミング言語</a>作成の書籍を読んだ知識が理解するのに役に立ちました。</p> KYoshiaki ニンテンドー 3DS プチコン3号 SmileBASIC 版 チェスプログラム YOS_CHESS [Chess Program] 公開 hatenablog://entry/10328749687216205651 2017-02-12T14:10:33+09:00 2019-02-17T19:11:37+09:00 以前、ブログを書いてから一年ぐらい経ちますが、色々取り組んでいました。ニンテンドー 3DS ダウンロードソフト 'プチコン3号' でコンピュータと対戦できるチェスプログラムを作ってみました。公開キー、実行画面、動画を載せておきます。 YOS_CHESS (YKChess) チェス コンピュータと対戦できるチェスプログラム。 公開キー W2E433R4 実行画面 動画 麗の小屋 - Phono Transceiver PetitModem - http://rei.to/petitmodem.html 上記 PetitModem Ver. 1.2.7 の使い方を解説した PDF ファイルと Ma… <p>以前、ブログを書いてから一年ぐらい経ちますが、色々取り組んでいました。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%F3%A5%C6%A5%F3%A5%C9%A1%BC">ニンテンドー</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/3DS">3DS</a> ダウンロードソフト '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>3号' でコンピュータと対戦できるチェ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%D7%A5%ED%A5%B0">スプログ</a>ラムを作ってみました。</p><p>公開キー、実行画面、動画を載せておきます。</p> <pre>YOS_CHESS (YKChess) チェス コンピュータと対戦できるチェ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%D7%A5%ED%A5%B0">スプログ</a>ラム。 公開キー W2E433R4 </pre><p>実行画面<br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20170212133936" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20170212/20170212133936.png" alt="f:id:KYoshiaki:20170212133936p:image" title="f:id:KYoshiaki:20170212133936p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>動画<br /> <iframe width="420" height="315" src="https://www.youtube.com/embed/b5rwUToDbjk?wmode=transparent" frameborder="0" allowfullscreen></iframe></p><br /> <p></p> <pre>麗の小屋 - Phono Transceiver PetitModem - <a href="http://rei.to/petitmodem.html">http://rei.to/petitmodem.html</a> </pre><p>上記 PetitModem Ver. 1.2.7 の使い方を解説した PDF ファイルと <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> 上の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%AD%A5%B9%A5%C8%A5%A8%A5%C7%A5%A3%A5%BF">テキストエディタ</a> CotEditor で<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>3号のソースをカラーリング化する定義ファイルなどをまとめた SmileBASIC.zip も公開します。</p> <pre>PetitModem Ver. 1.2.7 の使い方、SmileBASIC 用 CotEditor 定義ファイル [ SmileBASIC.zip ] <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/SmileBASIC.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/SmileBASIC.zip</a> </pre><p>上記 URL に含まれる PetitModem Ver. 1.2.7 の使い方を解説した PDF ファイルは、結構苦労して作成しました。良かったらぜひダウンロードして読んでみてください。</p><br /> <p>チェ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%D7%A5%ED%A5%B0">スプログ</a>ラム YOS_CHESS.PRG は、</p> <pre>Chess Engine In C - <a class="keyword" href="http://d.hatena.ne.jp/keyword/YouTube">YouTube</a> <a href="https://www.youtube.com/playlist?list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg">https://www.youtube.com/playlist?list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg</a> </pre> <pre>Vice (Video Instructional Chess Engine) Sources (ソース) <a href="http://bluefever.net/Downloads/ViceReadMe.html">http://bluefever.net/Downloads/ViceReadMe.html</a> </pre><p>上記 URL の <a class="keyword" href="http://d.hatena.ne.jp/keyword/YouTube">YouTube</a> のチェ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%D7%A5%ED%A5%B0">スプログ</a>ラミング講座とソースを参考に作成しました。</p> <pre><del>chessprogramming - home</del> <del><a href="https://chessprogramming.wikispaces.com/">https://chessprogramming.wikispaces.com/</a></del> Chessprogramming <a class="keyword" href="http://d.hatena.ne.jp/keyword/wiki">wiki</a> <a href="https://www.chessprogramming.org/Main_Page">https://www.chessprogramming.org/Main_Page</a> </pre><p>チェ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%D7%A5%ED%A5%B0">スプログ</a>ラミングの用語、変数名は、上記 URL の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Wiki">Wiki</a> で検索し、理解しました。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>3号の変数は</p> <pre>整数型…変数名末尾が % 32ビット符号あり データ型 # 倍精度実数型…変数名末尾が # (省略可能・デフォルト) 64ビット </pre><p>上記のように整数型とデータ型があります。64ビット整数型の変数が使えないので、局面を64ビットの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CF%A5%C3%A5%B7%A5%E5%C3%CD">ハッシュ値</a>で表すことができません。そのため、</p> <pre>three-fold repetition (同局面三反復、3レピティション) 同じ局面が3度現れるとドローを主張できる。 </pre><p>Threefold repetition には対応していません。</p><br /> <br /> <p>YOS_CHESS (YKChess) の強さは、Level 5 でも Xboard に一度も勝つことができませんでした。非常に弱いので、初心者向けです。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/macOS">macOS</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Sierra">Sierra</a> バージョン 10.12 付属のチェス (バージョン 3.13) で、2手先まで考えるように設定し、3回対戦しました。YOS_CHESS (level 5) の2勝1引き分けでした。</p><p>英語が苦手なのでメッセージの英語表記には、おかしな箇所があるかもしれません。</p><br /> <br /> <p>チェ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%D7%A5%ED%A5%B0">スプログ</a>ラムを作成してみて、以前より理解が深まったので</p> <pre>2005/06/15(Wed) <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%D0%A1%BC%A5%B7">リバーシ</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0">アルゴリズム</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/C%2B%2B">C++</a>&<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>対応—「探索<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0">アルゴリズム</a>」「評価関数」の設計と実装 - Seal Software ¥ 1,995 </pre><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4875934289/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51P83V533KL._SL160_.jpg" class="hatena-asin-detail-image" alt="リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS)" title="リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4875934289/yoshiakishome-22/">リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> Seal Software</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%B9%A9%B3%D8%BC%D2">工学社</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2003/06/01</li><li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li><li><span class="hatena-asin-detail-label">購入</span>: 5人 <span class="hatena-asin-detail-label">クリック</span>: 139回</li><li><a href="http://d.hatena.ne.jp/asin/4875934289/yoshiakishome-22" target="_blank">この商品を含むブログ (32件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p> <pre>2005/03/08(Tue) コンピュータ将棋の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0">アルゴリズム</a>—最強<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0">アルゴリズム</a>の探求とプログラミング - 池 泰弘 ¥1,995 </pre><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4777511103/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/619TDV80D9L._SL160_.jpg" class="hatena-asin-detail-image" alt="コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング (I・O BOOKS)" title="コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング (I・O BOOKS)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4777511103/yoshiakishome-22/">コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング (I・O BOOKS)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> 池泰弘</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%B9%A9%B3%D8%BC%D2">工学社</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2005/02</li><li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li><li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 6回</li><li><a href="http://d.hatena.ne.jp/asin/4777511103/yoshiakishome-22" target="_blank">この商品を含むブログ (13件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div> </p><p>以前購入した上記2冊を読み返してみようと思いました。ただし、書籍「コンピュータ将棋の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0">アルゴリズム</a>」は紛失してしまいました。</p><p>ところが最近、最新刊が</p> <pre>2016/09/07(Wed) <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>将棋の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0">アルゴリズム</a>―<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0">アルゴリズム</a>の強化手法を探る (I・O BOOKS) 池 泰弘 ¥ 2,484 </pre><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4777519651/yoshiakishome-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51h-7XOl84L._SL160_.jpg" class="hatena-asin-detail-image" alt="Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS)" title="Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4777519651/yoshiakishome-22/">Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> 池泰弘</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%B9%A9%B3%D8%BC%D2">工学社</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2016/08</li><li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li><li><a href="http://d.hatena.ne.jp/asin/4777519651/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>発売されていました。上記、書籍とソースを参考に理解を深めています。</p><p>最後に YOS_CHESS (YKChess) の取扱説明書 README_JA.PRG の内容を添付しておきます。</p><p>===== README_JA.PRG ===== </p> <pre class="code" data-lang="" data-unlink>&#39; &#39; YKChess (YOS_CHESS.PRG) &#39; Version 1.0 Programmed by KYoshiaki &#39; &#39;【概要】 &#39; &#39; YouTube のチェスプログラミング講座とソースを参考に、プチコン3号で &#39; コンピュータと対戦できるチェスプログラムを作ってみました。思考ルーチンは、 &#39; 単純なアルファ・ベータ法を使用しています。非常に弱いので、チェスを始めてみたい &#39; 人向けです。 &#39; &#39;【説明】 &#39; &#39; YKChess には、3つのモード &#39; &#39; ・プレイモード &#39; ・プレイヤーのタイプ、レベル選択モード &#39; ・棋譜再生モード &#39; &#39; があります。 &#39; &#39; YOS_CHESS.PRG を実行すると `プレイモード´ に入ります。 &#39; &#39; New ボタンをタッチすると `プレイヤーのタイプ、レベル選択モード´、 &#39; Play ボタンをタッチすると `プレイモード´、 &#39; `プレイモード´ でゲームが終了するか、Resign ボタンをタッチすると &#39; `棋譜再生モード´ に入ります。 &#39; &#39;■ プレイモード &#39; 駒を動かして、ゲームをプレイできます。 &#39; &#39; 駒の移動は、駒をタッチして選択し、次に移動したいマス目をタッチしてください。 &#39; Assistant ラジオボタンがオンなら、選択した駒の移動可能なマス目が緑色で &#39; 表示されます。 &#39; Assistant ラジオボタンをタッチしてオフにすると、移動可能なマス目は表示 &#39; されません。 &#39; &#39;■ プレイヤーのタイプ、レベル選択モード &#39; New ボタンをタッチするとプレイヤーのタイプ、レベル選択モードに入ります。 &#39; &#39; White(白), Black(黒) それぞれのプレイヤーの Type (タイプ)、 &#39; Level (レベル) をポップアップメニューをタッチして選択できます。 &#39; &#39; Type は、2種類あります。 &#39; &#39; You: あなた &#39; Machine: コンピュータ &#39; &#39; Level (レベル)は 1 から 5 まで選択できます。YKChess では &#39; レベル 5 が最強です。 &#39; &#39; コンピュータ同士の対戦を終了したい場合は、START ボタンを押して強制終了 &#39; してください。 &#39; &#39; Eval は、思考ルーチンの情報を表示します。 &#39; &#39; Material: &#39; 駒ごとに割り当てた点数の合計で評価する関数を使用します。 &#39; &#39; Table: &#39; 駒の点数と盤上の位置に割り当てた点数の合計で評価する関数を使用します。 &#39; &#39; Depth: &#39; 先読み数(半手)。 &#39; チェスの1手先読みが、Depth 2 になります。 &#39; &#39; Level: 2 &#39; Eval: &#39; Material &#39; Depth: 2 &#39; &#39; この場合、思考ルーチンは、1手先読みのアルファ・ベータ法で、評価関数は &#39; Material 使用しています。 &#39; &#39;■ 棋譜再生モード。 &#39; &#39; |&lt; &#39; 棋譜の最初に移動。 &#39; &lt; &#39; 半手戻す。 &#39; &gt; &#39; 半手進める。 &#39; &gt;| &#39; 棋譜の最後に移動。 &#39; &#39;【ボタンの解説】 &#39; &#39; New &#39; 新規のゲーム &#39; &#39; Play &#39; ゲームの開始 &#39; &#39; Undo &#39; 1手戻す &#39; &#39; Flip &#39; チェス盤の反転 &#39; &#39; Resign &#39; リザイン &#39; 投了 &#39; &#39; Quit &#39; プログラムの終了。 &#39; &#39; 【情報】 &#39; Ply: half-move &#39; 半手数。 &#39; 白と黒のどちらか半手動くと Ply が 1 増えます。 &#39; &#39; チェスの1手は、Ply では 2 になります。チェスでは、白、黒、両方動いて &#39; 1手になります。 &#39; &#39; &#39; DIALOG &#39; 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 &#34;取扱説明書は README_JA.PRG に記載されています。&#34; DATA &#34;作業用プロジェクトを YOS_CHESS に変更し、&#39;SmileBASICでプログラムを作る&#39; から&#34; DATA &#34;ファイル README_JA.PRG を読み込んで閲覧してください。&#34;</pre> KYoshiaki Parallels Desktop 11 for Mac の Ubuntu 15.10 上で Swift をビルド、example のコンパイル、GitHub にある Apple のリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプト集を紹介。 hatenablog://entry/6653586347154336729 2016-01-24T12:56:41+09:00 2016-03-09T20:25:25+09:00 以前の書き込みから随分経ってしまいました。新年を跨ぎましたが、今年も宜しくお願いします。 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 を使った ex… <p>以前の書き込みから随分経ってしまいました。新年を跨ぎましたが、今年も宜しくお願いします。<br /> <br /> </p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a>.org - Welcome to <a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a>.org <a href="https://swift.org/">https://swift.org/</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> が<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AA%A1%BC%A5%D7%A5%F3%A5%BD%A1%BC%A5%B9">オープンソース</a>として公開されてから、2ヶ月程経ちました。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%D1%A5%A4%A5%E9">コンパイラ</a>の仕組みについては、以前から興味があったのでビルドに挑戦してみました。ただし、<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 側の環境を汚したくないので、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Parallels%20Desktop">Parallels Desktop</a> 11 for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の仮想環境で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 をインストールして <a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> をビルドしてみました。<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>-package-manager を使った example の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB">コンパイル</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> にある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>を全てダウンロードする<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>とコマンド git の補助<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>集を紹介したいと思います。</p><br /> <p>最初に自作<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を下記URL で公開しておきます。詳細は、アーカイブに含まれる ReadMe.rtfd ファイルとブログの後半を参考にしてください。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> にある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>を全てダウンロードする自作<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>とコマンド git の補助<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>集。 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Apple.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Apple.zip</a> </pre><p><br /> ◆ <a class="keyword" href="http://d.hatena.ne.jp/keyword/Parallels%20Desktop">Parallels Desktop</a> 11 for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 の仮想環境を作成。</p><p>まず、最初に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux">Linux</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%B9%A5%C8%A5%EA%A5%D3%A5%E5%A1%BC%A5%B7%A5%E7%A5%F3">ディストリビューション</a>の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 をダウンロードする必要があります。</p> <pre>The leading OS for PC, <a class="keyword" href="http://d.hatena.ne.jp/keyword/tablet">tablet</a>, phone and cloud | <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> <a href="http://www.ubuntu.com/">http://www.ubuntu.com/</a> </pre> <pre>Download <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> Desktop | Download | <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> <a href="http://www.ubuntu.com/download/desktop">http://www.ubuntu.com/download/desktop</a> </pre><p>上記 URL から (ここでは、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%D1%B8%EC%C8%C7">英語版</a>での解説になります。)</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 64-bit </pre><p>‘ダウンロード’ ボタンをクリックして、ファイル <a class="keyword" href="http://d.hatena.ne.jp/keyword/ubuntu">ubuntu</a>-15.10-desktop-<a class="keyword" href="http://d.hatena.ne.jp/keyword/amd64">amd64</a>.iso をダウンロードしてください。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Parallels%20Desktop">Parallels Desktop</a> 11 for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> を起動し、メニュー/ファイル/新規… を選び、イメージファイルとして <a class="keyword" href="http://d.hatena.ne.jp/keyword/ubuntu">ubuntu</a>-15.10-desktop-<a class="keyword" href="http://d.hatena.ne.jp/keyword/amd64">amd64</a>.iso を選択してインストールしてください。</p><p>インストールに成功したら、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 を Software Updater で最新の状態にしてください。</p><br /> <p>◆ <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 上で <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> コマンドを実行できる環境を作成。</p><p>次に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 上で <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> コマンドを実行できる環境を作成します。詳しい解説は、</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a>.org - Download <a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> <a href="https://swift.org/download/">https://swift.org/download/</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux">Linux</a> <a href="https://swift.org/download/#linux">https://swift.org/download/#linux</a> </pre><p>を参照してください。上記 URL の</p> <pre>Latest Development Snapshots Linux <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> 2.2 Snapshot (Signature) January 11, 2016 </pre><p>から <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> 2.2 Snapshot のリンクを <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 上の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Firefox">Firefox</a> などのウェブブラウザでクリックして、ファイル <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz をダウンロードしてください。さらに (Signature) のリンクをクリックして <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig ファイルもダウンロードしてください。Signature ファイルはダウンロードしたファイルが改変されていないか検証するために使います。</p><p>(最新の Snapshot をダウンロードしてください。2016/01/17(Sun) 現在、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> 2.2 Snapshot (Signature) January 11, 2016 が最新です。)</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 上で Terminal を起動し、</p> <pre class="code" data-lang="" data-unlink>~ $ sudo apt-get install clang libicu-dev ~ $ </pre><p>で必要なパッケージをインストールします。</p> <pre class="code" data-lang="" data-unlink>~ $ wget -q -O - https://swift.org/keys/all-keys.asc | gpg --import -</pre><p>上記コマンドで公開鍵をインポートします。これは、1回だけ実行すれば良いようです。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig </pre><p>先ほどダウンロードした上記2つのファイルをデスクトップに移動します。</p> <pre class="code" data-lang="" data-unlink>~/Desktop $ gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift</pre><p>上のコマンドを実行した後、</p> <pre class="code" data-lang="" data-unlink>~/Desktop $ gpg --verify swift-&lt;VERSION&gt;-&lt;PLATFORM&gt;.tar.gz.sig</pre><p>ダウンロードしたアーカイブが改変されていないか上記コマンドで検証します。ここでは、</p> <pre class="code" data-lang="" data-unlink>~/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&#39; gpg: Signature made Tue 12 Jan 2016 10:02:41 AM JST using RSA key ID xxxxxxxx gpg: Good signature from &#34;Swift Automatic Signing Key #1 &lt;swift-infrastructure@swift.org&gt;&#34; gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. ~/Desktop $ </pre><p>上記コマンド gpg --verify <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig になります。gpg: Good signature と表示されれば良いようです。ただし、警告が表示されています。どこか間違っているのかもしれません。<br /> <br /> </p> <pre class="code" data-lang="" data-unlink>~/Desktop $ tar xzf swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz</pre><p>コマンド tar を使って上記のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz を展開します。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> コマンドのパスを<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B4%C4%B6%AD%CA%D1%BF%F4">環境変数</a> PATH に設定します。ホームディレクトリの .profile ファイルは、.bashrc ファイルを読み込んでいます。.bashrc ファイルの最後に</p> <pre class="code" data-lang="" data-unlink>export PATH=$HOME/Desktop/swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10/usr/bin:&#34;${PATH}&#34;</pre><p>を <a class="keyword" href="http://d.hatena.ne.jp/keyword/emacs">emacs</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a>、vi などのエディタを使って追加します。Terminal を再起動し、</p> <pre class="code" data-lang="" data-unlink>~ $ swift --version Swift version 2.2-dev (LLVM 3ebdbb2c7e, Clang f66c5bb67b, Swift 42591f7cba) Target: x86_64-unknown-linux-gnu ~ $</pre><p>上記のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> コマンドで実行できるか確認できます。</p><br /> <p>◆ <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>-package-manager を使った example の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB">コンパイル</a>。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/apple/">https://github.com/apple/</a> </pre> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> - <a class="keyword" href="http://d.hatena.ne.jp/keyword/apple">apple</a>/example-package-dealer: Example package for use with the <a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> Package Manager <a href="https://github.com/apple/example-package-dealer">https://github.com/apple/example-package-dealer</a> </pre><p>上記の example の大元は example-package-dealer です。依存関係はパッケージマネージャーが面倒を見てくれます。</p> <pre class="code" data-lang="" data-unlink>~/Desktop $ git clone https://github.com/apple/example-package-dealer.git Cloning into &#39;example-package-dealer&#39;... 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.</pre><p>上記のように git clone コマンドで example-package-dealer <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>をダウンロードし、</p> <pre class="code" data-lang="" data-unlink>~/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 &#39;FisherYates&#39; (1 sources) Linking Library: .build/debug/FisherYates.a Compiling Swift Module &#39;PlayingCard&#39; (3 sources) Linking Library: .build/debug/PlayingCard.a Compiling Swift Module &#39;DeckOfPlayingCards&#39; (1 sources) Linking Library: .build/debug/DeckOfPlayingCards.a Compiling Swift Module &#39;Dealer&#39; (1 sources) Linking Executable: .build/debug/Dealer ~/Desktop/example-package-dealer $ </pre><p>example-package-dealer ディレクトリに移動した後、 上記のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> build コマンドを実行します。 </p><p>実行ファイルは .build/debug に作成されます。</p> <pre class="code" data-lang="" data-unlink>~/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 $ </pre><p>上記が実行結果です。</p><br /> <p>◆ <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 上で <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> コマンドをビルドする。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 15.10 上で Terminal を起動し、</p> <pre class="code" data-lang="" data-unlink>~ $ 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</pre><p>を実行してください。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/apple/">https://github.com/apple/</a> </pre> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> - <a class="keyword" href="http://d.hatena.ne.jp/keyword/apple">apple</a>/<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>: The <a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> Programming Language <a href="https://github.com/apple/swift">https://github.com/apple/swift</a> </pre><p>から <a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>を Ubuntu15.10 デスクトップ上の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> という名前のフォルダに</p> <pre class="code" data-lang="" data-unlink>~ $ cd Desktop/ ~/Desktop $ mkdir Apple ~/Desktop $ cd Apple/ ~/Desktop/Apple $ git clone https://github.com/apple/swift.git Cloning into &#39;swift&#39;... 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 $</pre><p>上記コマンド git clone <a href="https://github.com/apple/swift.git">https://github.com/apple/swift.git</a> を使ってダウンロードします。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Swift">Swift</a> のビルドの仕方の詳細は、</p> <pre>~/Desktop/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a>/<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>/README.md </pre><p>に書いてあります。(後で、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> 上の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>を全てダウンロードする<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を紹介します。<del>その<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 上で実行し、Finder 上で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a>/<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a>/README.md ファイルをダブルクリックすると <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で Markdown 形式のファイルを見ることができます。</del>)</p><p><span style="color: #ff0000">追記) 2016/03/09(Wed)</span><br /> Markdown 記法ファイルの表示、編集には下記 URL の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Atom">Atom</a> エディタを使うのが一番簡単です。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Atom">Atom</a> <a href="https://atom.io/">https://atom.io/</a> </pre><p>Markdown の表示は、Markdown ファイルを開き、</p> <pre>ショートカットキー: ctrl-shift-M コマンド: Markdown Preview:Toggle </pre><p>で表示できます。</p><p>Split Pane だと扱いにくいので<br /> Settings/Packages の Package: markdown-preview をクリックして、設定画面を表示し、Open Preview In Split Pane のチェックを外してください。別 Pane に表示されるようになります。</p> <pre class="code" data-lang="" data-unlink>~/Desktop/Apple $ cd swift ~/Desktop/Apple/swift $ ./utils/update-checkout --clone --- Cloning &#39;cmark&#39; --- --- Cloning &#39;lldb&#39; --- --- Cloning &#39;llvm&#39; --- --- Cloning &#39;swift-corelibs-xctest&#39; --- --- Cloning &#39;swift-integration-tests&#39; --- --- Cloning &#39;swiftpm&#39; --- --- Cloning &#39;swift-corelibs-foundation&#39; --- --- Cloning &#39;clang&#39; --- --- Cloning &#39;llbuild&#39; --- ~/Desktop/Apple/swift $ </pre><p>上記コマンド ./utils/update-checkout --clone を使って必要なパッケージをダウンロードします。(<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> フォルダではなく、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> フォルダに保存されので注意してください。)</p><p>最後に ./utils/build-scrip <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を実行して <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> コマンドをビルドします。引数 -R を指定しない限り debug モードでビルドされます。引数 -R の場合 release モードになります。引数 -t は Ninja による基本的なテストを行います。</p><p>詳しい解説は</p> <pre class="code" data-lang="" data-unlink>~/Desktop/Apple/swift $ ./utils/build-script -h</pre><p>を参照してください。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B4%C4%B6%AD%CA%D1%BF%F4">環境変数</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/SWIFT">SWIFT</a>_SOURCE_ROOT(ソースの位置)、<a class="keyword" href="http://d.hatena.ne.jp/keyword/SWIFT">SWIFT</a>_BUILD_ROOT(<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> が作成される位置) を設定できます。設定されていない場合、推論されます。</p><p>実際に ./utils/build-script -t でビルドすると</p> <pre class="code" data-lang="" data-unlink>~/Desktop/Apple/swift $ ./utils/build-script -t . . libLLVMSupport.a -lrt -ldl -ltinfo -lpthread -lm -Wl,-rpath,&#34;\$ORIGIN/../lib&#34; &amp;&amp; : 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 $ </pre><p>上記エラーによりビルドに失敗します。メモリが足りないと表示されるようです。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20160124125321" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20160124/20160124125321.png" alt="f:id:KYoshiaki:20160124125321p:image" title="f:id:KYoshiaki:20160124125321p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 1) 構成…/ハードウェア/CPU および メモリ</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Parallels%20Desktop">Parallels Desktop</a> 上で、メニュー/処理/構成… を選び 、’ハードウェア’ タブを選択し、上図のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 側のメモリを 8192MB に変更します。</p><p>また、メモリを節約する意味で、引数 -j 1 を指定して、ビルドプロセスを1つにします。最終的に</p> <pre class="code" data-lang="" data-unlink>~/Desktop/Apple/swift $ time ./utils/build-script -j 1 -t</pre><p>上のコマンドを実行します。(time コマンドはビルド時間を計測してくれます。)</p><br /> <p>私の <a class="keyword" href="http://d.hatena.ne.jp/keyword/MacBook%20Pro">MacBook Pro</a> の動作環境は</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> El Capitan バージョン 10.11.3 MacBook Pro (<a class="keyword" href="http://d.hatena.ne.jp/keyword/Retina">Retina</a>, 15-inch, Late 2013) プロセッサ 2.3GHz <a class="keyword" href="http://d.hatena.ne.jp/keyword/Intel">Intel</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Core%20i7">Core i7</a> メモリ 16GB 1600 MHz DDR3 グラフィクス <a class="keyword" href="http://d.hatena.ne.jp/keyword/Intel">Intel</a> Iris Pro 1536 MB NVIDIA <a class="keyword" href="http://d.hatena.ne.jp/keyword/GeForce">GeForce</a> GT 750M <a class="keyword" href="http://d.hatena.ne.jp/keyword/Parallels%20Desktop">Parallels Desktop</a> 11 for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> バージョン 11.1.2 (32408) </pre><pre class="code" data-lang="" data-unlink>~/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 $ </pre><p>です。上記のように time コマンドで確認するとビルドに1時間40分ほどかかりました。</p><p>ビルドした <a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> コマンドの位置は、</p> <pre class="code" data-lang="" data-unlink>~/Desktop/Apple/build/Ninja-DebugAssert/swift-linux-x86_64/bin/swift</pre><p>にあります。</p><br /> <p>最後に<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 上で使用する自作<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を紹介したいと思います。</p><br /> <p>◆ <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> にある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>を全てダウンロードする自作<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>とコマンド git の補助<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>集。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> にある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>を全てダウンロードする自作<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>とコマンド git の補助<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>集 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Apple.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Apple.zip</a> </pre><p>上記 URL で <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> にある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>を全てダウンロードする自作<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>とコマンド git の補助<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>集を公開します。</p><p>ダウンロードした <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a>.zip をデスクトップに移動し、Finder 上でダブルクリックして展開します。コマンド install.sh を</p> <pre class="code" data-lang="" data-unlink>~/Desktop/Apple $ ./install.sh Cloning into &#39;swift&#39;... Cloning into &#39;swift-package-manager&#39;... . . ~/Desktop/Apple $ </pre><p>上記のように実行すると、<a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> にある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>を全てダウンロードします。すべての<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>を最新の状態にアップデートしたい場合は update.sh を使用します。</p> <pre class="code" data-lang="" data-unlink>~/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</pre><p>上記のように log.rb を実行すると<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>一覧を表示し、番号を入力することで選択した<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>のコミットログを表示することができます。次ページを見るには、スペースキーを押してください。カーソル上下キーでもスクロールできます。終了するには、q キーを押してください。その他の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a>/Dcuments フォルダの ReadMe.rtfd を参照してください。</p> KYoshiaki IchigoJam に必要な物と起動方法、LPC1114 DIP28 データシート入手方法、USB-シリアルモジュールの入手方法と Mac でのキーボード入力、Xcode で IchigoJamSerialConsole をビルドする方法、IchigoJamSerialConsole と ORSSerialPort のソースを少し解析。 hatenablog://entry/8454420450105680086 2015-08-15T15:06:09+09:00 2016-02-03T12:54:08+09:00 前回予告した IchigoJam について書きたいと思います。まず最初に、IchigoJam を入手する必要があります。 こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円) http://ichigojam.net/ 本家サイト上記URLを開き、少しスクロールすると 'IchigoJam 入手方法’ というタイトル項目が見つかります。 プリント基板キット版、プリント基板完成版、Get Started Set の取り扱い店が表示されています。私はプリント基板完成版 IchigoJam が欲しかったので、共立エレショップのリンクをクリックして購入しました。 【共… <p>前回予告した IchigoJam について書きたいと思います。</p><p>まず最初に、IchigoJam を入手する必要があります。</p> <pre>こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円) <a href="http://ichigojam.net/">http://ichigojam.net/</a> </pre><p>本家サイト上記URLを開き、少しスクロールすると 'IchigoJam 入手方法’ というタイトル項目が見つかります。<br /> プリント基板キット版、プリント基板完成版、Get Started Set の取り扱い店が表示されています。私はプリント基板完成版 IchigoJam が欲しかったので、共立エレショップのリンクをクリックして購入しました。</p> <pre>【共立エレショップ】>> こどもパソコンIchigoJam 組み立て済完成品: 【開発・計測・<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB">ツール</a>】 << 電子部品,<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C8%BE%C6%B3%C2%CE">半導体</a>,キットの通販 <a href="http://eleshop.jp/shop/g/gF3K313/">http://eleshop.jp/shop/g/gF3K313/</a> </pre><p>上記 URL ページ左上の検索フィールドを ichigojam で検索すれば、多数の IchigoJam キットが表示されます。その中でも、</p> <pre>【共立エレショップ】>> IchigoJam電子工作パーツセット 32個のプログラムを保存!EEPROMカセット: 【開発・計測・<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB">ツール</a>】 << 電子部品,<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C8%BE%C6%B3%C2%CE">半導体</a>,キットの通販 <a href="http://eleshop.jp/shop/g/gF5U411/">http://eleshop.jp/shop/g/gF5U411/</a> </pre><p>は、お勧めです。私は上のキットが販売されているのを知らず、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%B7%EE%C5%C5%BB%D2%C4%CC%BE%A6">秋月電子通商</a>でそれぞれ必要な部品を注文しました。</p> <pre>IchigoJam - ショップのふうせん <a href="http://shopfusen.jimdo.com/ichigojam/">http://shopfusen.jimdo.com/ichigojam/</a> </pre><p>でも、購入できます。こちらは値段が高いですが、モジュールになっているので便利です。</p> <pre>【共立エレショップ】eleshop.jp:電子部品,<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C8%BE%C6%B3%C2%CE">半導体</a>,キットの通販 <a href="http://eleshop.jp/shop/default.aspx">http://eleshop.jp/shop/default.aspx</a> </pre><p>私が、共立エレショップで購入したものは</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%C5%C5%BB%D2">共立電子</a>の店 エレショップ こどもパソコンIchigoJam 組み立て済完成品 IchigoJam-G _ ¥2,000 microUSBケーブル 1m■ジャンク■ IG-13004-DJK _ ¥150 ビデオケーブル 1.5m[R指] VD-015 _ ¥282 商品金額合計 ¥2,432 送料 ¥480 注文金額合計 ¥2,912 </pre><p>です。</p><p> IchigoJam について、下記 URL の本家サイト、ブログ、IchigoJam 情報サイト</p> <pre>こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円) <a href="http://ichigojam.net/">http://ichigojam.net/</a> #IchigoJam / 福野泰介の一日一創 <a href="http://fukuno.jig.jp/IchigoJam">http://fukuno.jig.jp/IchigoJam</a> こどもパソコン IchigoJam 情報サイト - イチゴジャム レシピ <a href="http://15jamrecipe.jimdo.com/">http://15jamrecipe.jimdo.com/</a> </pre><p>のリンクを辿れば、必要な情報は入手できると思います。私が公開している <a class="keyword" href="http://d.hatena.ne.jp/keyword/RSS">RSS</a> リーダー iYKRSS、iYKRSSHD も</p> <pre> #IchigoJam / 福野泰介の一日一創 <a href="http://fukuno.jig.jp/IchigoJam">http://fukuno.jig.jp/IchigoJam</a> </pre> <pre>iYKRSS カテゴリ/ニュース 無料 <a href="http://appstore.com/yoshiakikoyama/iykrss">http://appstore.com/yoshiakikoyama/iykrss</a> iYKRSSHD カテゴリ/ニュース ¥120 <a href="http://appstore.com/yoshiakikoyama/iykrsshd">http://appstore.com/yoshiakikoyama/iykrsshd</a> </pre><p>福野泰介さんのブログ <a class="keyword" href="http://d.hatena.ne.jp/keyword/RSS">RSS</a> を読めるように対応しました。</p> <pre>こどもパソコンIchigoJam「たいけんセット」 5ステップでプログラミングスタート! #opendata #shizuoka / 福野泰介の一日一創 <a href="http://fukuno.jig.jp/998">http://fukuno.jig.jp/998</a> </pre><p>上記URLに最初にすべきことが記載されています。</p><br /> <p>IchigoJam を起動した手順を紹介したいと思います。</p> <pre>必要な物 - イチゴジャム レシピ <a href="http://15jamrecipe.jimdo.com/%E5%BF%85%E8%A6%81%E3%81%AA%E7%89%A9/">http://15jamrecipe.jimdo.com/%E5%BF%85%E8%A6%81%E3%81%AA%E7%89%A9/</a> </pre><p>必要な物は上記 URL が参考になります。簡単に紹介すると</p> <pre>IchigoJam microUSBケーブル USB 電源アダプタ ビデオケーブル <a class="keyword" href="http://d.hatena.ne.jp/keyword/PS/2">PS/2</a>キーボード テレビ </pre><p>です。</p><p>USB 電源アダプタは、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPod%20touch">iPod touch</a> 用の USB 電源アダプタで問題ないようです。ビデオケーブルは、赤、黄、白に色分けされたケーブルです。使用するのは、映像の黄色だけです。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%C5%C5%BB%D2">共立電子</a>で私が買ったビデオケーブル のように、黄色だけのものもあります。</p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005LL9J1E/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/41Q-7U09ecL._SL160_.jpg" class="hatena-asin-detail-image" alt="サンワサプライ PS/2キーボード SKB-L1BK" title="サンワサプライ PS/2キーボード SKB-L1BK"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B005LL9J1E/yoshiakishome-22/">サンワサプライ PS/2キーボード SKB-L1BK</a></p><ul><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B5%A5%F3%A5%EF%A5%B5%A5%D7%A5%E9%A5%A4">サンワサプライ</a></li><li><span class="hatena-asin-detail-label">メディア:</span> Personal Computers</li><li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li><li><a href="http://d.hatena.ne.jp/asin/B005LL9J1E/yoshiakishome-22" target="_blank">この商品を含むブログ (1件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B5%A5%F3%A5%EF%A5%B5%A5%D7%A5%E9%A5%A4">サンワサプライ</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/PS/2">PS/2</a>キーボード SKB-L1BK ¥ 684 </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/PS/2">PS/2</a> キーボードは、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon">Amazon</a> などで売られています。また、USB キーボードを所有していれば <a class="keyword" href="http://d.hatena.ne.jp/keyword/PS/2">PS/2</a>-USB変換ケーブルを利用することもできます。</p><p>テレビですが、アナログ端子(<a class="keyword" href="http://d.hatena.ne.jp/keyword/RCA">RCA</a>端子、赤、白、黄色の3つの端子) に対応しているものだと問題なく利用できます。私は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/SHARP">SHARP</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/AQUOS">AQUOS</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%D5%BE%BD%A5%C6%A5%EC%A5%D3">液晶テレビ</a> 19型 ブラック LC-19K90-B を使用しました。</p> <pre>こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円) <a href="http://ichigojam.net/">http://ichigojam.net/</a> </pre><p>小さい画面が好みの人は、上記本家サイトの</p> <pre>オススメ周辺機器 テレビ </pre><p>で紹介されている</p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0079RJ4AE/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/41Ga8M4W-ML._SL160_.jpg" class="hatena-asin-detail-image" alt="【ノーブランド品】2系統の映像入力 12V車用 ミニオンダッシュ液晶モニター 4.3インチ バック切替可能" title="【ノーブランド品】2系統の映像入力 12V車用 ミニオンダッシュ液晶モニター 4.3インチ バック切替可能"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0079RJ4AE/yoshiakishome-22/">【ノーブランド品】2系統の映像入力 12V車用 ミニオンダッシュ液晶モニター 4.3インチ バック切替可能</a></p><ul><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> ノーブランド</li><li><span class="hatena-asin-detail-label">メディア:</span> エレクトロニクス</li><li><a href="http://d.hatena.ne.jp/asin/B0079RJ4AE/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon.co.jp">Amazon.co.jp</a>: 【ノーブランド品】2系統の映像入力 12V車用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DF%A5%CB%A5%AA%A5%F3">ミニオン</a>ダッシュ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%D5%BE%BD%A5%E2%A5%CB%A5%BF%A1%BC">液晶モニター</a> 4.3インチ バック切替可能: 家電・カメラ <a href="http://www.amazon.co.jp/dp/B0079RJ4AE/">http://www.amazon.co.jp/dp/B0079RJ4AE/</a> </pre><p>車載モニタがお勧めです。</p><br /> <p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133110" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133110.png" alt="f:id:KYoshiaki:20150815133110p:image" title="f:id:KYoshiaki:20150815133110p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 1) IchigoJam</p><p>上図が接続して電源を切った状態です。</p> <pre>プラスチックナット+連結(6角<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%E7%A5%A4%A5%F3%A5%C8">ジョイント</a>)スペーサー(10mm)セット: 電子工作便利商品 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%B7%EE%C5%C5%BB%D2%C4%CC%BE%A6">秋月電子通商</a> 電子部品 ネット通販 <a href="http://akizukidenshi.com/catalog/g/gP-01864/">http://akizukidenshi.com/catalog/g/gP-01864/</a> </pre><p>ただし、IchigoJam にスペーサーを取り付けてあります。</p><p>上図 1) のようにスイッチが2つあります。赤枠のスイッチ(SW1)が電源スイッチです。青枠のスイッチ(SW2、タクトスイッチ[ボタン]) は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> 命令で押したかどうかを判定できます。</p><p>赤枠の電源スイッチSW1を入れても、基板の赤色<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%A4%A5%AA%A1%BC%A5%C9">ダイオード</a>が点灯するわけではありません。赤色<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%A4%A5%AA%A1%BC%A5%C9">ダイオード</a>も <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> の命令で操作できます。テレビに</p> <pre>IchigoJam <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> 1.0.1 by <a class="keyword" href="http://d.hatena.ne.jp/keyword/jig">jig</a>.jp OK </pre><p>と表示されれば起動に成功です。IchigoJam のバージョンによって表示される文字列は違います。</p><br /> <p>IchigoJam で使用されている<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%B3%A5%F3">マイコン</a>は</p> <pre>IchigoJam組み立てキットで自分だけのパソコンづくり(上級編) #IchigoJam #maker / 福野泰介の一日一創 <a href="http://fukuno.jig.jp/671">http://fukuno.jig.jp/671</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%B3%A5%F3">マイコン</a>LPC1114の外部クリスタルの自動判別方法 #lpc1114 #IchigoJam #maker / 福野泰介の一日一創 <a href="http://fukuno.jig.jp/1097">http://fukuno.jig.jp/1097</a> </pre><p>上記回路図より LPC1114 DIP28 です。</p><p>データシートは</p> <pre>LPCZone:NXP LPC<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%B3%A5%F3">マイコン</a>情報・・LPC<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%B3%A5%F3">マイコン</a>・ラインナップ <a href="http://www.nxp-lpc.com/lpc_micon/">http://www.nxp-lpc.com/lpc_micon/</a> </pre><p>上記 URL よりダウンロードできます。回路図 Vdd = 3.3V より、LPC1100LV シリーズではなく LPC1100(X)L シリーズです。ハードウェアに関しては詳しくないので、間違っている可能性もあります。</p> <pre>LPC<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%B3%A5%F3">マイコン</a>情報:LPC1100 (X)L Cortex-M0搭載-低消費電力,CSP,<a class="keyword" href="http://d.hatena.ne.jp/keyword/DIP">DIP</a>,LPC1125,LPC1124,LPC1102,LPC1104,LPC1111,LPC1112,LPC1113,LPC1114,LPC1115, LPC1114FN28 <a href="http://www.nxp-lpc.com/lpc_micon/cortex-m0/lpc1100xl/">http://www.nxp-lpc.com/lpc_micon/cortex-m0/lpc1100xl/</a> </pre> <pre>特徴 詳細はデータシート [ <a href="http://jp.nxp.com/documents/data_sheet/LPC111X.pdf">http://jp.nxp.com/documents/data_sheet/LPC111X.pdf</a> ] でご確認ください。 </pre><p>の文字 'データシート' のリンク、または</p> <pre>ドキュメント/技術情報 LPC111x(X)Lデータシート(PDF) [LPC1100] [ <a href="http://jp.nxp.com/documents/data_sheet/LPC111X.pdf">http://jp.nxp.com/documents/data_sheet/LPC111X.pdf</a> ] LPC1115, LPC1114, LPC1113, LPC1112, LPC1111, LPC1110。 LPC1114FN28/102も。 </pre><p>'LPC111x(X)Lデータシート(PDF) ' のリンク</p> <pre>データシート <a href="http://jp.nxp.com/documents/data_sheet/LPC111X.pdf">http://jp.nxp.com/documents/data_sheet/LPC111X.pdf</a> </pre><p> <br /> をクリックすると PDF ファイルがダウンロードできます。目的のLPC<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%B3%A5%F3">マイコン</a>[ LPC1114FN28/102 ] データシートは</p> <pre>11ページ 6. Pinning information Table 3. Pin description overview Part Pin description table Pinning diagram LPC1114FN28/102 Table 7 Figure 13 </pre> <pre>26ページ Table 7. LPC1100L series: LPC1112/14 pin description table (TSSOP28 and DIP28 packages) </pre> <pre>18ページ Fig 13. LPC1100L series pin configuration DIP28 package </pre><p>上記ページが参考になります。<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> のアプリ 'プレビュー' で必要なページだけ抜き出して PDF 化すると便利です。メモリーマップは</p> <pre>46ページ Fig 14. LPC1100 and LPC1100L series memory map </pre><p>と IchigoJam 独自のメモリマップは</p> <pre>IchigoJamのメモリマップと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%E9%BB%BB%BB%D2">演算子</a>優先順位 #IchigoJam / 福野泰介の一日一創 <a href="http://fukuno.jig.jp/984">http://fukuno.jig.jp/984</a> </pre><p>で確認できます。</p><p>また、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C5%FD%B9%E7%B3%AB%C8%AF%B4%C4%B6%AD">統合開発環境</a>(<a class="keyword" href="http://d.hatena.ne.jp/keyword/IDE">IDE</a>) LPCXpresso のフリー版は</p> <pre>Welcome NXP LPCXpresso Users! | www.LPCware.com <a href="https://www.lpcware.com/lpcxpresso">https://www.lpcware.com/lpcxpresso</a> Download LPCXpresso installers and the getting started guide LPCXpresso <a class="keyword" href="http://d.hatena.ne.jp/keyword/IDE">IDE</a> Downloads | www.LPCware.com <a href="https://www.lpcware.com/lpcxpresso/download">https://www.lpcware.com/lpcxpresso/download</a> </pre><p>からダウンロードできます。</p><br /> <p>次に <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Yosemite">Yosemite</a> 10.10.5 上で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のキーボードを IchigoJam のキーボードとして使用する方法を紹介したいと思います。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のキーボードを IchigoJam のキーボードとして利用するには、USB-シリアルモジュールを用意する必要があります。また、USB-シリアルモジュールは <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> で IchigoJam の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%A1%A1%BC%A5%E0%A5%A6%A5%A7%A5%A2">ファームウェア</a>を更新するのにも利用できます。</p><p>私が試したのは、</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133111" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133111.png" alt="f:id:KYoshiaki:20150815133111p:image" title="f:id:KYoshiaki:20150815133111p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 2) AE-FT234X</p> <pre>超小型USBシリアル変換モジュール AE-FT234X: <a class="keyword" href="http://d.hatena.ne.jp/keyword/%C8%BE%C6%B3%C2%CE">半導体</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%B7%EE%C5%C5%BB%D2%C4%CC%BE%A6">秋月電子通商</a> 電子部品 ネット通販 <a href="http://akizukidenshi.com/catalog/g/gM-08461/">http://akizukidenshi.com/catalog/g/gM-08461/</a> AE-FT234X 1パック ¥600(税込) 4pin デバイス名: /dev/cu.usbserial-DJ002536 </pre><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133112" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133112.png" alt="f:id:KYoshiaki:20150815133112p:image" title="f:id:KYoshiaki:20150815133112p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 3) AE-FT231X</p> <pre>FT231X USBシリアル変換モジュール: <a class="keyword" href="http://d.hatena.ne.jp/keyword/%C8%BE%C6%B3%C2%CE">半導体</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%B7%EE%C5%C5%BB%D2%C4%CC%BE%A6">秋月電子通商</a> 電子部品 ネット通販 <a href="http://akizukidenshi.com/catalog/g/gK-06894/">http://akizukidenshi.com/catalog/g/gK-06894/</a> AE-FT231X 1パック ¥750(税込) 18pin デバイス名: /dev/cu.usbserial-DJ004U12 </pre><p>の2つです。どちらも、細ピンヘッダは付属しています。ただし、細ピンヘッダは自分でハンダ付けする必要があります。ハンダ付けで失敗した場合は、はんだ吸取り線を利用してください。 率直に言うと値段も安いし、必要なのは 3 pin だけなので断然 AE-FT234X がお勧めです。</p><p>Ichigojam と AE-FT234X を接続するには、ジャンパーワイヤ(オス-メス) が必要です。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%B7%EE%C5%C5%BB%D2%C4%CC%BE%A6">秋月電子通商</a>でいろいろな種類が売っています。<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%B7%EE%C5%C5%BB%D2%C4%CC%BE%A6">秋月電子通商</a>の検索フィールドにキーワードを入力して検索するより、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> で直接</p> <pre>ジャンパーワイヤ site:akizukidenshi.com </pre><p>上の語句で検索する方が、見つけやすいかもしれません。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> と接続するには</p> <pre>USBケーブル Aオス-マイクロBオス 1.5m A-microB: パーツ一般 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%A9%B7%EE%C5%C5%BB%D2%C4%CC%BE%A6">秋月電子通商</a> 電子部品 ネット通販 <a href="http://akizukidenshi.com/catalog/g/gC-07607/">http://akizukidenshi.com/catalog/g/gC-07607/</a> 1本 ¥120(税込) </pre><p>が必要です。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133113" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133113.png" alt="f:id:KYoshiaki:20150815133113p:image" title="f:id:KYoshiaki:20150815133113p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 4) IchigoJam を USB-シリアルモジュールで <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> と接続した状態</p><p>上図は、AE-FT234X と IchigoJam を ジャンパーワイヤ(オス-メス) 3本で</p> <pre>AE-FT234X - IchigoJam TXD - RXD (15) RXD - TXD (16) <a class="keyword" href="http://d.hatena.ne.jp/keyword/GND">GND</a> - <a class="keyword" href="http://d.hatena.ne.jp/keyword/GND">GND</a> (8・22) </pre><p>上記のように接続し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> とは USBケーブル で繋いだ状態です。AE-FT234X 側 VCC(3.3V)は接続する必要はありません。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Yosemite">Yosemite</a> 10.10.5 上では、最初からUSB-シリアルモジュール AE-FT234X、AE-FT231Xの FTDI 社用アップル純正ドライバがインストールされています。</p><br /> <p>IchigoJam の電源を入れ、</p> <pre>titoi2/IchigoJamSerialConsole · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/titoi2/IchigoJamSerialConsole">https://github.com/titoi2/IchigoJamSerialConsole</a> </pre><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133245" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133245.png" alt="f:id:KYoshiaki:20150815133245p:image" title="f:id:KYoshiaki:20150815133245p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 5) IchigoJamSerialConsole でオープンするデバイス名を選択</p><p>IchigoJamSerialConsole (<a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> Version 6.4 (6E35b) による IchigoJamSerialConsole アプリケーションの作成の仕方は、後半に説明してあります。) を起動し、上図のようにデバイス名を選択し、Open ボタンをクリックすると下図のようにデバイスが開きます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133246" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133246.png" alt="f:id:KYoshiaki:20150815133246p:image" title="f:id:KYoshiaki:20150815133246p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 6) シリアルポートをオープンした状態</p><p>後は、キーボードで入力すると IchigoJam と接続したテレビに文字が表示されるはずです。(注意、IchigoJamSerialConsole アプリケーションが前面にないとキーボードの入力を受け取ることができません。) <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> でプログラムができる状態になりました。IchigoJamSerialConsole を終了する前に、忘れず Close ボタンをクリックして、シリアルポートを閉じてください。(実際はウインドウを閉じればシリアルポートも閉じられます。)</p><p>LOAD ボタンをクリックすると<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9">文字コード</a>: Shift JIS、改行コード: CR/LFのテキ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%C8%A5%D5%A5%A1%A5%A4">ストファイ</a>ルに保存した BASC プログラムを IchigoJam に転送できます。RUN + Return キーを入力すると実行できます。</p><p><span style="color: #ff0000">注意) IchigoJamSerialConsole は、改行コード CR (0x0d) を送信しません。CoolTerm などで</span><br /> </p> <pre>Roger Meier's Freeware CoolTerm <a href="http://freeware.the-meiers.org/">http://freeware.the-meiers.org/</a> </pre><p><span style="color: #ff0000">生の <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> プログラムを送信する場合、<a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> プログラムの改行コードを LF に変換してください。</span>拙作、DUMP.bas.txt</p> <pre>DUMP.bas.txt ; メモリダンププログラム version 1.0.0 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/IchigoJam.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/IchigoJam.zip</a> </pre><p>で IchigoJam のプログラムエリア #C00 をダンプすると改行コードが LF (0x0A) になっていることが確認できます。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> プログラムは</p> <pre>こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円) <a href="http://ichigojam.net/">http://ichigojam.net/</a> 説明書・組み立て方 IchigoJam はじめのいっぽ&<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DF%A5%CB%A5%B2%A1%BC%A5%E0">ミニゲーム</a>ズ <a href="http://ichigojam.net/book/IchigoJam-firstgame.pdf">http://ichigojam.net/book/IchigoJam-firstgame.pdf</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/keynote">keynote</a> <a href="http://ichigojam.net/book/IchigoJam-firstgame.key">http://ichigojam.net/book/IchigoJam-firstgame.key</a> English-PDF <a href="http://ichigojam.net/book/IchigoJam-firstgame-en.pdf">http://ichigojam.net/book/IchigoJam-firstgame-en.pdf</a> English-<a class="keyword" href="http://d.hatena.ne.jp/keyword/keynote">keynote</a> <a href="http://ichigojam.net/book/IchigoJam-firstgame-en.key">http://ichigojam.net/book/IchigoJam-firstgame-en.key</a> </pre> <pre>PROGRAM - イチゴジャム レシピ <a href="http://15jamrecipe.jimdo.com/program/">http://15jamrecipe.jimdo.com/program/</a> </pre><p>に、色々紹介されています。<a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> のバージョンには十分気をつけてください。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a>リファレンスは、</p> <pre>こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円) <a href="http://ichigojam.net/">http://ichigojam.net/</a> </pre><p>上記URLページの右側</p> <pre>説明書・組み立て方 <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a>リファレンス 1.0.1 / <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a>リファレンス 0.9.7 / english version </pre><p>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a>リファレンス 1.0.1、0.9.7 リンク</p> <pre>IchigoJam <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> リファレンス 1.0.1 <a href="http://ichigojam.net/IchigoJam.html">http://ichigojam.net/IchigoJam.html</a> IchigoJam <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> リファレンス 0.9.7 <a href="http://ichigojam.net/IchigoJam-0.9.7.html">http://ichigojam.net/IchigoJam-0.9.7.html</a> </pre><p>で読むことができます。</p><p>私が作ったメモリダンププログラムも下記URL で公開します。</p> <pre>IchigoJam <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> バージョン 1.0.1 対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/BASIC">BASIC</a> 自作プログラム DUMP.bas.txt ; メモリダンププログラム version 1.0.0 SW2.bas.txt ; SW2 タクトスイッチ判定プログラム version 1.0.0 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/IchigoJam.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/IchigoJam.zip</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Yosemite">Yosemite</a> 10.10.5 上でのフォームウェア更新、外部記憶装置 EEPROM Coolterm の使い方、Coolterm の使用例と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Parallels%20Desktop">Parallels Desktop</a> 10 の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows%208">Windows 8</a> 上での BUFFALO モニターモード搭載 USB用<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D3%A5%C7%A5%AA%A5%AD%A5%E3%A5%D7%A5%C1%A5%E3">ビデオキャプチャ</a>ー PC-SDVD/U2G の使用例などは次回に紹介したいと思います。</p><br /> <p>PC-G850V、PC-G850VS と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の間でシリアル通信ができるアプリケーション</p> <pre>PCG-LinkMac <a href="http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink">http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink</a> </pre><p>を公開している身としては、一番興味があったのは IchigoJamSerialConsole </p> <pre>titoi2/IchigoJamSerialConsole · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/titoi2/IchigoJamSerialConsole">https://github.com/titoi2/IchigoJamSerialConsole</a> </pre><p>です。</p><br /> <p>最初に、IchigoJamSerialConsole のソースをダウンロードし、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> でビルドして IchigoJamSerialConsole アプリケーションを作成する方法を紹介したいと思います。</p><p>まず、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> から <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> (私の環境は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> Version 6.4 (6E35b) です。) をインストールしてください。インストールが終了したら、'/アプリケーション' フォルダにある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> アイコンをダブルクリックして起動してください。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a>の利用許諾(ライセンス同意契約)に Agree ボタンで同意し,パスワードを尋ねられるので入力してください。必要な<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8">コンポーネント</a>がインストールされます。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> をインストールすると<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%DE%A5%F3%A5%C9%A5%E9%A5%A4%A5%F3">コマンドライン</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB">ツール</a>はインストールされます。<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Yosemite">Yosemite</a> では<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%DE%A5%F3%A5%C9%A5%E9%A5%A4%A5%F3">コマンドライン</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB">ツール</a>をインストールするために、ターミナル上でコマンド <a class="keyword" href="http://d.hatena.ne.jp/keyword/xcode">xcode</a>-select --install を実行する必要はありません。</p><p>また、IchigoJamSerialConsole をビルドするには CocoaPods</p> <pre>CocoaPods.org <a href="https://cocoapods.org/">https://cocoapods.org/</a> </pre><p>が必要です。'/アプリケーション/ユーティリティ' フォルダの 'ターミナル' を起動し</p> <pre class="code" data-lang="" data-unlink>~ $ sudo gem install cocoapods</pre><p>と入力し、 Return キーを押して CocoaPods をインストールしてください。パスワードの入力を求められるので、ログイン時のパスワードを入力します。しばらく時間がかかりますが、(反応がない状態が数分続きますが、そのまましばらくお待ちください。)</p> <pre class="code" data-lang="" data-unlink>~ $ sudo gem install cocoapods Password: Fetching: cocoapods-core-0.38.1.gem (100%) . . Parsing documentation for cocoapods-0.38.1 Installing ri documentation for cocoapods-0.38.1 3 gems installed ~ $ </pre><p>とプロンプト $ 文字が表示されれば終了です。CocoaPods のアップデートも、インストールと同じく再度 sudo gem install cocoapods を実行してください。</p><p>CocoaPods は最新の状態にしないと IchigoJamSerialConsole のソースを修正する必要が生じます。私が使用している CocoaPods のバージョンは、ターミナルのコマンド pod で確認すると</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133304" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133304.png" alt="f:id:KYoshiaki:20150815133304p:image" title="f:id:KYoshiaki:20150815133304p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 7) ターミナルで CocoaPods のバージョン確認</p> <pre class="code" data-lang="" data-unlink>~ $ pod --version 0.38.2 ~ $</pre><p>0.38.2 です。</p><br /> <p>それでは、IchigoJamSerialConsole のソースをダウンロードします。2つの方法があります。厳密には <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> on <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> アプリケーションを使う方法もあります。(私は <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> on <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> を使ったことがないので詳しくは知らないのですが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Chrome">Chrome</a> で 'Clone in Desktop' ボタンをクリックすると <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> on <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> が起動し、保存先を尋ねてくるそうです。)</p><p>一つ目は <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> サイト</p> <pre>titoi2/IchigoJamSerialConsole · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/titoi2/IchigoJamSerialConsole">https://github.com/titoi2/IchigoJamSerialConsole</a> </pre><p>の右中央の Downloaded Zip ボタンをクリックしてダウンロードする方法です。IchigoJamSerialConsole-master.zip という名前のファイルがダウンロードされ、ダブルクリックすると IchigoJamSerialConsole-master という名前のソースが含まれたフォルダが作成されます。好きな場所に IchigoJamSerialConsole-master フォルダを移動してください。</p><p>2つ目は、git コマンドを使う方法です。上記サイトの右中央</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133251" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133251.png" alt="f:id:KYoshiaki:20150815133251p:image" title="f:id:KYoshiaki:20150815133251p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 8) <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%C3%A5%D7%A5%DC%A1%BC%A5%C9">クリップボード</a>アイコン</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%C3%A5%D7%A5%DC%A1%BC%A5%C9">クリップボード</a>アイコン <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133252" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133252.png" alt="f:id:KYoshiaki:20150815133252p:image:w34" title="f:id:KYoshiaki:20150815133252p:image:w34" class="hatena-fotolife" style="width:34px" itemprop="image"></a></span> をクリックします。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%C3%A5%D7%A5%DC%A1%BC%A5%C9">クリップボード</a>に <a href="https://github.com/titoi2/IchigoJamSerialConsole.git">https://github.com/titoi2/IchigoJamSerialConsole.git</a> という文字列がコピーされます。後は、ターミナルでインストールしたいフォルダに移動して (例としてデスクトップを指定しています。)、git コマンドを 'git clone ' と入力し、続けて Command+v で<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%C3%A5%D7%A5%DC%A1%BC%A5%C9">クリップボード</a>からターミナルに文字列をペーストしてください。最後に Return キーを押して実行します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133253" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133253.png" alt="f:id:KYoshiaki:20150815133253p:image" title="f:id:KYoshiaki:20150815133253p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 9) git コマンドでソースをダウンロード</p> <pre class="code" data-lang="" data-unlink>~ $ cd Desktop ~/Desktop $ git clone https://github.com/titoi2/IchigoJamSerialConsole.git Cloning into &#39;IchigoJamSerialConsole&#39;... remote: Counting objects: 145, done. remote: Total 145 (delta 0), reused 0 (delta 0), pack-reused 145 Receiving objects: 100% (145/145), 94.62 KiB | 0 bytes/s, done. Resolving deltas: 100% (67/67), done. Checking connectivity... done. ~/Desktop $ </pre><p>これでデスクトップに IchigoJamSerialConsole という名前のフォルダが作成され、ソースがダウンロードされました。ターミナルで IchigoJamSerialConsole フォルダに移動します。</p> <pre class="code" data-lang="" data-unlink>~/Desktop $ cd IchigoJamSerialConsole/</pre><p>折角 git を使ったので、簡単な使い方を説明します。</p><p>現在ダウンロードしたリモートサーバーのアドレスを表示するには、git remote -v</p> <pre class="code" data-lang="" data-unlink>~/Desktop/IchigoJamSerialConsole $ git remote -v origin https://github.com/titoi2/IchigoJamSerialConsole.git (fetch) origin https://github.com/titoi2/IchigoJamSerialConsole.git (push)</pre><p>を使います。この場合、origin というリモー<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%EA%A5%DD%A5%B8">トリポジ</a>トリの名前でリモートサーバーのアドレスを設定しています。</p><p>ブランチの表示には、 git branch -va です。</p> <pre class="code" data-lang="" data-unlink>~/Desktop/IchigoJamSerialConsole $ git branch -va * master 57820b4 ログクリアボタン追加 remotes/origin/HEAD -&gt; origin/master remotes/origin/master 57820b4 ログクリアボタン追加 ~/Desktop/IchigoJamSerialConsole $ </pre><p>上記より、現在のブランチは master です。</p><p>リモー<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%EA%A5%DD%A5%B8">トリポジ</a>トリ origin の履歴を取得するには、 git fetch origin</p> <pre class="code" data-lang="" data-unlink>~/Desktop/IchigoJamSerialConsole $ git fetch origin ~/Desktop/IchigoJamSerialConsole $ </pre><p>です。最新の履歴を表示するには、git branch -va</p> <pre class="code" data-lang="" data-unlink>~/Desktop/IchigoJamSerialConsole $ git branch -va * master 57820b4 ログクリアボタン追加 remotes/origin/HEAD -&gt; origin/master remotes/origin/master 57820b4 ログクリアボタン追加 ~/Desktop/IchigoJamSerialConsole $</pre><p>で確認できます。</p><p>ステータスを確認するには、git status を使います。</p> <pre class="code" data-lang="" data-unlink>~/Desktop/IchigoJamSerialConsole $ git status On branch master Your branch is up-to-date with &#39;origin/master&#39;. nothing to commit, working directory clean ~/Desktop/IchigoJamSerialConsole $ </pre><p>git log を使うとコミットを確認できます。</p> <pre class="code" data-lang="" data-unlink>~/Desktop/IchigoJamSerialConsole $ git log commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Author: xxxxxxxxxxx Date: xxx xxx x xx:xx:xx xxx +xxxx :q</pre><p> <br /> スペースキーを押すと次のページを開きます。終了は q キーを押してください。</p><p>git pull で自分のローカル<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>をリモー<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%EA%A5%DD%A5%B8">トリポジ</a>トリの内容で更新します。</p> <pre class="code" data-lang="" data-unlink>~/Desktop/IchigoJamSerialConsole $ git pull Already up-to-date. ~/Desktop/IchigoJamSerialConsole $</pre><p>git についてはあまり詳しくはありません。ソースを最新の状態にしたい場合は git pull を実行すれば良いようです。差分だけがダウンロードされ、最新状態になります。</p><br /> <p>次に CocoaPods を使って必要なライブラリをダウンロードする必要があります。</p><p>IchigoJamSerialConsole-master.zip ファイルをダウンロードし展開したフォルダ IchigoJamSerialConsole-master に 'ターミナル' 上で移動します。git コマンドでダウンロードした場合は、IchigoJamSerialConsole フォルダに移動してください。(今回の例では 'デスクトップ/IchigoJamSerialConsole' フォルダに移動しています。)</p><p>IchigoJamSerialConsole フォルダで説明します。(IchigoJamSerialConsole-master フォルダでも同じです。)</p><p>pod install コマンドを実行します。</p> <pre class="code" data-lang="" data-unlink>~/Desktop/IchigoJamSerialConsole $ pod install Updating local specs repositories Analyzing dependencies Downloading dependencies Installing ORSSerialPort (1.8.1) Generating Pods project Integrating client project Sending stats ~/Desktop/IchigoJamSerialConsole $</pre><p>シリアルポートライブラリ ORSSerialPort がインストールされます。</p><p>open . コマンドで IchigoJamSerialConsole フォルダを Finder で開きます。</p> <pre class="code" data-lang="" data-unlink>~/Desktop/IchigoJamSerialConsole $ open .</pre><p>IchigoJamSerialConsole フォルダの IchigoJamSerialConsole.xcworkspace ファイルをダブルクリックして <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で開きます。(IchigoJamSerialConsole.xcodeproj ファイルではないので注意してください。)</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133247" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133247.png" alt="f:id:KYoshiaki:20150815133247p:image" title="f:id:KYoshiaki:20150815133247p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 10) IchigoJamSerialConsole.xcworkspace を <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で開いた状態</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133248" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133248.png" alt="f:id:KYoshiaki:20150815133248p:image" title="f:id:KYoshiaki:20150815133248p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 11) メニュー表示</p><p>図 10) のように<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の IchigoJamSerialConsole 文字をクリックしてポップアップメニューを開き、図 11) 'Edit <a class="keyword" href="http://d.hatena.ne.jp/keyword/Scheme">Scheme</a> ...' を選択します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133249" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133249.png" alt="f:id:KYoshiaki:20150815133249p:image" title="f:id:KYoshiaki:20150815133249p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 12) Edit <a class="keyword" href="http://d.hatena.ne.jp/keyword/Scheme">Scheme</a> ...</p><p>上図のように、左ペインから Run をクリックし、Info タブを選択します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133250" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133250.png" alt="f:id:KYoshiaki:20150815133250p:image" title="f:id:KYoshiaki:20150815133250p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 13) Build Configurarion 選択</p> <pre>Build Configurarion: release </pre><p>Build Configurarion のメニューから release を選択します。リリースを選択するとビルドしたアプリケーションに余計な情報が含まれていません。</p><p>右下の Close ボタンをクリックしてウインドウを閉じます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133254" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133254.png" alt="f:id:KYoshiaki:20150815133254p:image" title="f:id:KYoshiaki:20150815133254p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 14) Project Navigator</p><p>上図のように Project Navigator (一番左のペイン) の IchigoJamSerialConsole 文字列をクリック、その横のエリア</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133255" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133255.png" alt="f:id:KYoshiaki:20150815133255p:image" title="f:id:KYoshiaki:20150815133255p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 15) PROJECT と Deployment Target 選択</p> <pre>PROJECT IchigoJamSerialConsole </pre><p>図 15) 'PROJECT' 下の文字 IchigoJamSerialConsole をクリック、さらに横の Info タブを選択</p> <pre>▼ Deployment Target <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> Development Target 10.10 </pre><p> <br /> 図 15) の <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> Development Target のメニューから、対応する最下位の OS を選択します。この場合だと <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Yosemite">Yosemite</a> 10.10 以上に対応しています。好きなバージョンを選択してください。あくまでも宣言しているだけであって、ソースが対応している必要があります。</p><p> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133256" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133256.png" alt="f:id:KYoshiaki:20150815133256p:image" title="f:id:KYoshiaki:20150815133256p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 16) TARGETS 選択<br /> </p> <pre>TARGETS IchigoJamSerialConsole </pre><p>図 16) 左から2番めのペイン 'TARGETS' 下の文字 IchigoJamSerialConsole をクリック、その横の General タブをクリック</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133305" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133305.png" alt="f:id:KYoshiaki:20150815133305p:image" title="f:id:KYoshiaki:20150815133305p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 17) Deployment</p> <pre>▼ Deployment Info Development Target 10.10 </pre><p>図 17) のように先ほど選択した Deployment Target と同じか確認して下さい。違う場合は設定してください。</p> <pre>▼ Identity Bundle Identifier: jp.aboutsoft.IchigoJamSerialConsole Signing ◯ <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> ◯ Developer ID ● None Team: None </pre><p>図 17) Identity の項目で今回は必要ありませんが、アプリケーションの識別子 jp.aboutsoft.IchigoJamSerialConsole を設定できたり、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> 以外で公開する場合の署名 Developer ID などを選択できます。Developer ID をクリックすると Team: None メニューから有効なメンバーを選択できます。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> Developer <a href="https://developer.apple.com/">https://developer.apple.com/</a> </pre><p>詳しくは、上記URLの <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> Developer Center/Member Center/Certificates, Identifiers & Profiles/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> Apps/App Distrubution Guide を参照してください。</p><p>これで設定は終了です。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133259" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133259.png" alt="f:id:KYoshiaki:20150815133259p:image" title="f:id:KYoshiaki:20150815133259p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 18) ビルド</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133300" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133300.png" alt="f:id:KYoshiaki:20150815133300p:image" title="f:id:KYoshiaki:20150815133300p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 19) 停止</p><p>図 18) 左上<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の ▶ ボタンをクリックしてビルドすると IchigoJamSerialConsole アプリケーションの作成に成功しますが、警告が表示されます。図 19) のように ▶ ボタンの横の■ ボタンをクリックしてアプリケーショを終了してください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133257" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133257.png" alt="f:id:KYoshiaki:20150815133257p:image" title="f:id:KYoshiaki:20150815133257p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 20) Issue Navigator</p><p>図 20) <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の下にある Navigator (一番左のペイン) 上部の 8 つのアイコンが並んでいる中から、左から4番目の警告アイコン (Issue Navigator) が選択されているか確認して下さい。</p><p>図 20) のように一番左側ペイン Issue Navigator に IJCSerialManager.<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> ファイルの5つの警告が表示されます。警告をクリックすると </p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133258" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133258.png" alt="f:id:KYoshiaki:20150815133258p:image" title="f:id:KYoshiaki:20150815133258p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 21) Fix-it ダイアログ</p> <pre>Issue: ******************** Fix-it Replace "! ****************** </pre><p>図 21) のようなダイアログが開きます。青色で反転した Fix-it と書かれたエリアをダブルクリックするとソースが自動で修正されます。! マークを削除しているだけです。すべての警告をクリックして上のように修正してください。すべての警告がなくなります。</p><p>念のため、</p> <pre>メニュー/Product/Clean </pre><p>を選択し、ビルドされているアプリケーションを削除します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133259" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133259.png" alt="f:id:KYoshiaki:20150815133259p:image" title="f:id:KYoshiaki:20150815133259p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 22) ビルド</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133300" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133300.png" alt="f:id:KYoshiaki:20150815133300p:image" title="f:id:KYoshiaki:20150815133300p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 23) 停止</p><p>再度、図 22) 左上<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の ▶ ボタンをクリックしてビルドします。IchigoJamSerialConsole アプリケーションが起動しますが、図 23) のように ▶ ボタンの横の■ ボタンをクリックしてアプリケーショを終了してください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133301" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133301.png" alt="f:id:KYoshiaki:20150815133301p:image" title="f:id:KYoshiaki:20150815133301p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 24) Project Navigator</p><p>図 24) のように<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の下にある Navigator (一番左のペイン) 上部の 8 つのアイコンが並んでいる中から、一番左のフォルダアイコンをクリックしてください。プロジェクト・ナビゲーターが開きます。一番トップの IchigoJamSerialConsole から ▶ をクリックして階層を下って行くと</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133302" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133302.png" alt="f:id:KYoshiaki:20150815133302p:image" title="f:id:KYoshiaki:20150815133302p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 25) IchigoJamSerialConsole アプリケーション</p> <pre>▼IchigoJamSerialConsole ▼Products IchigoJamSerialConsole.app </pre><p>図 25) のように Products の下にアプリケーションアイコンと IchigoJamSerialConsole.app 文字列が見つかるはずです。これが目的の IchigoJamSerialConsole アプリケーションです。赤い文字列の場合、ビルドに失敗しています。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150815133303" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150815/20150815133303.png" alt="f:id:KYoshiaki:20150815133303p:image" title="f:id:KYoshiaki:20150815133303p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 26) Finder に IchigoJamSerialConsole アプリケーションを表示</p><p>図 26) のように IchigoJamSerialConsole.app 文字列をマウスで右クリック (CTRL + 左クリック) し、'メニュー/Show in Finder' を選択してください。</p><p>IchigoJamSerialConsole アプリケーションが Finder に表示されます。好きな場所にコピーしてください。</p><p>これで IchigoJamSerialConsole アプリケーションのビルドに成功しました。</p><br /> <p>ここからは個人的に関心があった簡単なソース解析です。</p><p>自作の PC-G850V、PC-G850VS と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の間でシリアル通信ができるアプリケーション</p> <pre>PCG-LinkMac <a href="http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink">http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink</a> </pre><p>の場合、シリアルポートを読み書きするプログラムは自作していたのですが、IchigoJamSerialConsole では便利なシリアルポートライブラリ ORSSerialPort を使用していました。こんな便利なライブラリがあったのですね。</p><p>ORSSerialPort ライブラリ、IchigoJamSerialConsole のソースを全て理解するのは無理なので、関心があるところだけ読み解きたいと思います。</p><p>キー入力は NSResponder クラスを継承した NSView のサブクラス MainView の func keyDown(theEvent: NSEvent)、func keyUp(theEvent: NSEvent) から</p> <pre class="code" data-lang="" data-unlink>// MainView.swift override func keyDown(theEvent: NSEvent) { delegate.onKeyDown(theEvent) override func keyUp(theEvent: NSEvent) { delegate.onKeyUp(theEvent)</pre><p>上のソース (ソースは省略してあるので、先頭に表示してあるファイル名と<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E1%A5%BD%A5%C3%A5%C9">メソッド</a>名を頼りに <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で確認して下さい。) のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/delegate">delegate</a> の onKeyDown(theEvent)、onKeyUp(theEvent) を呼び出しています。</p> <pre class="code" data-lang="" data-unlink>// ViewController.swift override func viewDidLoad() { mainView.delegate = self</pre><p>MainView の <a class="keyword" href="http://d.hatena.ne.jp/keyword/delegate">delegate</a> は ViewController です。</p> <pre class="code" data-lang="" data-unlink>// ViewController.swift func onKeyDown(theEvent: NSEvent) { keyDownProc(theEvent)</pre><p>ViewController の onKeyDown(theEvent: NSEvent) から keyDownProc(theEvent) を呼び出しています。</p> <pre class="code" data-lang="" data-unlink>// ViewController.swift func keyDownProc(theEvent: NSEvent) { serialManager.sendByte(c8)</pre><p>ViewController の keyDownProc(theEvent: NSEvent) で <a class="keyword" href="http://d.hatena.ne.jp/keyword/PS/2">PS/2</a> のキーコードに変換し、serialManager.sendByte(c8) を呼び出し、シリアルポートに1バイト出力しています。</p><p>serialManager は IJCSerialManager.<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> の IJCSerialManager クラスを<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%BF%A5%F3%A5%B9">インスタンス</a>化したものです。</p> <pre class="code" data-lang="" data-unlink>// IJCSerialManager.swift func sendByte(param:UInt8) { sp.sendData(data)</pre><p>sp は ORSSerialPort クラスです。sendData(data) で実際にシリアルポートに書き込んでいます;</p> <pre class="code" data-lang="" data-unlink>// FileLoadViewController.swift func loadData2Ichigojam(data:NSData) { serialManager.sendByte(d) NSThread.sleepForTimeInterval(0.02)</pre><p> <br /> また、テキストをシリアルポートに書き込む<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E1%A5%BD%A5%C3%A5%C9">メソッド</a> loadData2Ichigojam(data:NSData)の場合、1バイト送るごとに NSThread.sleepForTimeInterval(0.02) で遅延しています。</p> <pre class="code" data-lang="" data-unlink>IJCSerialManager.swift func open(path:String) {</pre><p>func open(path:String) <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E1%A5%BD%A5%C3%A5%C9">メソッド</a>を見るとシリアルポートを通信速度 115200 で開いていることが判ります。</p><p>ORSSerialPort ライブラリから呼び出されるプロコトル、シリアルポードを開く処理などは、すべて IJCSerialManager.<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> でおこなっています。ORSSerialPort ライブラリのプロコトルから呼び出される<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E1%A5%BD%A5%C3%A5%C9">メソッド</a>を IJCSerialManager.<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> に実装し、その<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E1%A5%BD%A5%C3%A5%C9">メソッド</a>から IJCSerialManager.<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> 宣言したプロコトル IJCSerialManagerDelegate を使って ViewController.<a class="keyword" href="http://d.hatena.ne.jp/keyword/swift">swift</a> に流しています。</p><p>私にとって ORSSerialPort ライブラリはあまりにも複雑すぎて完全には理解できないのですが、シリアルポードは基本的に <a class="keyword" href="http://d.hatena.ne.jp/keyword/BSD">BSD</a> ライブラリの</p> <pre class="code lang-c" data-lang="c" data-unlink><span class="synPreProc">#include </span><span class="synConstant">&lt;fcntl.h&gt;</span> <span class="synType">int</span> open(<span class="synType">const</span> <span class="synType">char</span> *path, <span class="synType">int</span> oflag, ...); <span class="synType">ssize_t</span> write(<span class="synType">int</span> fildes, <span class="synType">const</span> <span class="synType">void</span> *buf, <span class="synType">size_t</span> nbyte); </pre><p>上記<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%B9%A5%C6%A5%E0%A5%B3%A1%BC%A5%EB">システムコール</a>関数 open() でデバイスを開き、write() 関数で書き込むだけです。詳しくは、ターミナルで</p> <pre class="code" data-lang="" data-unlink>~ $ man 2 open ~ $ man 2 write ~ $ </pre><p>上記 man コマンドで確認して下さい。次ページを表示するにはスペースキーを押し、終了は q キーを押してください。<br /> man の内容をテキ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%C8%A5%D5%A5%A1%A5%A4">ストファイ</a>ルに出力するには、以下のコマンド</p> <pre class="code" data-lang="" data-unlink>~ $ man 2 open | col -bfx &gt; open.txt ~ $ open open.txt ~ $ </pre><p>を実行してください。</p><p>デバイスの通信速度などの設定は</p> <pre class="code lang-c" data-lang="c" data-unlink><span class="synPreProc">#include </span><span class="synConstant">&lt;unistd.h&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;termios.h&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;fcntl.h&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;sys/ioctl.h&gt;</span> <span class="synType">struct</span> termios termios_p; <span class="synType">int</span> tcgetattr(<span class="synType">int</span> fildes, <span class="synType">struct</span> termios *termios_p); <span class="synType">int</span> tcsetattr(<span class="synType">int</span> fildes, <span class="synType">int</span> optional_actions, <span class="synType">const</span> <span class="synType">struct</span> termios *termios_p); speed_t cfgetispeed(<span class="synType">const</span> <span class="synType">struct</span> termios *termios_p); speed_t cfgetospeed(<span class="synType">const</span> <span class="synType">struct</span> termios *termios_p); <span class="synType">int</span> cfsetospeed(<span class="synType">struct</span> termios *termios_p, speed_t speed); <span class="synType">int</span> cfsetspeed(<span class="synType">struct</span> termios *termios_p, speed_t speed); </pre><p>上記関数で設定できます。ターミナルで</p> <pre class="code" data-lang="" data-unlink>~ $ man 3 tcgetattr</pre><p>で確認してください。拙作 PCG-LinkMac や ORSSerialPort ライブラリでも基本は同じです。</p><br /> <p>ただし、ソースを解析していて驚いたのは入手できるシリアルポートを調べるのに IOKit を使っているところです。私は安直に /dev を開いて調べていました。</p><p>ちょと抜き出してみました。(ソースは省略してあるので、詳細は必ず IchigoJamSerialConsole.xcworkspace ファイルを <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で開き、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>下にあるフォルダアイコンをクリックし、一番左側ペイン Project Navigator で</p> <pre>▼<a class="keyword" href="http://d.hatena.ne.jp/keyword/Pods">Pods</a> ▼<a class="keyword" href="http://d.hatena.ne.jp/keyword/Pods">Pods</a> ORSSerialPort.m ORSSerialPortManager.m </pre><p> <br /> ORSSerialPort.m、ORSSerialPortManager.m を確認して下さい。)</p> <pre class="code lang-objc" data-lang="objc" data-unlink><span class="synComment">// ORSSerialPort.m</span> <span class="synPreProc">#import </span><span class="synConstant">&lt;IOKit/serial/IOSerialKeys.h&gt;</span> <span class="synPreProc">#import </span><span class="synConstant">&lt;IOKit/serial/ioss.h&gt;</span> @property (readonly) io_object_t IOKitDevice; <span class="synIdentifier">+ </span>(NSString *)stringPropertyOf:(io_object_t)aDevice forIOSerialKey:(NSString *)key; { CFStringRef string = (CFStringRef)IORegistryEntryCreateCFProperty(aDevice, (__bridge CFStringRef)key, kCFAllocatorDefault, <span class="synConstant">0</span>); <span class="synStatement">return</span> (__bridge_transfer NSString *)string; } <span class="synIdentifier">+ </span>(NSString *)bsdCalloutPathFromDevice:(io_object_t)aDevice; { <span class="synStatement">return</span> [<span class="synStatement">self</span> stringPropertyOf:aDevice forIOSerialKey:(NSString*)CFSTR(kIOCalloutDeviceKey)]; } </pre><pre class="code lang-objc" data-lang="objc" data-unlink><span class="synComment">// ORSSerialPortManager.m</span> <span class="synComment">// 220行目</span> <span class="synIdentifier"> - </span>(<span class="synType">void</span>)retrieveAvailablePortsAndRegisterForChangeNotifications; { <span class="synStatement">self</span>.portPublishedNotificationIterator = portIterator; IOObjectRelease(portIterator); NSMutableArray *ports = [NSMutableArray array]; io_object_t eachPort; <span class="synStatement">while</span> ((eachPort = IOIteratorNext(<span class="synStatement">self</span>.portPublishedNotificationIterator))) { ORSSerialPort *port = [ORSSerialPort serialPortWithDevice:eachPort]; <span class="synComment">// シリアルポートの場合、配列 ports に追加</span> <span class="synStatement">if</span> (port) [ports addObject:port]; IOObjectRelease(eachPort); } <span class="synComment">// 入手できるシリアルポートに代入</span> <span class="synStatement">self</span>.availablePorts = ports; <span class="synPreProc">#define kIOCalloutDeviceKey </span><span class="synConstant">&quot;IOCalloutDevice&quot;</span><span class="synPreProc"> </span><span class="synComment">// /dev/cu.usbserial-FTG6R5XK</span> <span class="synPreProc">#define kIODialinDeviceKey </span><span class="synConstant">&quot;IODialinDevice&quot;</span><span class="synPreProc"> </span><span class="synComment">// /dev/tty.usbserial-FTG6R5XK</span> </pre><p>上のソースがその箇所です。個人的に動作を調べるために作成したサンプルを</p> <pre>シリアルポートデバイスのパス名を <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> 下のデバッガコンソールに表示するプログラム <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/SerialPort.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/SerialPort.zip</a> </pre><p>上記URLで公開します。</p><p>USB シリアル変換ケーブルを接続して上記URLで公開しているプロジェクトをビルドすると、シリアルポートを <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> 左下のデバッガコンソールに表示します。ソースは以下のとおりです。</p> <pre class="code lang-objc" data-lang="objc" data-unlink><span class="synComment">/*</span> <span class="synComment"> IOKit からデバイス名を取り出す</span> <span class="synComment"> */</span> <span class="synIdentifier">-</span>(<span class="synType">void</span>)bsdPathFromDevice { CFMutableDictionaryRef matchingDict = <span class="synConstant">NULL</span>; <span class="synComment">// kIOSerialBSDServiceValue にマッチした IOService の CFMutableDictionaryRef を作成</span> matchingDict = IOServiceMatching(kIOSerialBSDServiceValue); CFRetain(matchingDict); <span class="synComment">// Need to use it twice</span> <span class="synComment">// matchingDict に キー:CFSTR(kIOSerialBSDTypeKey) 値:CFSTR(kIOSerialBSDAllTypes) を追加</span> CFDictionaryAddValue(matchingDict, CFSTR(kIOSerialBSDTypeKey), CFSTR(kIOSerialBSDAllTypes)); <span class="synComment">// portIterator に matchingDict で指定した IOService object をセット</span> io_iterator_t portIterator = <span class="synConstant">0</span>; kern_return_t err = IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, &amp;portIterator); CFRelease(matchingDict); <span class="synStatement">if</span> (err) <span class="synStatement">return</span>; <span class="synComment">// portIterator からシリアルポート eachPort を取り出す</span> io_object_t eachPort = <span class="synConstant">0</span>; <span class="synStatement">while</span> ((eachPort = IOIteratorNext(portIterator))) { <span class="synComment">// デバイス名を取得</span> NSString *calloutPath = [ViewController bsdCalloutPathFromDevice:eachPort]; <span class="synComment">// /dev/cu.xxxxx</span> NSString *dialinPath = [ViewController bsdDialinPathFromDevice:eachPort]; <span class="synComment">// /dev/tty.xxxx</span> NSLog(<span class="synConstant">@&quot;</span><span class="synSpecial">%@\n</span><span class="synConstant">&quot;</span>, calloutPath); NSLog(<span class="synConstant">@&quot;</span><span class="synSpecial">%@\n</span><span class="synConstant">&quot;</span>, dialinPath); IOObjectRelease(eachPort); } IOObjectRelease(portIterator); } <span class="synComment">/*</span> <span class="synComment"> シリアルポートのデバイス名を取り出す関数</span> <span class="synComment"> */</span> <span class="synIdentifier">+ </span>(NSString *)stringPropertyOf:(io_object_t)aDevice forIOSerialKey:(NSString *)key { <span class="synComment">// ここが IOKit からシリアルポートのデバイス名を取り出している箇所</span> CFStringRef string = (CFStringRef)IORegistryEntryCreateCFProperty(aDevice, (__bridge CFStringRef)key, kCFAllocatorDefault, <span class="synConstant">0</span>); <span class="synStatement">return</span> (__bridge_transfer NSString *)string; } <span class="synComment">/*</span> <span class="synComment"> kIOCalloutDeviceKey: @&quot;/dev/cu.xxxxx&quot; を返す</span> <span class="synComment"> */</span> <span class="synIdentifier">+ </span>(NSString *)bsdCalloutPathFromDevice:(io_object_t)aDevice { <span class="synStatement">return</span> [<span class="synStatement">self</span> stringPropertyOf:aDevice forIOSerialKey:(NSString*)CFSTR(kIOCalloutDeviceKey)]; } <span class="synComment">/*</span> <span class="synComment"> kIODialinDeviceKey: @&quot;dev/tty.xxxxx&quot; を返す</span> <span class="synComment"> */</span> <span class="synIdentifier">+ </span>(NSString *)bsdDialinPathFromDevice:(io_object_t)aDevice { <span class="synStatement">return</span> [<span class="synStatement">self</span> stringPropertyOf:aDevice forIOSerialKey:(NSString*)CFSTR(kIODialinDeviceKey)]; } </pre><p>後、ORSSerialPort ライブラリでシリアルポートからの読み込みの部分をどう実装しているかと思ったのですが</p> <pre class="code lang-objc" data-lang="objc" data-unlink><span class="synComment">// ORSSerialPort.m</span> <span class="synComment">// 236行目</span> <span class="synIdentifier">- </span>(<span class="synType">void</span>)open; { <span class="synComment">// 288行目</span> <span class="synComment">// ここで非同期のシリアルポートを読むスレッド作成</span> dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, <span class="synConstant">0</span>), ^<span class="synError">{</span> <span class="synType">int</span> localPortFD = <span class="synStatement">self</span>.fileDescriptor; <span class="synType">struct</span> timeval timeout; <span class="synType">int</span> result=<span class="synConstant">0</span>; <span class="synStatement">while</span> (<span class="synStatement">self</span>.isOpen) <span class="synError">{</span> fd_set localReadFDSet; FD_ZERO(&amp;localReadFDSet); FD_SET(localPortFD, &amp;localReadFDSet); timeout.tv_sec = <span class="synConstant">0</span>; timeout.tv_usec = <span class="synConstant">100000</span>; <span class="synComment">// Check to see if port closed every 100ms</span> dispatch_semaphore_wait(<span class="synStatement">self</span>.selectSemaphore, DISPATCH_TIME_FOREVER); <span class="synComment">// デバイスに変化があったか</span> result = select(localPortFD+<span class="synConstant">1</span>, &amp;localReadFDSet, <span class="synConstant">NULL</span>, <span class="synConstant">NULL</span>, &amp;timeout); dispatch_semaphore_signal(<span class="synStatement">self</span>.selectSemaphore); <span class="synStatement">if</span> (!<span class="synStatement">self</span>.isOpen) <span class="synStatement">break</span>; <span class="synComment">// Port closed while select call was waiting</span> <span class="synStatement">if</span> (result &lt; <span class="synConstant">0</span>) <span class="synError">{</span> [<span class="synStatement">self</span> notifyDelegateOfPosixError]; <span class="synStatement">continue</span>; <span class="synError">}</span> <span class="synComment">// データの読み込みがあったデバイスが目的のデバイスでない</span> <span class="synStatement">if</span> (result == <span class="synConstant">0</span> || !FD_ISSET(localPortFD, &amp;localReadFDSet)) <span class="synStatement">continue</span>; <span class="synComment">// Data is available</span> <span class="synType">char</span> buf[<span class="synConstant">1024</span>]; <span class="synComment">// デバイスからデータの読み込み</span> <span class="synType">long</span> lengthRead = read(localPortFD, buf, <span class="synStatement">sizeof</span>(buf)); <span class="synStatement">if</span> (lengthRead&gt;<span class="synConstant">0</span>) <span class="synError">{</span> NSData *readData = [NSData dataWithBytes:buf length:lengthRead]; <span class="synComment">// 読み込んだデータを receiveData: メソッドで呼び出す</span> <span class="synStatement">if</span> (readData != <span class="synConstant">nil</span>) [<span class="synStatement">self</span> receiveData:readData]; <span class="synError">}</span> } }<span class="synError">)</span>; </pre><p> <br /> open <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E1%A5%BD%A5%C3%A5%C9">メソッド</a>を呼び出すと、データを読み込む別スレッドが dispatch_async 関数で作成されます。self.isOpen が NO になるとスレッドは終了します。[self receiveData:readData]; で読み込んだデータを下記のように</p> <pre class="code lang-objc" data-lang="objc" data-unlink><span class="synComment">// 539行目</span> <span class="synIdentifier"> - </span>(<span class="synType">void</span>)receiveData:(NSData *)data; { <span class="synComment">// serialPort:didReceiveData: メソッドは、プロコトル ORSSerialPortDelegate に準拠</span> <span class="synComment">// デリゲートに serialPort:didReceiveData: が実装されているか確認</span> <span class="synStatement">if</span> ([<span class="synStatement">self</span>.delegate respondsToSelector:<span class="synStatement">@selector</span>(serialPort:didReceiveData:)]) { <span class="synComment">//</span> dispatch_async(dispatch_get_main_queue(), ^<span class="synError">{</span> [<span class="synStatement">self</span>.delegate serialPort:<span class="synStatement">self</span> didReceiveData:data]; <span class="synError">}</span>); } dispatch_async(<span class="synStatement">self</span>.requestHandlingQueue, ^<span class="synError">{</span> [<span class="synStatement">self</span>.receiveBuffer appendData:data]; <span class="synComment">// データを受け取っていない場合、もう一度送る</span> <span class="synComment">// よく理解できなかった</span> [<span class="synStatement">self</span> checkResponseToPendingRequestAndContinueIfValid]; <span class="synError">}</span>); } </pre><p>プロコトル ORSSerialPortDelegate に準拠したデリゲートに送信しています。</p><p>私も IOKit を使用したシリアルポートの入手方法を探していましたが、以前は見つけることができませんでした。今回、ORSSerialPort ライブラリのソースで理解できたので再度調べたら、私が所有していた</p><br /> <p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B006POFAZU/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/415z91t8YbL._SL160_.jpg" class="hatena-asin-detail-image" alt="OS X and iOS Kernel Programming" title="OS X and iOS Kernel Programming"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B006POFAZU/yoshiakishome-22/">OS X and iOS Kernel Programming</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> Ole Henry Halvorsen,Douglas Clarke</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> Apress</li><li><span class="hatena-asin-detail-label">発売日:</span> 2011/12/15</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><a href="http://d.hatena.ne.jp/asin/B006POFAZU/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> and <a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS">iOS</a> Kernel Programming<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Chapter%2011">Chapter 11</a><br /> Serial Port Drivers<br /> Location 6089<br /> Accessing a Serial Port from User Space</p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00A6WOS1Y/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/51rFZqWjxDL._SL160_.jpg" class="hatena-asin-detail-image" alt="Mac OS X and iOS Internals: To the Apple's Core" title="Mac OS X and iOS Internals: To the Apple's Core"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00A6WOS1Y/yoshiakishome-22/">Mac OS X and iOS Internals: To the Apple's Core</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> Jonathan Levin</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> Wrox</li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/11/05</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><a href="http://d.hatena.ne.jp/asin/B00A6WOS1Y/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> Internals:A System Approach<br /> Chapter 10<br /> Extending the Kernel<br /> 10.2 The I/O Kit<br /> 10.5 Communicating with the Kernel</p><p>で見つけることが出来ました。ここでは説明しませんでしたが ORSSerialPort.m の - (void)open 関数では、シリアルポートが存在するか、シリアルポートの <a class="keyword" href="http://d.hatena.ne.jp/keyword/CTS">CTS</a>、DSR の状態チェックをする別のスレッドを作成しています。本当に ORSSerialPort ライブラリは綺麗にまとまっていますね。</p> KYoshiaki Raspberry Pi 2 Model B と IchigoJam プリント基板完成版を購入。 hatenablog://entry/8454420450095987068 2015-05-31T17:27:15+09:00 2015-05-31T18:44:16+09:00 図 1) Raspberry Pi 2 Model B またまたブログを書いてから日にちが経ってしまいましたが、Raspberry Pi 2 Model B を購入しました。直接、RSオンライン Raspberry Pi | 半導体・電子部品の通販 RSオンライン http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0914-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-Raspberry+Keywords+Japanese_Raspberry+Pi_B&gc… <p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150531165825" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150531/20150531165825.png" alt="f:id:KYoshiaki:20150531165825p:image" title="f:id:KYoshiaki:20150531165825p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 1) Raspberry Pi 2 Model B </p><p>またまたブログを書いてから日にちが経ってしまいましたが、Raspberry Pi 2 Model B を購入しました。</p><p>直接、RSオンライン</p> <pre>Raspberry Pi | <a class="keyword" href="http://d.hatena.ne.jp/keyword/%C8%BE%C6%B3%C2%CE">半導体</a>・電子部品の通販 RSオンライン <a href="http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0914-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-Raspberry+Keywords+Japanese_Raspberry+Pi_B&gclid=CjwKEAiAx4anBRDz6JLYjMDxoQYSJAA4loRmuv3JQWQDDpQyPTg0zX_dp2l6k75e7QfmFGewA4dTARoC3tLw_wcB">http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0914-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-Raspberry+Keywords+Japanese_Raspberry+Pi_B&gclid=CjwKEAiAx4anBRDz6JLYjMDxoQYSJAA4loRmuv3JQWQDDpQyPTg0zX_dp2l6k75e7QfmFGewA4dTARoC3tLw_wcB</a> </pre><p>から</p> <pre class="code" data-lang="" data-unlink>Raspberry Pi 2 Model B RS品番 832-6274 ¥4,800 開発ボード 用ケース, Raspberry Pi 2 B, Raspberry Pi B+用ケース, ABS樹脂, クリア RS品番 819-3658 ¥980 【通常配送】1~5営業日でお届け。納期は注文書画面又は受注のお知らせでご確認ください。 送料 ¥450 商品の合計 (税抜) ¥5,780 消費税 (商品 + 配送料) ¥498 合計 ¥6,728</pre><p>を購入しました。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> の録音が主な目的です。電源の規格は 5V、2A ですが、ウェブで調べて限り、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> 用電源 5.1V、2.1A を利用しても問題ないようです。</p><br /> <p>今回、SD カードの容量を大きめにしたかったので</p> <pre class="code" data-lang="" data-unlink>【Amazon.co.jp限定】Transcend microSDXCカード 64GB Class10 UHS-I対応 (無期限保証) TS64GUSDU1E (FFP) ¥ 3,880</pre><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CHHTOII/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/51lJBOru7lL._SL160_.jpg" class="hatena-asin-detail-image" alt="【Amazon.co.jp限定】Transcend microSDXCカード 64GB Class10 UHS-I対応 (無期限保証) TS64GUSDU1E (FFP)" title="【Amazon.co.jp限定】Transcend microSDXCカード 64GB Class10 UHS-I対応 (無期限保証) TS64GUSDU1E (FFP)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CHHTOII/yoshiakishome-22/">【Amazon.co.jp限定】Transcend microSDXCカード 64GB Class10 UHS-I対応 (無期限保証) TS64GUSDU1E (FFP)</a></p><ul><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%E9%A5%F3%A5%BB%A5%F3%A5%C9">トランセンド</a>・ジャパン</li><li><span class="hatena-asin-detail-label">メディア:</span> Personal Computers</li><li><a href="http://d.hatena.ne.jp/asin/B00CHHTOII/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>microSDXCカード 64GB を購入してみました。</p><br /> <p>Raspberry Pi の本家サイトには書かれていませんが、問題なく利用できます。</p><p>ただし、<a class="keyword" href="http://d.hatena.ne.jp/keyword/ExFAT">ExFAT</a> でフォーマットされた SD カードでは NOOBS <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%E9">インストーラ</a>が起動しません。</p><p>そこで、<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> の 'ディスクユーティリティ' で SDカードを選択し、FAT32 形式の2<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D1%A1%BC%A5%C6%A5%A3%A5%B7%A5%E7%A5%F3">パーティション</a>でフォーマットします。<br /> その後、最初の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D1%A1%BC%A5%C6%A5%A3%A5%B7%A5%E7%A5%F3">パーティション</a>に NOOBS をコピーすれば、問題なくインストールできます。<br /> <br /> 以前、書いたブログ</p> <pre>Raspberry Pi の入手方法と基本設定 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/04/20/182455">http://kyoshiaki.hatenablog.com/entry/2014/04/20/182455</a> 簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh 公開。 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748">http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh を同時録音に対応。Raspberry Pi に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Samba">Samba</a> をインストールして <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> で Raspberry Pi にアクセス。 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/07/30/194316">http://kyoshiaki.hatenablog.com/entry/2014/07/30/194316</a> </pre><p>を参考にしてください。</p><br /> <p>RASPBIAN <a class="keyword" href="http://d.hatena.ne.jp/keyword/X%20Window">X Window</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/GUI">GUI</a> が変わってしまいましたが、左上隅のメニュー/Preferences/<a class="keyword" href="http://d.hatena.ne.jp/keyword/WiFi">WiFi</a> Configuration で <a class="keyword" href="http://d.hatena.ne.jp/keyword/WiFi">WiFi</a> の設定ができます。設定方法は以前と変わらないので、上のブログを参考にしてください。<br /> <br /> </p> <pre>Benchmarking Raspberry Pi 2 | Raspberry Pi <a href="https://www.raspberrypi.org/benchmarking-raspberry-pi-2/">https://www.raspberrypi.org/benchmarking-raspberry-pi-2/</a> </pre><p>上記 URL より Raspberry Pi 2 の処理速度が Raspberry Pi より6倍速くなっているようです。<br /> 個人的意見ですが Raspberry Pi では <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> を録音した時間と同じくらい MP3 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%F3%A5%B3%A1%BC%A5%C9">エンコード</a>に時間かかっていたものが Raspberry Pi 2 では半分で終わります。この差は大きいです。</p><p>以前は SD カードが 16GB だったのですが、64GB になり、録音したファイルを数週間残しておけます。上のブログの cron 設定を少し変更し、 delete.py を毎日起動するようにしています。古くなったものは勝手に削除されるので、全く容量を気にする必要がありません。</p><br /> <p>後、IchigoJam プリント基板完成版</p> <pre>こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円) <a href="http://ichigojam.net/">http://ichigojam.net/</a> </pre><p>を購入しました。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 上での<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%A1%A1%BC%A5%E0%A5%A6%A5%A7%A5%A2">ファームウェア</a>アップデート、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Parallels%20Desktop">Parallels Desktop</a> 10 の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows%208">Windows 8</a> 上で BUFFALO PC-SDVD/U2G を使って PC 出力し、IchigoJamSerialConsole を使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/MacBook%20Pro">MacBook Pro</a> のキーボードで入力しています。実行画面を下図に載せておきます。次回にでもいろいろ紹介したいと思います。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150531165914" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150531/20150531165914.png" alt="f:id:KYoshiaki:20150531165914p:image" title="f:id:KYoshiaki:20150531165914p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 2) <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 版 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Parallels%20Desktop">Parallels Desktop</a> 10 の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows%208">Windows 8</a> 上で BUFFALO PC-SDVD/U2G PC出力、<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 上での IchigoJamSerialConsole 実行画面</p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0038KXV8C/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/31zba8KuuKL._SL160_.jpg" class="hatena-asin-detail-image" alt="BUFFALO モニターモード搭載 USB用ビデオキャプチャー PC-SDVD/U2G" title="BUFFALO モニターモード搭載 USB用ビデオキャプチャー PC-SDVD/U2G"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0038KXV8C/yoshiakishome-22/">BUFFALO モニターモード搭載 USB用ビデオキャプチャー PC-SDVD/U2G</a></p><ul><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D0%A5%C3%A5%D5%A5%A1%A5%ED%A1%BC">バッファロー</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2010/03/19</li><li><span class="hatena-asin-detail-label">メディア:</span> Personal Computers</li><li><span class="hatena-asin-detail-label">購入</span>: 22人 <span class="hatena-asin-detail-label">クリック</span>: 164回</li><li><a href="http://d.hatena.ne.jp/asin/B0038KXV8C/yoshiakishome-22" target="_blank">この商品を含むブログ (10件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p> KYoshiaki プチコン3号用マインスイーパ YOS_MINE と YOS_NEKO 公開キーの公開。縦長の画像を指定したサイズで分割し、それぞれの画像を PNG 形式 (72 dpi) のファイルに書き出すアプリケーション SliceImage 公開。Safari、プレビュー、拙作 SliceImage を使った Web ページの PDF 化。 hatenablog://entry/8454420450082827532 2015-02-08T13:46:32+09:00 2015-08-22T19:54:13+09:00 以前、ブログを書いてから随分立ちますがいろいろ取り組んでいました。その中でもニンテンドー 3DS ダウンロードソフト 'プチコン3号' 用のプログラムを2つ作成しました。2つともプチコン大喜利に投稿してみました。すでに Twitter や Miiverse で公開しましたが、公開キーと実行画面をブログにも載せておきます。 YOS_MINE マインスイーパ 開いたセルに書かれた数字の数だけ、周りのセルに旗を立てて、数字の書かれた セルをAボタンで押すと旗を立てていないセルを開くことができます。 公開キー E3AN3XZF YOS_NEKO 猫や犬が画面の中を駆け回るプログラムです 女の子は、十字… <p>以前、ブログを書いてから随分立ちますがいろいろ取り組んでいました。その中でも<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%F3%A5%C6%A5%F3%A5%C9%A1%BC">ニンテンドー</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/3DS">3DS</a> ダウンロードソフト '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>3号' 用のプログラムを2つ作成しました。2つとも<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C2%E7%B4%EE%CD%F8">大喜利</a>に投稿してみました。すでに <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> や <a class="keyword" href="http://d.hatena.ne.jp/keyword/Miiverse">Miiverse</a> で公開しましたが、公開キーと実行画面をブログにも載せておきます。</p> <pre>YOS_MINE <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%F3%A5%B9%A5%A4%A1%BC%A5%D1">マインスイーパ</a> 開いたセルに書かれた数字の数だけ、周りのセルに旗を立てて、数字の書かれた セルをAボタンで押すと旗を立てていないセルを開くことができます。 公開キー E3AN3XZF </pre> <pre>YOS_NEKO 猫や犬が画面の中を駆け回るプログラムです 女の子は、十字ボタン、スライドパッドで操作できます。女の子が移動すると 猫達が集まってきます。しばらくすると離れていきます。 公開キー 23N432QE </pre><p>YOS_MINE 実行画面</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121300" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121300.png" alt="f:id:KYoshiaki:20150208121300p:image" title="f:id:KYoshiaki:20150208121300p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 1) 初級画面</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121301" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121301.png" alt="f:id:KYoshiaki:20150208121301p:image" title="f:id:KYoshiaki:20150208121301p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 2) 中級画面</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121304" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121304.png" alt="f:id:KYoshiaki:20150208121304p:image" title="f:id:KYoshiaki:20150208121304p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 3) ゲームクリア時の下画面</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121303" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121303.png" alt="f:id:KYoshiaki:20150208121303p:image" title="f:id:KYoshiaki:20150208121303p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 4) ゲーム選択画面</p><p>YOS_NEKO 実行画面</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121302" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121302.png" alt="f:id:KYoshiaki:20150208121302p:image" title="f:id:KYoshiaki:20150208121302p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 5) YOS_NEKO<br /> <br /> <br /> </p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>3号 - 命令表 <a href="http://smileboom.com/special/ptcm3/reference/">http://smileboom.com/special/ptcm3/reference/</a> </pre><p>上記ウェブページを PDF 化するのに作成した <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> 用プログラム SliceImage を下記 URL で公開します。(実際には、PDF のダウンロードリンクが上記ページにあるので PDF 化する必要はありません。)</p> <pre>SliceImage version 1.0 【概要】 縦長の画像を指定したサイズで分割し、それぞれの画像を <a class="keyword" href="http://d.hatena.ne.jp/keyword/PNG">PNG</a> 形式 (72 dpi) の ファイルに書き出すアプリケーション。 【動作環境】 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.9 Mavericks 以上で動作します。 <a href="http://kyoshiaki.sakura.ne.jp/osx/Download/SliceImage.zip">http://kyoshiaki.sakura.ne.jp/osx/Download/SliceImage.zip</a> </pre><p>恥ずかしい話ですが、上部に PDF ファイルのリンクがあるのを見落としていました。実際には無駄になってしまいましたが、Web ページを PDF 化するのに役立つかもしれないと思い公開します。</p><br /> <br /> <p>【使用例】<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a>, 'プレビュー'、拙作 'SliceImage' を使ったウェブページの PDF 化</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>3号 - 命令表 <a href="http://smileboom.com/special/ptcm3/reference/">http://smileboom.com/special/ptcm3/reference/</a> </pre><p>上記ウェブページを PDF 化する過程で説明したいと思います。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> のメニュー/ファイル/プリント… で PDF 化できるのですが、色がついた画面をそのまま再現してくれません。</p><p>それで <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> の機能拡張 Awesome Screenshot 1.4.5 を利用します。</p><p><span style="color: #ff0000">注意) <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> などで検索すると Awesome Screenshot 機能拡張が訪問したサイトのURLを外部に送信している記述も見つかるので十分注意してください。使用後は、アンインストールしたほうが良いかもしれません。</span></p><br /> <p>まず、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> のメニュー/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a>/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> 機能拡張… を選択してください。表示されたウインドウをスクロールすると</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121731" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121731.png" alt="f:id:KYoshiaki:20150208121731p:image" title="f:id:KYoshiaki:20150208121731p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 6) <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> 機能拡張</p><p>上図のように Awesome Screenshot 機能拡張が見つかるはずです。アイコンをクリックしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121732" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121732.png" alt="f:id:KYoshiaki:20150208121732p:image" title="f:id:KYoshiaki:20150208121732p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 7) <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> 機能拡張</p><p>上図赤枠の部分 Install Now をクリックして Awesome Screenshot 機能拡張をインストールしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121733" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121733.png" alt="f:id:KYoshiaki:20150208121733p:image" title="f:id:KYoshiaki:20150208121733p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 8) Awesome Screenshot 機能拡張</p><p>インストールが成功すると Install Now という文字が Installed に変わり、上図のように<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の URL テキストフィールド左横に Awesome Screenshot 機能拡張アイコンが追加されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121749" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121749.png" alt="f:id:KYoshiaki:20150208121749p:image" title="f:id:KYoshiaki:20150208121749p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 9) 機能拡張</p><p>後、余計な機能が追加されるので <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> のメニュー/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a>/環境設定… を選び、’機能拡張’ タブから Awesome Screenshot を選び、</p> <pre>Enable similar product search powered by Superfish Enable price comparation </pre><p>のチェックマークを外してください。通常、ページを開くと有効にするか尋ねてくるので NO を選んでください。<br /> <br /> </p> <pre> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>3号 - 命令表 <a href="http://smileboom.com/special/ptcm3/reference/">http://smileboom.com/special/ptcm3/reference/</a> </pre><p>ここで、例として上の URL ページ全体 (実際に表示されて部分ではなく、スクロールして表示されるページ全体) を画像に保存したいと思います。</p><p>まず最初に、上の URL を <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> で開きます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121734" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121734.png" alt="f:id:KYoshiaki:20150208121734p:image" title="f:id:KYoshiaki:20150208121734p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 10) <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a> 3 号 - 命令表</p><p>上図 Awesome Screenshot 機能拡張アイコンをクリックし、メニュー</p> <pre>Capture Visible Part of Page : 表示されているエリアだけキャプチャ Capture Selected Area : マウスで選択したエリアだけキャプチャ Capture Entire Page : ページ全体をキャプチャ </pre><p>から、Capture Entire Page を選択してページ全体をキャプチャします。自動的にスクロールして下図のページが開きます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121735" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121735.png" alt="f:id:KYoshiaki:20150208121735p:image" title="f:id:KYoshiaki:20150208121735p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> <br /> 図 11) 編集</p><p>ここで文字を追加したり、線を描画できますが、何もせず上図のように Done ボタンをクリックして終了します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121736" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121736.png" alt="f:id:KYoshiaki:20150208121736p:image" title="f:id:KYoshiaki:20150208121736p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> <br /> 図 12) <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A1%BC%A5%F3%A5%B7%A5%E7%A5%C3%A5%C8">スクリーンショット</a></p><p>上図のように<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A1%BC%A5%F3%A5%B7%A5%E7%A5%C3%A5%C8">スクリーンショット</a>が画像として表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121737" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121737.png" alt="f:id:KYoshiaki:20150208121737p:image" title="f:id:KYoshiaki:20150208121737p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 13) <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A1%BC%A5%F3%A5%B7%A5%E7%A5%C3%A5%C8">スクリーンショット</a>保存</p><p>上図のように画像を右クリック(CTRL + 左クリック)してメニューから ‘イメージを別名で保存…’ を選択します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121738" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121738.png" alt="f:id:KYoshiaki:20150208121738p:image" title="f:id:KYoshiaki:20150208121738p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> <br /> 図 14) ダイアログ</p><p>上図のように保存するファイル名を尋ねられるので、reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> と入力します。保存する画像形式は <a class="keyword" href="http://d.hatena.ne.jp/keyword/PNG">PNG</a> イメージなので<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B3%C8%C4%A5%BB%D2">拡張子</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> を忘れずに追加してください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121739" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121739.png" alt="f:id:KYoshiaki:20150208121739p:image" title="f:id:KYoshiaki:20150208121739p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 15) スクリーンキャプチャ終了</p><p>図 14) より、保存先がデスクトップなので、デスクトップに reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> という名の画像ファイルが保存されているはずです。スクリーンキャプチャは終了したので、上図の赤枠の x ボタンをクリックしてタブを閉じてください。</p><p>デスクトップに PDF という名前のフォルダを作り、そこに先ほど保存したファイル reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> を移動します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121740" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121740.png" alt="f:id:KYoshiaki:20150208121740p:image" title="f:id:KYoshiaki:20150208121740p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 16) デスクトップ/PDF</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208133255" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208133255.png" alt="f:id:KYoshiaki:20150208133255p:image" title="f:id:KYoshiaki:20150208133255p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 17) SliceImage 実行画面</p> <pre>SliceImage version 1.0 【概要】 縦長の画像を指定したサイズで分割し、それぞれの画像を <a class="keyword" href="http://d.hatena.ne.jp/keyword/PNG">PNG</a> 形式 (72 dpi) の ファイルに書き出すアプリケーション。 【動作環境】 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.9 Mavericks 以上で動作します。 <a href="http://kyoshiaki.sakura.ne.jp/osx/Download/SliceImage.zip">http://kyoshiaki.sakura.ne.jp/osx/Download/SliceImage.zip</a> </pre><p>Finder 上で SliceImage をダブルクリックして起動し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%B8%A5%AA%A5%DC%A5%BF%A5%F3">ラジオボタン</a> ‘A4: 自動計算’ を選択します。refernece.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> ファイルを Finder 上からドラッグして、SliceImage ウインドウの茶色いエリアにドラッグ・ドロップしてください。</p><p>=================================================<br /> ファイル名: reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a><br /> サイズ: 2416.0 x 89278.0<br /> 分割サイズ: 3417.47096774194<br /> 合計(ファイル数): 27</p><p>reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> 画像ファイルの分割が終わると ‘情報’ テキストエリアに上の文字列が表示されます。(注意、画像が大きいと処理が終わるまでに随分時間がかかります。しばらくお待ちください。)</p><p>この場合、横: 2416 ピクセル、縦: 89728 ピクセルの画像 reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> を縦方向に約 3417 ピクセルで分割しています。画像ファイルは 27 個に分割されました。(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Retina">Retina</a> ディスプレイではない <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> の画面をキャプチャーすると reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> の縦横サイズは小さくなります。)</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121741" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121741.png" alt="f:id:KYoshiaki:20150208121741p:image" title="f:id:KYoshiaki:20150208121741p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 18) SliceImage 実行後</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121742" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121742.png" alt="f:id:KYoshiaki:20150208121742p:image" title="f:id:KYoshiaki:20150208121742p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 19) 1_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> から 27_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> を選択</p><p>Finder 上で 1_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> から 27_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> を上図のように選択します。<br /> (reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> アイコンの左上の何もないエリアを左クリックし、右下の方向にドラッグします。その後、そのまま下へドラッグするとスクロールするので 27_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> などの全てのアイコンが含まれるようにドラックして離します。すると全てのファイルが選択されている状態になります。シフトキーを押して、refrence.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> アイコンを左クリックしてください。 reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> アイコンが選択状態から外れます。)</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121743" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121743.png" alt="f:id:KYoshiaki:20150208121743p:image" title="f:id:KYoshiaki:20150208121743p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 20) プレビュー</p><p>Finder 上で 1_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> ファイルをダブルクリックします。すると上図のように ‘プレビュー’ が起動します。上図のように赤枠の部分のアイコンをクリックして、サムネールを選択します。下図のようにサムネールが表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121744" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121744.png" alt="f:id:KYoshiaki:20150208121744p:image" title="f:id:KYoshiaki:20150208121744p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 21) サムネール表示</p><p>上図のようにサムネールに 1_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> から 27_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> まで順番に並んでいるか確認して下さい。順番が違う場合は、サムネールに表示されている画像をドラッグして挿入したい場所に移動してください。(例えば、上図の 3_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> を 1_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> と 2_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> の間にドラッグ・ドロップすると 1_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a>、3_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a>、2_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> の順になります。)</p><p>また、27_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> だけ別ウインドウで開いてしまった場合は、そのウインドウを閉じ、Finder 上の 27_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> ファイルを ‘プレビュー’ 上のサムネールの 26_reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a> の上にドラッグして + の画像が現れたらドロップしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121745" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121745.png" alt="f:id:KYoshiaki:20150208121745p:image" title="f:id:KYoshiaki:20150208121745p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> <br /> 図 22) プリント</p><p>上図のように ‘プレビュー’ からメニュー/ファイル/プリント… を選択します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121746" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121746.png" alt="f:id:KYoshiaki:20150208121746p:image" title="f:id:KYoshiaki:20150208121746p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 23) PDF 化</p><p>SliceImage で今回 A4 サイズで収まるように画像を分割したので、用紙サイズは A4 に設定してください。<br /> 左下の PDF ポップアップメニューから ‘PDF として保存…’ を選択してください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121747" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121747.png" alt="f:id:KYoshiaki:20150208121747p:image" title="f:id:KYoshiaki:20150208121747p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> <br /> 図 24) PDF 化</p><p>保存ファイル名を入力してください。pdf 以外の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B3%C8%C4%A5%BB%D2">拡張子</a>が付いていると保存できないので、上図のように reference.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a>.pdf と入力してください。reference だけだと自動的に<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B3%C8%C4%A5%BB%D2">拡張子</a> pdf が付きます。’保存’ ボタンをクリックしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20150208121748" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20150208/20150208121748.png" alt="f:id:KYoshiaki:20150208121748p:image" title="f:id:KYoshiaki:20150208121748p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 25) PDF</p><p>保存した refrence.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a>.pdf ファイルを Finder 上でダブルクリックすると上図のようにプレビューで表示されます。</p><p>refrence.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a>.pdf ファイルに新規のページを追加したい場合は、テキストエディットで A4 サイズのページを1枚 PDF 化し、そのファイルを Finder 上から ‘プレビュー’ のサムネールの挿入したい位置の前のサムネイルにドラッグし、+ の画像が現れたらドロップします。’プレビュー’ のメニュー/ファイル/保存 を選択すると追加できます。</p><p>テキストエディットで refrence.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a>.pdf の目次を作成し、上記例のように refrence.<a class="keyword" href="http://d.hatena.ne.jp/keyword/png">png</a>.pdf の最初のページに追加すると <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> の GoodReader などで閲覧するのに便利です。</p> KYoshiaki OS X 10.9 Mavericks 上での Go インストール方法。CotEditor 用 Go 言語シンタックスカラーリング定義ファイル Go.plist と Go で作った初めてのプログラム zlist.go 公開。 hatenablog://entry/8454420450069233435 2014-10-19T13:51:05+09:00 2014-10-19T14:26:17+09:00 iPhone 6、iPhone 6 Plus が発売され、10月16日10時 (現地時間) のスペシャルイベントでは、新型iPad や Mac、OS X Yosemite も発表されました。特に、27 インチ iMac Retina 5K ディスプレイモデルは、15インチMacBook Pro Retina ディスプレイモデルを所有していなかったら、すぐにでも手に入れたいですね!OS X 10.10 Yosemite も、早速 MacBook Pro Retina にインストールしました。ただし、残り1分の表示から1時間かかりました。Homebrew などで /usr/local にデータをイ… <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> 6、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> 6 Plus が発売され、10月16日10時 (現地時間) の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%DA%A5%B7%A5%E3">スペシャ</a>ルイベントでは、新型<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> や <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Yosemite">Yosemite</a> も発表されました。特に、27 インチ <a class="keyword" href="http://d.hatena.ne.jp/keyword/iMac">iMac</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Retina">Retina</a> 5K ディスプレイモデルは、15インチ<a class="keyword" href="http://d.hatena.ne.jp/keyword/MacBook%20Pro">MacBook Pro</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Retina">Retina</a> ディスプレイモデルを所有していなかったら、すぐにでも手に入れたいですね!</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.10 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Yosemite">Yosemite</a> も、早速 <a class="keyword" href="http://d.hatena.ne.jp/keyword/MacBook%20Pro">MacBook Pro</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Retina">Retina</a> にインストールしました。ただし、残り1分の表示から1時間かかりました。Homebrew などで /usr/local にデータをインストールしていると残り1分の表示から1、2時間かかるようです。</p><br /> <p>もうすぐ <a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS%208">iOS 8</a>.1 も公開されます。拙作 iYKRSS は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> 6、 <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> 6 Plus に対応する予定です。しばらくお待ちください。<br /> <br /> </p> <pre>Docker - Build, Ship, and Run Any App, Anywhere <a href="https://www.docker.com/">https://www.docker.com/</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux">Linux</a> コンテナ管理ソフトウェア Docker の開発に使用されている<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC">プログラミング言語</a> Go に以前から興味を持っていました。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon">Amazon</a> で洋書を探してみると</p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/0321774639/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/41HDk0J8ZpL._SL160_.jpg" class="hatena-asin-detail-image" alt="Programming in Go: Creating Applications for the 21st Century (Developer's Library)" title="Programming in Go: Creating Applications for the 21st Century (Developer's Library)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/0321774639/yoshiakishome-22/">Programming in Go: Creating Applications for the 21st Century (Developer's Library)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> Mark Summerfield</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> Addison-Wesley Professional</li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/05/04</li><li><span class="hatena-asin-detail-label">メディア:</span> ペーパーバック</li><li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li><li><a href="http://d.hatena.ne.jp/asin/0321774639/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p> <pre>Programming in Go: Creating Applications for the 21st Century (Developer's Library) [<a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Edition] Mark Summerfield (Author) </pre><p>上記本が良さそうなので購入してみました。読み終えた感想は、struct フィールドの tags 利用方法、defer の解説など説明不足のところもあります。結局、 </p> <pre>Documentation - The Go Programming Language <a href="http://golang.org/doc/">http://golang.org/doc/</a> References </pre><p>を参照したり、Go のパッケージソースを参考にしました。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> に Go をインストール方法は、2通りあります。(残念ながら <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.9 Mavericks 上での説明になります。)</p><p>最初は、</p> <pre>Homebrew — The missing package manager for <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a href="http://brew.sh/">http://brew.sh/</a> </pre><p>Homebrew を使って、</p> <pre class="code" data-lang="" data-unlink>$ brew install go </pre><p>上記コマンドを実行してインストールする方法です。</p><p>.<a class="keyword" href="http://d.hatena.ne.jp/keyword/bash">bash</a>_profile ファイル</p> <pre class="code" data-lang="" data-unlink>export GOPATH=$HOME/go export GOROOT=/usr/local/opt/go/libexec export PATH=$PATH:$GOPATH/bin:$GOROOT/bin</pre><p>に上記内容を追加してください。</p><p>$GOPATH は、</p> <pre class="code" data-lang="" data-unlink>~ $ go get -u github.com/jessevdk/go-flags</pre><p>上記コマンド go get を使って、<a class="keyword" href="http://d.hatena.ne.jp/keyword/github">github</a> にあるパッケージをインストールするフォルダを指定するのに使います。この場合 go-flags パッケージを $GOPATH にインストールしています。go-flags を利用するには、ソースに</p> <pre class="code" data-lang="" data-unlink>import ( &#34;github.com/jessevdk/go-flags&#34; )</pre><p>上記のように import 宣言する必要があります。</p><p>後、コマンド godoc をインストールするには <a class="keyword" href="http://d.hatena.ne.jp/keyword/mercurial">mercurial</a> が必要なので</p> <pre class="code" data-lang="" data-unlink>~ $ brew install hg</pre><p>上記コマンドで hg をインストールしてください。</p> <pre class="code" data-lang="" data-unlink>~ $ go get code.google.com/p/go.tools/cmd/godoc</pre><p>上のコマンドを実行すると $GOROOT/bin に godoc コマンドがインストールされます。godoc の使い方は</p> <pre class="code" data-lang="" data-unlink>~ $ godoc fmt</pre><p>この場合は fmt パッケージのドキュメントが表示されます。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> などでドキュメントを見たい場合は、</p> <pre class="code" data-lang="" data-unlink>~ $ godoc -http=:8080</pre><p>上記コマンドを実行し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> で <a href="http://localhost:8080">http://localhost:8080</a> にアクセスしてください。</p><p>コマンド vet は</p> <pre class="code" data-lang="" data-unlink>~ $ go get code.google.com/p/go.tools/cmd/vet</pre><p>上記のようにインストールしてください。</p> <pre class="code" data-lang="" data-unlink>$ go vet zlist.go</pre><p>vet 単独コマンドではなく、上記のように利用してください。</p><br /> <p>基本的に Go では import するパッケージは $GOPATH/src に置くことになります。</p> <pre class="code" data-lang="" data-unlink>export GOPATH=$HOME/go:$HOME/Desktop/Book\ Sample/goeg</pre><p>のように : で分けて<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CA%A3%BF%F4">複数</a>のパスを宣言することもできます。</p> <pre class="code" data-lang="" data-unlink>export GOPATH=path</pre><p>なら</p> <pre class="code" data-lang="" data-unlink>path/ + src/ + shaper1/ + shape1.go | | | + shapes/ + shapes.go | + safemap/ + safemap.go </pre><p><br /> main プログラム shape1.go から shapes/shapes.go、safemap/safemap.go パッケージを利用するには</p> <pre class="code" data-lang="" data-unlink>import ( &#34;shaper1/shapes&#34; &#34;safemap&#34; )</pre><p>と宣言する必要があります。もちろん、main プログラムが $GOPATH 以外にあるときもパッケージを利用するには、上記のように宣言します。</p><br /> <p>もう一つの Go のインストール方法は、</p> <pre>Getting Started - The Go Programming Language <a href="http://golang.org/doc/install">http://golang.org/doc/install</a> </pre><p>を参考に</p> <pre>Downloads - The Go Programming Language <a href="https://golang.org/dl/">https://golang.org/dl/</a> </pre><p>から、</p> <pre>go1.3.3.<a class="keyword" href="http://d.hatena.ne.jp/keyword/darwin">darwin</a>-<a class="keyword" href="http://d.hatena.ne.jp/keyword/amd64">amd64</a>-osx10.8.tar.gz Archive <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.8+ 64-bit go1.3.3.<a class="keyword" href="http://d.hatena.ne.jp/keyword/darwin">darwin</a>-<a class="keyword" href="http://d.hatena.ne.jp/keyword/amd64">amd64</a>-osx10.8.pkg Installer <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.8+ 64-bit </pre><p>上記バイナリパッケージ、どちらかをダウンロードし、</p><p>go1.3.3.<a class="keyword" href="http://d.hatena.ne.jp/keyword/darwin">darwin</a>-<a class="keyword" href="http://d.hatena.ne.jp/keyword/amd64">amd64</a>-osx10.8.tar.gz の場合、ターミナルで</p> <pre class="code" data-lang="" data-unlink>~ $ tar -C /usr/local -xzf ~/Downloads/go1.3.1.darwin-amd64-osx10.8.tar.gz </pre><p>上記コマンドを実行してインストールしてください。</p> <pre>go1.3.3.<a class="keyword" href="http://d.hatena.ne.jp/keyword/darwin">darwin</a>-<a class="keyword" href="http://d.hatena.ne.jp/keyword/amd64">amd64</a>-osx10.8.pkg Installer <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.8+ 64-bit </pre><p>go1.3.3.<a class="keyword" href="http://d.hatena.ne.jp/keyword/darwin">darwin</a>-<a class="keyword" href="http://d.hatena.ne.jp/keyword/amd64">amd64</a>-osx10.8.pkg の場合は、Finder 上でダブルクリックしてインストールしてください。</p><p>.<a class="keyword" href="http://d.hatena.ne.jp/keyword/bash">bash</a>_profile に</p> <pre class="code" data-lang="" data-unlink>export GOPATH=$HOME/go export GOROOT=/usr/local/go export PATH=$PATH:$GOPATH/bin:$GOROOT/bin</pre><p>を設定してください。バイナリパッケージは /usr/local/go にインストールされます。</p><br /> <p>Go についての感想は、すべてのオブジェクトを interface{} で表したり、クラスや継承がサポートされなかったり、また、ソースや Reference の読み方に慣れるまで苦労しました。</p><p>struct フィールドの tags の理解するのにパッケージソースを参考にしました。パッケージのソースは $GOROOT/src/pkg にあります。</p><p>tags の理解には、$GOROOT/src/pkg/reflect/type.go の</p> <pre>763行目 func (tag StructTag) Get(key string) string { </pre><p>が参考になります。</p> <pre>peco/peco · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/peco/peco">https://github.com/peco/peco</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Bash">Bash</a> - pecoの基礎の基礎 - Qiita <a href="http://qiita.com/xtetsuji/items/05f6f4c1b17854cdd75b">http://qiita.com/xtetsuji/items/05f6f4c1b17854cdd75b</a> </pre><p>上記サイトも Go プログラミングがどんなものか理解するのに役立ちました。</p><br /> <p>Go のパッケージソースにメモを付けたいので、必要なソースを PDF 化する時に CotEditor</p> <pre>CotEditor -Text Editor for <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a href="http://coteditor.github.io/">http://coteditor.github.io/</a> </pre><p>を利用しました。PDF 書類にメモを書き込むには、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> 純正の 'プレビュー' を使っています。Go の文法をハイライトするために、Go の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>を色分けする<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>カラーリング定義ファイル Go.plist を作成しました。Go で初めて作ったプログラム zlist.go と一緒に下記 URL<br /> <br /> </p> <pre>CotEditor 用の Go 言語<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>カラーリング定義ファイル Go.plist と Go で作った初めてのプログラム zlist.go 公開。 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/go_example.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/go_example.zip</a> </pre><p><br /> で公開します。メニュー/CotEditor/環境設定の 'フォーマット' タブで</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20141019131110" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20141019/20141019131110.png" alt="f:id:KYoshiaki:20141019131110p:image" title="f:id:KYoshiaki:20141019131110p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>上図のようにウインドウ一番下、中央のギアアイコンから、'読み込み...' を選択し、上記 URL に含まれる Go.plist を選んでください。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>カラーを <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> に近づけるため</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20141019131111" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20141019/20141019131111.png" alt="f:id:KYoshiaki:20141019131111p:image" title="f:id:KYoshiaki:20141019131111p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>上図のように<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>カラーリングを変更すると見やすくなります。</p><br /> <p>いろいろな<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%AD%A5%B9%A5%C8%A5%A8%A5%C7%A5%A3%A5%BF">テキストエディタ</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>カラーリングファイルは</p> <pre class="code" data-lang="" data-unlink>$GOROOT/misc</pre><p>にあります。</p><br /> <p>以前は、ソースの PDF 化には、mi</p> <pre>mi - <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%AD%A5%B9%A5%C8%A5%A8%A5%C7%A5%A3%A5%BF">テキストエディタ</a> <a href="http://www.mimikaki.net/">http://www.mimikaki.net/</a> </pre><p>を使っていたのですが、デフォルトの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>カラーリング対応言語が少ないのであきらめました。また、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> から <a class="keyword" href="http://d.hatena.ne.jp/keyword/Jedit">Jedit</a> X Plus を購入して使用しているのですが、'メニュー/ファイル/ページ設定...' で拡大縮小を設定し、'メニュー/ファイル/プリントで PDF 化する' を選択すると、ページごとに縮小してしまい、思ったように縮小してくれません。その点、CotEditor は、全体を問題なく縮小してくれます。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>カラーリング作成には Kate の go.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> が参考にしやすいです。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Vim">Vim</a>、Kate などいろいろ試しましたが、PDF 化には CotEditor が一番使いやすいです。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> の場合、</p> <pre class="code" data-lang="" data-unlink>$GOROOT/misc/xcode/4/go4xcode.sh</pre><p>を実行すれば良いのですが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> から <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> をダウンロードした場合、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> の所有権が root になっています。Homebrew を使って Go をインストールした場合は、go4xcode.sh ファイルの先頭、 set -e の後に </p> <pre class="code" data-lang="" data-unlink>GOROOT=/usr/local/opt/go/libexec</pre><p>を追加し、また、バイナリパッケージを使ってインストールした場合は、</p> <pre class="code" data-lang="" data-unlink>GOROOT=/usr/local/go</pre><p>を追加してください。その後、下記のように sudo ./go4xcode.sh を実行してください。</p> <pre class="code" data-lang="" data-unlink>~ $ 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 &#39;sudo rm -rf /var/folders/*&#39; 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 $ </pre><p>上記説明にあるように、</p> <pre class="code" data-lang="" data-unlink>/usr/local/opt/go/libexec/misc/xcode/4 $ sudo rm -rf /var/folders/*</pre><p>を実行し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> を起動します。<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で Go のソースファイルを開いた後、メニュー/Editor/Syntax Color/Go を選ぶと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>がカラーリングされます。Go ファイルを開いても自動でカラーリングされないので注意してください。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Vim">Vim</a> の場合、</p> <pre>macvim - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Vim">Vim</a> for the <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Project Hosting <a href="https://code.google.com/p/macvim/">https://code.google.com/p/macvim/</a> </pre><p>ターミナル上で <a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> を使用するのも良いのですが、折角なので、上記 URL から MacVim をダウンロードしました。設定は共通のようです。</p><p>インストールされた Go の</p> <pre class="code" data-lang="" data-unlink>$GOROOT/misc/vim/syntax/go.vim </pre><p>にある go.<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> を</p> <pre class="code" data-lang="" data-unlink>~/.vim/ftdetect/go.vim:</pre><p>にコピーするとシンタク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AB%A5%E9%A1%BC">スカラー</a>リングされます。</p><br /> <p>しかし、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Vim">Vim</a> には、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>管理<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB">ツール</a> neobundle.<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> があるので、こちらを利用する方がお勧めです。</p> <pre>Shougo/neobundle.<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/Shougo/neobundle.vim">https://github.com/Shougo/neobundle.vim</a> </pre><p>インストールするには</p> <pre class="code" data-lang="" data-unlink>~ $ curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh | sh</pre><p>を実行し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を実行すると下記内容</p> <pre class="code" data-lang="" data-unlink>Please write NeoBundle initial setting to your vimrc path ... &#34;NeoBundle Scripts----------------------------- if has(&#39;vim_starting&#39;) set nocompatible &#34; Be iMproved &#34; Required: set runtimepath+=/Users/yoshiaki/.vim/bundle/neobundle.vim/ endif &#34; Required: call neobundle#begin(expand(&#39;/Users/yoshiaki/.vim/bundle&#39;)) &#34; Let NeoBundle manage NeoBundle &#34; Required: NeoBundleFetch &#39;Shougo/neobundle.vim&#39; &#34; My Bundles here: NeoBundle &#39;Shougo/neosnippet.vim&#39; NeoBundle &#39;Shougo/neosnippet-snippets&#39; NeoBundle &#39;tpope/vim-fugitive&#39; NeoBundle &#39;kien/ctrlp.vim&#39; NeoBundle &#39;flazz/vim-colorschemes&#39; &#34; You can specify revision/branch/tag. NeoBundle &#39;Shougo/vimshell&#39;, { &#39;rev&#39; : &#39;3787e5&#39; } &#34; Required: call neobundle#end() &#34; Required: filetype plugin indent on &#34; If there are uninstalled bundles found on startup, &#34; this will conveniently prompt you to install them. NeoBundleCheck &#34;End NeoBundle Scripts-------------------------</pre><p>が表示されます。</p> <pre class="code" data-lang="" data-unlink>&#34;NeoBundle Scripts-----------------------------</pre><p>の次の行から</p> <pre class="code" data-lang="" data-unlink>&#34;End NeoBundle Scripts-------------------------</pre><p>の上の行まで、ファイル .vimrc としてホームディレクトリに保存します。</p><br /> <p>次に、下記のようにターミナルで <a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> を実行するとパッケージをインストールするか聞いてくるので y を選択してください。</p> <pre class="code" data-lang="" data-unlink>~ $ vim Not installed bundles: [&#39;vimshell&#39;, &#39;ctrlp.vim&#39;, &#39;vim-colorschemes&#39;, &#39;vim-fugitive&#39;, &#39;neosnippet.vim&#39;, &#39;neosnippet-snippets&#39;] Install bundles now? (y)es, [N]o: y</pre><p><br /> Go の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Vim">Vim</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>、ファイラーなど</p> <pre>Shougo/unite.<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/Shougo/unite.vim">https://github.com/Shougo/unite.vim</a> vimfiler.<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> をインストールするのに unite.<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> が必要。 Shougo/vimfiler.<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/Shougo/vimfiler.vim">https://github.com/Shougo/vimfiler.vim</a> fatih/<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a>-go · <a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> <a href="https://github.com/fatih/vim-go">https://github.com/fatih/vim-go</a> </pre><p>をインストールします。</p><p>~/.vimrc ファイルの</p> <pre class="code" data-lang="" data-unlink>&#34; My Bundles here: NeoBundle &#39;Shougo/neosnippet.vim&#39; NeoBundle &#39;Shougo/neosnippet-snippets&#39; NeoBundle &#39;tpope/vim-fugitive&#39; NeoBundle &#39;kien/ctrlp.vim&#39; NeoBundle &#39;flazz/vim-colorschemes&#39;</pre><p>の次に</p> <pre class="code" data-lang="" data-unlink>NeoBundle &#39;Shougo/unite.vim’ NeoBundle &#39;Shougo/vimfiler.vim’ NeoBundle &#39;fatih/vim-go&#39;</pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/github">github</a>.com の ’名前/パッケージ名’ を追加し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Vim">Vim</a> を起動すると</p> <pre class="code" data-lang="" data-unlink>~ $ vim Not installed bundles: [&#39;unite.vim&#39;, &#39;vimfiler&#39;, &#39;vim-go&#39;] Install bundles now? (y)es, [N]o: y</pre><p>と聞いてくるので y を選択してください。これで終了です。Finder 上で MacVim をダブルクリックし、:VimFiler (:<a class="keyword" href="http://d.hatena.ne.jp/keyword/Vim">Vim</a> と入力した後、Tab キーを押してください。補完されます。) と入力して Return キーを押します。ファイラーが起動します。カーソルキーと Return キーで移動し、編集したい Go ソースファイル名で e キーを押してください。シンタク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AB%A5%E9%A1%BC">スカラー</a>リングされているはずです。:q で終了です。</p><br /> <p>Kate の場合、</p><p>Kate は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/KDE">KDE</a> が必要なので、Paralells Desktop 10 上に </p> <pre>Main Page - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux%20Mint">Linux Mint</a> <a href="http://www.linuxmint.com/">http://www.linuxmint.com/</a> </pre><p>から</p> <pre>Download - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux%20Mint">Linux Mint</a> <a href="http://www.linuxmint.com/download.php">http://www.linuxmint.com/download.php</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/KDE">KDE</a> 32-bit 64-bit An edition featuring the <a class="keyword" href="http://d.hatena.ne.jp/keyword/KDE">KDE</a> desktop Yes </pre><p>の <a class="keyword" href="http://d.hatena.ne.jp/keyword/KDE">KDE</a> 64-bit 版をダウンロードしインストールしました。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の</p> <pre class="code" data-lang="" data-unlink>$GOROOT/misc/kate/go.xml</pre><p>ファイル go.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> を Mint 側のデスクトップにコピーし、</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux%20Mint">Linux Mint</a> 側の</p> <pre class="code" data-lang="" data-unlink>~/.kde/share/apps/kate</pre><p>フォルダに syntax フォルダ作成し、デスクトップの go.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> ファイルを ~/.<a class="keyword" href="http://d.hatena.ne.jp/keyword/kde">kde</a>/share/apps/kate/syntax にコピーします。</p> <pre class="code" data-lang="" data-unlink>~/.kde/share/apps/kate $ mkdir syntax ~/.kde/share/apps/kate $ cp ~/Desktop/go.xml syntax/</pre><p>これで、Kate で Go ソースファイルを開くと Go の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>がハイライトされます。</p> KYoshiaki Radiko 録音スクリプト rec_radiko2.sh を同時録音に対応。Raspberry Pi に Samba をインストールして iPhone と Mac で Raspberry Pi にアクセス。 hatenablog://entry/12921228815729173771 2014-07-30T19:43:16+09:00 2019-04-01T19:23:34+09:00 iTunes Podcast Apple Special Event, WWDC 14 Apple Keynotes iOS App 2014 Session Video WWDC WWDC - Apple 以前、ブログを書いてから随分日にちが経ってしまいましたが、上記の 2014 WWDC 基調講演、セッションビデオを見ました。一番の話題はプログラミング言語 Swift だと思います。 The Swift Programming Language The Swift Programming Language - Apple Inc. Using Swift with Cocoa and Ob… <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/iTunes">iTunes</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Podcast">Podcast</a> Apple Special Event, <a class="keyword" href="http://d.hatena.ne.jp/keyword/WWDC">WWDC</a> 14 <a href="https://itunes.apple.com/jp/podcast/apple-keynotes/id275834665?mt=2&uo=4" target="itunes_store">Apple Keynotes</a> </pre> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS">iOS</a> App 2014 Session Video WWDC <a href="https://itunes.apple.com/jp/app/wwdc/id640199958?mt=8&uo=4" target="itunes_store">WWDC - Apple</a> </pre><p>以前、ブログを書いてから随分日にちが経ってしまいましたが、上記の 2014 <a class="keyword" href="http://d.hatena.ne.jp/keyword/WWDC">WWDC</a> 基調講演、セッションビデオを見ました。一番の話題は<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC">プログラミング言語</a> Swift だと思います。</p> <pre>The Swift Programming Language <a href="https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11&uo=4" target="itunes_store">The Swift Programming Language - Apple Inc.</a> </pre> <pre>Using Swift with <a class="keyword" href="http://d.hatena.ne.jp/keyword/Cocoa">Cocoa</a> and <a class="keyword" href="http://d.hatena.ne.jp/keyword/Objective-C">Objective-C</a> <a href="https://itunes.apple.com/jp/book/using-swift-cocoa-objective/id888894773?mt=11&uo=4" target="itunes_store">Using Swift with Cocoa and Objective-C - Apple Inc.</a> </pre><p>上記 URL のブックを <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> で読み終えました。個人的な感想は次回にでも書きたいと思います。 <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A1%BC%A5%F3%A5%B7%A5%E7%A5%C3%A5%C8">スクリーンショット</a>からステータスバーを取り除く処理を毎回画像編集ソフトで行うのも面倒なので、Swift で作ってみました。いずれ公開してみたいですね。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko.jp">Radiko.jp</a> プレミアムは、1つのID/パスワードで、同時にログイン可能な機器が3つまでです。私が公開している rec_radiko2.sh <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>は、同時録音に対応していません。不便なので、修正してみました。</p><p>ただし、rec_radiko2.sh ファイル 8 行目</p> <pre class="code" data-lang="" data-unlink>cookiefile=&#34;/tmp/pre_cookie.txt&#34;</pre><p>を</p> <pre class="code" data-lang="" data-unlink>cookiefile=&#34;/tmp/pre_cookie_${pid}_${date}.txt&#34;</pre><p>に変更しただけです。これで問題無いと思うのですが!あまり自信はありません。これで同じ時間帯に3つまで rec_radiko2.sh が実行できるように crontab で設定できます。</p><p><span style="color: #ff0000">追記: 2019/04/01(Mon) 19:17:08</span></p><p><span style="color: #ff0000"><a class="keyword" href="http://d.hatena.ne.jp/keyword/Flash">Flash</a> 版の <a class="keyword" href="http://d.hatena.ne.jp/keyword/RTMP">RTMP</a> を利用した拙作 rec_radiko2.sh ではなく、HLS配信データを保存する rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_live.sh を使用してください。詳しい解説、ダウンロードリンク先は下記 URL を参照してください。</span><br /> </p> <pre>rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_live.sh <a href="https://github.com/kyoshiaki/yplayer/blob/master/tools/README.md">https://github.com/kyoshiaki/yplayer/blob/master/tools/README.md</a> </pre><p><br /> 同時録音できるように修正した rec_radiko2.sh は、下記 URL </p> <pre><del>同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip</a></del> </pre> <pre>タイムフリーの仕様変更に対応した 同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip</a> </pre><p>で公開します。<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> アプリでログインしていると同時にログインしている機器に数えられるので注意してください。忘れずにログアウトしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140806000838" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140806/20140806000838.png" alt="f:id:KYoshiaki:20140806000838p:image" title="f:id:KYoshiaki:20140806000838p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 1 </p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> アプリのログアウトは、放送局を選択した後、上図のように画面下にある '設定' タブをタップし、</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184047" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184047.png" alt="f:id:KYoshiaki:20140730184047p:image" title="f:id:KYoshiaki:20140730184047p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 2 </p><p>上図のように 'ログアウト' を選択してください。</p><p>よくある問題なのですが <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> アプリでラジオ音声の再生に失敗することがあります。ログアウトしてからログインし直すとラジオ音声の再生に成功します。それでもだめなら、ログアウトしてから Home ボタンを 2 回素早く押し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> アプリを上部にスワイプして完全に終了させます。できればすべてのアプリを終了させてください。それから <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> の電源を長押しして <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> の電源を切ります。電源ボタンを押して <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> を再起動し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> アプリをタップして起動させ、ログインしてください。これでラジオ音声の再生に成功するはずです。</p><br /> <p>前回予告した <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> に Samba をインストールして</p> <pre><del>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh 公開。 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748">http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748</a></del> </pre> <pre>タイムフリーの仕様変更に対応した 同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip</a> </pre><p>で録音した <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 音声を <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPod%20touch">iPod touch</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> で再生する方法を紹介したいと思います。<br /> <br /> </p> <pre>Setting up a SAMBA Server on <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> | TheUrbanPenguin <a href="http://theurbanpenguin.com/wp/?p=2415">http://theurbanpenguin.com/wp/?p=2415</a> </pre><p>上記 URL を参考に Samba をインストールしました。簡単に説明したいと思います。</p><br /> <p>まず、最初に <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> を使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のターミナルから <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> にログインします。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の入手方法と基本設定 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/04/20/182455">http://kyoshiaki.hatenablog.com/entry/2014/04/20/182455</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> の設定、基本的な使い方は上記 URL を参考にしてください。</p> <pre class="code" data-lang="" data-unlink>~ $ ssh pi@192.168.xx.xx pi@192.168.1.14&#39;s password: pi@raspberrypi ~ $ </pre><p><br /> コマンド apt-get を使って Samba をインストールするのに必要なパッケージをインストールします。次に /data <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リを指定したアクセス権限で作成し、smb.conf のバックアップを作成します。(sudo コマンドはスーパーユーザー (root) の特権レベルでコマンドを実行します。)</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get install samba samba-common-bin pi@raspberrypi ~ $ sudo mkdir -m 1777 /data pi@raspberrypi ~ $ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.$(date +%F)</pre><pre class="code" data-lang="" data-unlink>/etc/samba/smb.conf/$(date +%F) ではなく /etc/samba/smb.conf.$(date +%F) なので注意してください。 (samba.conf の後にドットが入ります。)</pre><p>sudo <a class="keyword" href="http://d.hatena.ne.jp/keyword/bash">bash</a> で root ユーザーで <a class="keyword" href="http://d.hatena.ne.jp/keyword/bash">bash</a> を起動します。</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ sudo bash root@raspberrypi:/home/pi#</pre><p>先ほど保存した smb.conf.2014-xx-xx ファイルを ls コマンドで確認します。</p> <pre class="code" data-lang="" data-unlink>root@raspberrypi:/home/pi# cd /etc/samba root@raspberrypi:/etc/samba# ls dhcp.conf gdbcommands smb.conf smb.conf.2014-xx-xx root@raspberrypi:/etc/samba#</pre><p>smb.conf.2014-xx-xx ファイルを参考に <a class="keyword" href="http://d.hatena.ne.jp/keyword/grep">grep</a> コマンドで smb.conf ファイルを作成します。<br /> (ファイル名 smb.conf.2014-xx-xx の 2014-xx-xx の部分は、ls コマンドで表示されたものに置き換えてください。)</p> <pre class="code" data-lang="" data-unlink>root@raspberrypi:/etc/samba# grep -ve ^# -ve &#39;^;&#39; -ve ^$ smb.conf.2014-xx-xx &gt; smb.conf root@raspberrypi:/etc/samba# ls dhcp.conf gdbcommands smb.conf smb.conf.2014-xx-xx root@raspberrypi:/etc/samba# </pre><p>エディタ nano を使って</p> <pre class="code" data-lang="" data-unlink>root@raspberrypi:/etc/samba# nano smb.conf</pre><p>ファイル smb.conf の最後に</p> <pre class="code" data-lang="" data-unlink>[data] comment = Data share path = /data browseable = yes read only = no</pre><p>を追加します。CTRL+O でファイル名が表示されるので Return キー押して保存し、CTRL+X で nano を終了します。</p><p>シェル <a class="keyword" href="http://d.hatena.ne.jp/keyword/bash">bash</a> を終了して Samba を再起動します。</p> <pre class="code" data-lang="" data-unlink>root@raspberrypi:/etc/samba# exit exit pi@raspberrypi ~ $ sudo service samba restart [ ok ] Stopping Samba daemons: nmbd smbd. [ ok ] Starting Samba daemons: nmbd smbd. pi@raspberrypi ~ $ </pre><p>コマンド smbpasswd を使って root、pi のパスワードを設定してください。通常、パスワードは raspberry で良いと思います。(root、pi のパスワードは、あらかじめ設定されている raspberry ではないものに変更したほうが危険性は少ないです。)</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ sudo smbpasswd -a root pi@raspberrypi ~ $ sudo smbpasswd -a pi</pre><p>exit コマンドで <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> を終了してください。</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ exit logout Connection to 192.168.xx.xx closed. ~ $ </pre><p>これで Samba の設定は終わりです。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPod%20touch">iPod touch</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> にアクセスするには</p> <pre>GoodReader 4 カテゴリ: 仕事効率化 ¥700 <a href="https://itunes.apple.com/jp/app/goodreader-4/id777310222?mt=8&uo=4" target="itunes_store">GoodReader 4 - Good.iWare Ltd.</a> Documents 5 カテゴリ: 仕事効率化 無料 <a href="https://itunes.apple.com/jp/app/documents-5-gao-su-pdf-rida/id364901807?mt=8&uo=4" target="itunes_store">Documents 5 – 高速 PDF リーダー、メディアプレーヤー、ダウンロードマネージャ - Readdle</a> FileExplorer Free カテゴリ: ユーティリティ 無料 <a href="https://itunes.apple.com/jp/app/fileexplorer-free/id510282524?mt=8&uo=4" target="itunes_store">FileExplorer Free - Steven Zhang</a> FileExplorer カテゴリ: ユーティリティ ¥500 <a href="https://itunes.apple.com/jp/app/fileexplorer/id499470113?mt=8&uo=4" target="itunes_store">FileExplorer - Steven Zhang</a> </pre><p>などを使います。FileExplorer Free 版の制限は</p><p>1つのコンピュータにしかアクセスできません。<br /> リモートコンピュータのファイルを管理できません。<br /> AVI, <a class="keyword" href="http://d.hatena.ne.jp/keyword/MKV">MKV</a>, <a class="keyword" href="http://d.hatena.ne.jp/keyword/XVID">XVID</a> などの動画を再生できません。<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Dropbox">Dropbox</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Drive">Google Drive</a>、Box、SkyDrive、<a class="keyword" href="http://d.hatena.ne.jp/keyword/WebDAV">WebDAV</a> は利用できません。</p><p>です。有料版 FileExplorer ¥500 を購入すると制限は解除されます。ファイルをダウンロードせずストリーミング再生できるので便利です。ただし <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音した音声を MP3 形式に変換中、書き出したファイルにアクセスしてストリーミング再生すると、書き出しを中断してしまいます。注意してください。</p><p>無料版を選択するなら Document 5 一択だと思います。(日本語<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%ED%A1%BC%A5%AB%A5%E9%A5%A4%A5%BA">ローカライズ</a>されています。)</p><p>個人的には、有料ですが GoodReader 4 を推薦します。GoodReader は、色々なバージョンがありますが、2014/07/22(Tue) 現在 GoodReader 4 が最新版だと思います。残念なのは日本語に対応していません。</p><p>ここでは</p> <pre>GoodReader 4 カテゴリ: 仕事効率化 ¥700 <a href="https://itunes.apple.com/jp/app/goodreader-4/id777310222?mt=8&uo=4" target="itunes_store">GoodReader 4 - Good.iWare Ltd.</a> </pre><p>を使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> にアクセスする方法を紹介したいと思います。他のアプリでもファイルサーバー名を <a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows">Windows</a> か SMB にするかの違いだけでほとんど同じだと思います。</p><br /> <p>GoodReader 4 を起動します。(<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPod%20touch">iPod touch</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> でもほとんど同じです。ここでは、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> を基準にします。)</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184901" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184901.png" alt="f:id:KYoshiaki:20140730184901p:image" title="f:id:KYoshiaki:20140730184901p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 3 </p><p>上図のように、最初に <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> 内にある My Documents フォルダの中身が表示されます。ここでは、あらかじめ用意された Downloads フォルダと私が作った radio フォルダが表示されています。フォルダを作成するには、右上上部の <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730183213" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730183213.png" alt="f:id:KYoshiaki:20140730183213p:image:w24" title="f:id:KYoshiaki:20140730183213p:image:w24" class="hatena-fotolife" style="width:24px" itemprop="image"></a></span> アイコンをタップします。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184902" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184902.png" alt="f:id:KYoshiaki:20140730184902p:image" title="f:id:KYoshiaki:20140730184902p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 4 </p><p>上図のようにコマンド一覧が表示されます。ファイル名左横の◯を選択して、ファイルを削除したり、上図赤枠の New Folder ボタンをタップすると新規のフォルダが作成できます。下部の黒いエリアを左へスワイプすると次のページを開くことができます。右へスワイプすると戻ります。ファイル管理を終了するには、右上上部の <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730183213" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730183213.png" alt="f:id:KYoshiaki:20140730183213p:image:w24" title="f:id:KYoshiaki:20140730183213p:image:w24" class="hatena-fotolife" style="width:24px" itemprop="image"></a></span> アイコンをもう一度タップします。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184903" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184903.png" alt="f:id:KYoshiaki:20140730184903p:image" title="f:id:KYoshiaki:20140730184903p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 5 </p><p>図 3) の <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730183211" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730183211.png" alt="f:id:KYoshiaki:20140730183211p:image:w24" title="f:id:KYoshiaki:20140730183211p:image:w24" class="hatena-fotolife" style="width:24px" itemprop="image"></a></span> Connect ボタンをタップすると上図のようにサーバーにアクセスする画面が開きます。画面下の Servers ボタンをタップしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184904" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184904.png" alt="f:id:KYoshiaki:20140730184904p:image" title="f:id:KYoshiaki:20140730184904p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 6 </p><p>上図の Add ボタンをタップすると接続するサーバー選択画面が下図のように開きます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184905" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184905.png" alt="f:id:KYoshiaki:20140730184905p:image" title="f:id:KYoshiaki:20140730184905p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 7 </p><p>スクロールして上図のように SMB Server をタップしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184906" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184906.png" alt="f:id:KYoshiaki:20140730184906p:image" title="f:id:KYoshiaki:20140730184906p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 8 </p><p>上図のように入力画面が開きます。</p> <pre>Readable Title: 名前 Network address: IP アドレス User: ユーザー名 Password: パスワード (パスワードは Samba を <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> にインストールした時に使ったコマンド pi@raspberrypi ~ $ sudo smbpasswd -a pi で設定したパスワードです。) </pre><p>上記内容を入力してください。上図も参考になるはずです。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184907" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184907.png" alt="f:id:KYoshiaki:20140730184907p:image" title="f:id:KYoshiaki:20140730184907p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 9 </p><p>これで、上図のように先ほど指定した <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> のサーバー名が表示されます。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の文字列をタップしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184908" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184908.png" alt="f:id:KYoshiaki:20140730184908p:image" title="f:id:KYoshiaki:20140730184908p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 10 </p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> が <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の Samba サーバーにアクセスし、中身が上図のように表示されます。上図 pi フォルダの中身を表示したいので、名前 pi の右横 <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730183212" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730183212.png" alt="f:id:KYoshiaki:20140730183212p:image:w24" title="f:id:KYoshiaki:20140730183212p:image:w24" class="hatena-fotolife" style="width:24px" itemprop="image"></a></span> をタップしてください。(注意、フォルダの移動は、フォルダ名ではなく <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730183212" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730183212.png" alt="f:id:KYoshiaki:20140730183212p:image:w24" title="f:id:KYoshiaki:20140730183212p:image:w24" class="hatena-fotolife" style="width:24px" itemprop="image"></a></span> をタップしてください。フォルダの名前をタップするとフォルダが選択されてしまいます。もう一度タップすると選択は解除されます。)</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184909" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184909.png" alt="f:id:KYoshiaki:20140730184909p:image" title="f:id:KYoshiaki:20140730184909p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 11 </p><p>上図のように pi フォルダの中身が表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184910" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184910.png" alt="f:id:KYoshiaki:20140730184910p:image" title="f:id:KYoshiaki:20140730184910p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 12 </p><p>ダウンロードしたい MP3 ファイルがあるフォルダまで移動し、上図のようにMP3 ファイル名をタップして選択してください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184911" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184911.png" alt="f:id:KYoshiaki:20140730184911p:image" title="f:id:KYoshiaki:20140730184911p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 13 </p><p>ここでは、TBS_2014-07-22-13-00.mp3 ファイルを選択しています。上図、右下赤枠部分の Download ボタンをタップしてファイルをダウンロードします。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184912" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184912.png" alt="f:id:KYoshiaki:20140730184912p:image" title="f:id:KYoshiaki:20140730184912p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 14 </p><p>すると保存先を尋ねてくるので <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> の My Documents フォルダが開きます。(以前のフォルダの位置を覚えているので、必ず、My Documents フォルダが開くわけではありません。左上のフォルダ名をタップすると親フォルダに移動できます。)</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184913" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184913.png" alt="f:id:KYoshiaki:20140730184913p:image" title="f:id:KYoshiaki:20140730184913p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 15 </p><p>保存先のフォルダに > アイコンをタップして移動します。上部中央に表示されている名前が保存先フォルダです。ここでは <a class="keyword" href="http://d.hatena.ne.jp/keyword/tama">tama</a> という名前のフォルダです。上図、右下赤枠部分の Download file here ボタンをタップして、このフォルダをダウンロード先として指定します。ダウンロードが始まります。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184914" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184914.png" alt="f:id:KYoshiaki:20140730184914p:image" title="f:id:KYoshiaki:20140730184914p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 16 </p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の中身を表示している画面に変わります。右上赤枠部分 Close をタップして閉じてください。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の Samba サーバーへのアクセスを終了します。(ダウンロードは続いています。)</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184915" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184915.png" alt="f:id:KYoshiaki:20140730184915p:image" title="f:id:KYoshiaki:20140730184915p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 17 </p><p>左下、Downloads ボタンをタップするとダウンロード中のファイル名が表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184916" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184916.png" alt="f:id:KYoshiaki:20140730184916p:image" title="f:id:KYoshiaki:20140730184916p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 18 </p><p>ダウンロードが終了したら、上図、左下赤枠部分の << をタップして、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> の My Documents フォルダを開いてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184917" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184917.png" alt="f:id:KYoshiaki:20140730184917p:image" title="f:id:KYoshiaki:20140730184917p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 19 </p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> の My Document 内の <a class="keyword" href="http://d.hatena.ne.jp/keyword/tama">tama</a> フォルダに移動し、先ほどダウンロードした TBS_2014-07-22-13-00.mp3 ファイル名をタップしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730184918" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730184918.png" alt="f:id:KYoshiaki:20140730184918p:image" title="f:id:KYoshiaki:20140730184918p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 20 </p><p>上図のように再生が始まります。30 秒ごとの早送り、巻き戻しボタンもあります。上図、左上赤枠部分 << をタップすると <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> の My Documents フォルダ内を表示する起動画面に戻ることができます。右下タブに Player タブが追加されています。再生中の曲にアクセスしたい時に利用します。</p><br /> <br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> から <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> にアクセするには、Finder を使います。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730185756" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730185756.png" alt="f:id:KYoshiaki:20140730185756p:image" title="f:id:KYoshiaki:20140730185756p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 21 </p><p>上図のように Finder のメニュー/移動/サーバへ接続... を選択すると下図のようなウインドウが開きます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730185757" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730185757.png" alt="f:id:KYoshiaki:20140730185757p:image" title="f:id:KYoshiaki:20140730185757p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 22 </p><p>サーバアドレスに、先頭に smb:// を付けて <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の IP アドレスを入力します。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の IP アドレスが 192.168.1.4 なら smb://192.168.1.4 になります。サーバアドレスを入力したら、右下の接続ボタンをクリックしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730185758" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730185758.png" alt="f:id:KYoshiaki:20140730185758p:image" title="f:id:KYoshiaki:20140730185758p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 23 </p><p>上図のようにログイン画面が開くので</p> <pre>ユーザーの種類: 登録ユーザー 名前: pi パスワード: raspberry </pre><pre class="code" data-lang="" data-unlink>(パスワードは Samba を Raspberry Pi にインストールした時に使ったコマンド pi@raspberrypi ~ $ sudo smbpasswd -a pi で設定したパスワードです。)</pre><p>上図のように上記内容を入力し、右下の接続ボタンをクリックしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730185759" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730185759.png" alt="f:id:KYoshiaki:20140730185759p:image" title="f:id:KYoshiaki:20140730185759p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 24 </p><p>ボリューム選択画面が開くので pi を選択し、OK ボタンをクリックします。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730185800" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730185800.png" alt="f:id:KYoshiaki:20140730185800p:image" title="f:id:KYoshiaki:20140730185800p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 25 </p><p>上図のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の /home/pi フォルダを Finder で表示します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730185801" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730185801.png" alt="f:id:KYoshiaki:20140730185801p:image" title="f:id:KYoshiaki:20140730185801p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 26 </p><p>/home/pi/radio/<a class="keyword" href="http://d.hatena.ne.jp/keyword/tama">tama</a> フォルダに移動すると <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> プレミアムで録音した TBS ラジオ 'たまむすび' の録音ファイルが上図のように表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730185802" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730185802.png" alt="f:id:KYoshiaki:20140730185802p:image" title="f:id:KYoshiaki:20140730185802p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 27 </p><p>マウスカーソルを TBS_2014-07-22-13_00.mp3 ファイルのアイコンに重ねると、上図のように再生ボタンがあらわれます。再生ボタンをクリックすると MP3 ファイルのストリーミング再生が始まります。ダウンロードする必要はありません。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140730185803" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140730/20140730185803.png" alt="f:id:KYoshiaki:20140730185803p:image" title="f:id:KYoshiaki:20140730185803p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 28 </p><p>再生ボタンが上図のように停止ボタンに変わります。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の接続を切るには、上図左下、共有の Rapberry Pi の IP アドレス横のイジェクトボタンをクリックしてください。</p> KYoshiaki 簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh 公開。 hatenablog://entry/12921228815723236529 2014-05-04T18:47:48+09:00 2019-04-01T19:25:50+09:00 簡易radiko録音ツール。要swftools https://gist.github.com/saiten/875864 簡易Radiko録音スクリプト https://gist.github.com/matchy2/3956266 上記 URL を参考に radiko.jp プレミアム対応の簡易 Radiko 録音スクリプト rec_radiko2.sh を作成してみました。引数として放送局のステーション id、録音時間、メールアドレス、パスワードなどを渡すと mp3 形式ファイルを作成します。(スクリプトを実行すると録音が始まります。)追記: 2019/04/01(Mon) 19:17:… <pre>簡易<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>録音ツール。要<a class="keyword" href="http://d.hatena.ne.jp/keyword/swftools">swftools</a> <a href="https://gist.github.com/saiten/875864">https://gist.github.com/saiten/875864</a> </pre> <pre>簡易<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a>録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> <a href="https://gist.github.com/matchy2/3956266">https://gist.github.com/matchy2/3956266</a> </pre><p><br /> 上記 URL を参考に <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応の簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh を作成してみました。引数として放送局のステーション id、録音時間、メールアドレス、パスワードなどを渡すと mp3 形式ファイルを作成します。(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を実行すると録音が始まります。)</p><p><span style="color: #ff0000">追記: 2019/04/01(Mon) 19:17:08</span></p><p><span style="color: #ff0000"><a class="keyword" href="http://d.hatena.ne.jp/keyword/Flash">Flash</a> 版の <a class="keyword" href="http://d.hatena.ne.jp/keyword/RTMP">RTMP</a> を利用した拙作 rec_radiko2.sh ではなく、HLS配信データを保存する rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_live.sh を使用してください。詳しい解説、ダウンロードリンク先は下記 URL を参照してください。</span><br /> </p> <pre>rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_live.sh <a href="https://github.com/kyoshiaki/yplayer/blob/master/tools/README.md">https://github.com/kyoshiaki/yplayer/blob/master/tools/README.md</a> </pre><p><br /> 下記 URL で公開します。</p> <pre><del>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip</a></del> </pre> <pre><del>同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip</a></del> </pre> <pre>タイムフリーの仕様変更に対応した 同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip</a> </pre><p>同時録音版の詳しい詳細は、下記 URL</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh を同時録音に対応。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> に Samba を インストールして <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> にアクセス。 <a href="http://kyoshiaki.hatenablog.com/entries/2014/07/30">http://kyoshiaki.hatenablog.com/entries/2014/07/30</a> </pre><p>を参照してください。</p><br /> <p>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh では、Login チェックと Logout 処理も追加してみました。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の sh (dash) は、シェル関数に対応していません。それで <a class="keyword" href="http://d.hatena.ne.jp/keyword/bash">bash</a> で動作するように指定しています。Logout 処理がプログラム的に正しいのかあまり自信がありません。本来は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> でフォークして公開すべきなのですが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> を利用したことがないのでブログで公開しています。<a class="keyword" href="http://d.hatena.ne.jp/keyword/GitHub">GitHub</a> で公開するほどのプログラムもないし、git の使い方も精通していないのが現状です。</p><br /> <p>また、rec_radiko2.sh の 105 行目から 118 行目のコメント# をは外すと</p> <pre>jq <a href="http://stedolan.github.io/jq/">http://stedolan.github.io/jq/</a> </pre><p>jq を使用してエリアーフリー、有料会員のチェックを行なうことができます。最初は無効になっています。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 13.10、<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mavericks">Mavericks</a> で動作確認をしています。</p><br /> <p>1) <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mavericks">Mavericks</a> の場合</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.9 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mavericks">Mavericks</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音する方法。 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/02/23/183535">http://kyoshiaki.hatenablog.com/entry/2014/02/23/183535</a> </pre><p>基本的に上記 URL の rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>.sh を rec_radiko2.sh に置き換えて読んでください。<br /> 上記 URL で説明し忘れましたが、</p> <pre>Homebrew — <a class="keyword" href="http://d.hatena.ne.jp/keyword/MacPorts">MacPorts</a>は酒でも飲みたくなるでしょ?じゃあHomebrewを使おう! <a href="http://brew.sh/index_ja.html">http://brew.sh/index_ja.html</a> </pre><p>Homebrew をインストールする前に <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> を使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> をダウンロードし、ターミナル上で</p> <pre class="code" data-lang="" data-unlink>~$ xcode-select --install ~$ sudo xcodebuild -license</pre><p>上記コマンドを使い、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%DE%A5%F3%A5%C9%A5%E9%A5%A4%A5%F3">コマンドライン</a>ツールをインストールする必要があります。一度 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> を起動すると sudo xcodebuild -license は必要ないかもしれません。</p> <pre>jq <a href="http://stedolan.github.io/jq/">http://stedolan.github.io/jq/</a> </pre><p>コマンド jq のインストールは、ターミナル上で</p> <pre class="code" data-lang="" data-unlink>~ $ brew install jq</pre><p>を実行してください。</p><p>rec_radiko2.sh の引数については、最後に書いてある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の説明を参考にしてください。</p><br /> <p>2) <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ubuntu">Ubuntu</a> 13.10 の場合</p><p>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム版録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh を実行できるように必要なプログラムをインストールする必要があります。</p><p>Terminal 上で</p> <pre class="code" data-lang="" data-unlink>$ sudo apt-get update $ sudo apt-get install rtmpdump swftools libxml2-utils ffmpeg libavcodec-extra-53 </pre><p>上記 コマンドを実行してインストールしてください。</p><p>その後、</p> <pre><del>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip</a></del> </pre> <pre><del>同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip</a></del> </pre> <pre>タイムフリーの仕様変更に対応した 同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip</a> </pre><p>上記 URL から rec_radiko2.sh をダウンロードし、</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.9 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mavericks">Mavericks</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音する方法。 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/02/23/183535">http://kyoshiaki.hatenablog.com/entry/2014/02/23/183535</a> </pre><p>上記 URL の crontab -e 設定を参考にしてください。</p><p>Rhythmbox で MP3 形式ファイルを再生できるように</p> <pre class="code" data-lang="" data-unlink>$ sudo apt-get install ubuntu-restricted-extras</pre><p>を実行してください。また、<a class="keyword" href="http://d.hatena.ne.jp/keyword/python">python</a> がインストールされていない場合は</p> <pre class="code" data-lang="" data-unlink>$ sudo apt-get install python</pre><p>上記コマンドでインストールしてください。</p><p>rec_radiko2.sh の引数については、次に書いてある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の説明を参考にしてください。</p><br /> <p>3) <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の場合</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> を設定するには、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のターミナルから <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> を使う必要があります。<a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> の設定、基本的な使い方は</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の入手方法と基本設定 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/04/20/182455">http://kyoshiaki.hatenablog.com/entry/2014/04/20/182455</a> </pre><p>上記 URL を参考にしてください。</p><p>上記 URLで説明してある通り <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の IP アドレスを確認する必要があります。 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> を <a class="keyword" href="http://d.hatena.ne.jp/keyword/HDMI">HDMI</a> ケーブルでテレビに接続し、USB端子にキーボード、マウスを繋ぎ、SDカードを挿入します。また LAN ケーブルか USB 無線 LAN アダプタを接続してください。最後に電源を入れます。</p> <pre>Usename: pi パスワード: raspberry </pre><p>でログインし、コマンド ifconfig -a を実行します。</p> <pre class="code" data-lang="" data-unlink>$ ifconfig -a wlan0 Link encap:Ethernet HWaddr **:**:**:**:**:** inet addr:192.168.xx.xx Bcast:192.168.xx.255 Mask:255.255.255.0</pre><p>USB 無線 LAN アダプタの場合、wlan0 の inet addr:192.168.xx.xx が目的の IP アドレス 192.168.xx.xx です。<br /> LAN ケーブルの場合、en0 の inet addr:192.168.xx.xx が目的の IP アドレス 192.168.xx.xx です。</p><br /> <p>まず、簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh を実行できるように必要なプログラムをインストールする必要があります。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のターミナルで <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> を使って、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> にログインし</p> <pre class="code" data-lang="" data-unlink>~ $ ssh pi@192.168.xx.xx pi@192.168.xx.xx&#39;s password: pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get install rtmpdump swftools libxml2-utils ffmpeg</pre><p>上記コマンドを使ってインストールしてください。</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ exit logout Connection to 192.168.1.14 closed. ~ $ </pre><p>一度、コマンド exit で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> をログアウトします。</p><p>次に、</p> <pre><del>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip</a></del> </pre> <pre><del>同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip</a></del> </pre> <pre>タイムフリーの仕様変更に対応した 同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> で上記 URL から rec_radiko2.zip をダウンロードします。Finder 上でダブルクリックして展開します。展開されて作成されたフォルダ rec_radiko2 をデスクトップに移動します。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のターミナルで、次のコマンド</p> <pre class="code" data-lang="" data-unlink>~ $ cd Desktop/rec_radiko2/ ~/Desktop/rec_radiko2 $ scp rec_radiko2.sh pi@192.168.xx.xx:/home/pi ~/Desktop/rec_radiko2 $ scp delete.py pi@192.168.xx.xx:/home/pi ~/Desktop/rec_radiko2 $ </pre><p>scp を使って rec_radiko2.sh、delete.py ファイルを <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> の /home/pi <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リにコピーします。</p><p>rec_radiko2.sh の引数は</p> <pre class="code" data-lang="" data-unlink>rec_radiko2.sh &lt;channel_name_id&gt; &lt;minutes&gt; &lt;mail address&gt; &lt;password&gt; [outputdir] [prefix]</pre><p>です。</p><p>引数の詳細は</p> <pre class="code" data-lang="" data-unlink>channel_name_id: 放送局の station id minutes: 何分録音するか mail address: radiko.jp プレミアムにログインするメールアドレス password: radiko.jp プレミアムにログインするパスワード outputdir: 出力するディレクトリ [prefix]: 保存ファイル名の先頭文字。指定されない場合 channel_name_id が使われます。 例) pi@raspberrypi ~ $ ./rec_radiko2.sh TBS 1 mail password TBS を 1分間録音してカレントディレクトリに名前の先頭が TBS のファイル を MP3 形式で保存します。 pi@raspberrypi ~ $ ./rec_radiko2.sh TBS 120 mail pasword radio TBSラジオを 120分録音してカレントディレクトリの radio ディレクトリに 名前の先頭が TBS のファイルを MP3 形式で保存します。</pre><p>です。</p><p>放送局の station id は</p> <pre><del>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip</a></del> </pre> <pre><del>同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip</a></del> </pre> <pre>タイムフリーの仕様変更に対応した 同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip</a> </pre><p>に含まれる <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_<a class="keyword" href="http://d.hatena.ne.jp/keyword/curl">curl</a>_area.sh を使ってダウンロードされる <a class="keyword" href="http://d.hatena.ne.jp/keyword/XML">XML</a> ファイルで確認できます。 </p><p>まず、最初に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のターミナル上で</p> <pre class="code" data-lang="" data-unlink>~/Desktop/rec_radiko2 $ ./radiko_curl_area.sh</pre><p>を実行してください。</p><p>地域別の放送局情報 <a class="keyword" href="http://d.hatena.ne.jp/keyword/XML">XML</a> が<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C5%D4%C6%BB">都道</a>府県別に JP1.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> ~ JP47.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> という名前のファイルでダウンロードされます。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/ISO%203166-2">ISO 3166-2</a>:JP - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Wikipedia">Wikipedia</a> <a href="https://ja.wikipedia.org/wiki/ISO_3166-2:JP">https://ja.wikipedia.org/wiki/ISO_3166-2:JP</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C5%D4%C6%BB">都道</a>府県コードは上記 URL を参照してください。</p><p>放送局情報 <a class="keyword" href="http://d.hatena.ne.jp/keyword/XML">XML</a>ファイルの</p> <pre>JP13.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a>: 東京 JP27.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a>: 大阪 </pre><p>です。</p> <pre class="code" data-lang="" data-unlink>===== JP13.xml ===== &lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34; ?&gt; &lt;stations area_id=&#34;JP13&#34; area_name=&#34;TOKYO JAPAN&#34;&gt; &lt;station&gt; &lt;id&gt;TBS&lt;/id&gt; &lt;name&gt;TBSラジオ&lt;/name&gt; . . . &lt;/station&gt; &lt;station&gt; &lt;id&gt;QRR&lt;/id&gt; &lt;name&gt;文化放送&lt;/name&gt; &lt;ascii_name&gt;JOQR BUNKA HOSO&lt;/ascii_name&gt; . . . &lt;/station&gt; &lt;/stations&gt;</pre><p>の </p> <pre class="code lang-xml" data-lang="xml" data-unlink><span class="synIdentifier">&lt;stations </span><span class="synType">area_id</span>=<span class="synConstant">&quot;JP13&quot;</span><span class="synIdentifier"> </span><span class="synType">area_name</span>=<span class="synConstant">&quot;TOKYO JAPAN&quot;</span><span class="synIdentifier">&gt;</span> </pre><p>area_name が<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C5%D4%C6%BB">都道</a>府県です。この場合、東京都です。</p> <pre class="code lang-xml" data-lang="xml" data-unlink><span class="synIdentifier">&lt;station&gt;</span> <span class="synIdentifier">&lt;/station&gt;</span> </pre><p>で囲まれた部分が放送局です。</p> <pre class="code lang-xml" data-lang="xml" data-unlink> <span class="synIdentifier">&lt;station&gt;</span> <span class="synIdentifier">&lt;id&gt;</span>TBS<span class="synIdentifier">&lt;/id&gt;</span> <span class="synIdentifier">&lt;name&gt;</span>TBSラジオ<span class="synIdentifier">&lt;/name&gt;</span> </pre><p><id></id> で囲まれた部分が channel_name_id: 放送局の station id です。この場合、TBS です。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のターミナル上で下記のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> を使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> にログインし、</p> <pre class="code" data-lang="" data-unlink>~ $ ssh pi@192.168.xx.xx pi@192.168.xx.xx&#39;s password: . pi@raspberrypi ~ $ ./rec_radiko2.sh TBS 1 mail password . . === Logout: radiko.jp === Stream mapping: Stream #0.0 -&gt; #0.0 Press ctrl-c to stop encoding size= 940kB time=60.12 bitrate= 128.0kbits/s video:0kB audio:939kB global headers:0kB muxing overhead 0.015906%</pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh が正しく動作するか、rec_radiko2.sh TBS 1 mail password を実行してください。mail、password は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアムにログインする時に使用するメールアドレスとパスワードです。TBS ラジオを1分間録音し MP3 形式ファイルに書き込んでいます。(長時間録音すると MP3 形式に変換するのに時間がかかるので注意してください。)</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ ls delete.py public_html radio run.sh Desktop python_games rec_radiko2.sh svnc.sh pi.conf radiko_wget_area.sh rec_radiko.sh TBS_2014-xx-xx-xx_xx.mp3 pi@raspberrypi ~ $ </pre><p>上記のように TBS_2014-xx-xx-xx_xx.mp3 が目的のファイルです。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140504182646" class="hatena-fotolife" itemprop="url"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140504/20140504182646.png" alt="f:id:KYoshiaki:20140504182646p:image" title="f:id:KYoshiaki:20140504182646p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>システム環境設定を開いて '共有/リモートログイン' にチェックを入れてください。上図の右中央部分の 'リモードログイン: 入' 文字列の下に </p> <pre class="code" data-lang="" data-unlink>このコンピュータにリモートログインするには、 &#34;ssh username@192.168.yy.yy&#34; と入力してください。</pre><p>と表示されているはずです。IP アドレス: 192.168.yy.yy、username を確認して下さい。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> から <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> にコマンド scp を使って</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ scp TBS_2014-xx-xx-xx_xx.mp3 username@192.168.yy.yy:/Users/username</pre><p>TBS_2014-xx-xx-xx_xx.mp3 ファイルを <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A1%BC%A5%E0%A5%D5%A5%A9%A5%EB%A5%C0">ホームフォルダ</a>にコピーします。<br /> 上記 scp コマンドで IP アドレス 1箇所と username を2箇所間違いなく置き換えてください。</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ scp TBS_2014-xx-xx-xx_xx.mp3 username@192.168.yy.yy:/Users/username The authenticity of host &#39;192.168.yy.yy (192.168.yy.yy)&#39; can&#39;t be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added &#39;192.168.yy.yy&#39; (RSA) to the list of known hosts. Password: TBS_2014-xx-xx-xx_xx.mp3 100% 940KB 939.5KB/s 00:01 pi@raspberrypi ~ $ </pre><p>ホストの認証が確立できないので続けて良いか尋ねられますが、yes とタイプし、 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> にログインする時に使うパスワードを入力してください。これでコピーできるはずです。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A1%BC%A5%E0%A5%D5%A5%A9%A5%EB%A5%C0">ホームフォルダ</a>を Finder 上で開き、TBS_2014-xx-xx-xx_xx.mp3 ファイルにカーソルを合わせてしばらくすると再生ボタンが現れるのでクリックしてください。再生されるはずです。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.9 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mavericks">Mavericks</a> で <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音する方法。 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/02/23/183535">http://kyoshiaki.hatenablog.com/entry/2014/02/23/183535</a> </pre><p>上記 URL にも cron の説明があります。私は <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> 上で <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアムを cron を使ってタイマー録音しています。</p><p>いちいちコマンド scp を使ってコピーするのは面倒なので、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> に Samba をインストールして <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の Finder から直接再生したり、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> (<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPod%20touch">iPod touch</a>) から </p> <pre>Documents 5 (Free) カテゴリ: 仕事効率化 無料 <a href="https://itunes.apple.com/jp/app/documents-5-gao-su-pdf-rida/id364901807?mt=8&uo=4" target="itunes_store">Documents 5 – 高速 PDF リーダー、メディアプレーヤー、ダウンロードマネージャ - Readdle</a> GoodReader for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> カテゴリ: 仕事効率化 ¥500 <a href="https://itunes.apple.com/jp/app/goodreader-for-iphone/id306277111?mt=8&uo=4" target="itunes_store">GoodReader for iPhone - Good.iWare Ltd.</a> GoodReader 4 (GoodReader 最新版) カテゴリ: 仕事効率化 ¥300 <a href="https://itunes.apple.com/jp/app/goodreader-4/id777310222?mt=8&uo=4" target="itunes_store">GoodReader 4 - Good.iWare Ltd.</a> </pre><p>上記アプリを使って MP3 ファイルをダウンロードし、再生しています。有料ですが GoodReader for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a> は30秒早送りもできるので便利です。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> に Samba をインストールする方法と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の Finder からアクセスする方法、上記アプリの使用方法は次回説明したいと思います。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> での cron 設定は、まず <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のターミナル上でコマンド <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> を実行し <a class="keyword" href="http://d.hatena.ne.jp/keyword/Raspberry%20Pi">Raspberry Pi</a> にログインします。</p> <pre class="code" data-lang="" data-unlink>~ $ ssh pi@192.168.xx.xx pi@192.168.xx.xx&#39;s password: Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l pi@raspberrypi ~ $ crontab -e</pre><p>上のように crontab -e を実行します。</p> <pre class="code" data-lang="" data-unlink># # m h dom mon dow command 0 8 * * 0 /home/pi/delete.py -y -d /home/pi/radio 12 0 1 * * 0,5 /home/pi/rec_radiko2.sh LFR 120 mail password /home/pi/radio/night 0 1 * * 2 /home/pi/rec_radiko2.sh TBS 120 mail password /home/pi/radio/junk 0 13 * * 1-5 /home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama</pre><p>エディタ nano が起動します。カーソルキーで一番下に移動し、上記内容を入力してください。画面下に表示されているように CTRL+O を入力するとファイル名が表示されるので Return Key を押して保存します。CTRL+X で終了してください。mail (3箇所)、password (3箇所) は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアムにログインする時に使用するメールアドレスとパスワードです。</p><p>この場合、</p> <pre class="code" data-lang="" data-unlink>日曜日、午前8時にスクリプト /home/pi/delete.py -y -d /home/pi/radio 12 を実行します。 ニッポン放送 (LFR) 日曜日と金曜日、午前1時から2時間、&#39;オールナイトニッポン (オードリー、ナインティナイン)&#39; を録音します。 TBS ラジオ (TBS) 火曜日、午前1時から2時間、&#39;月曜 JUNK 伊集院光 深夜の馬鹿力&#39; を録音します。 TBS ラジオ (TBS) 月曜日から金曜日まで、午後1時から2時間30分、&#39;たまむすび&#39; を録音します。</pre><p>です。</p><p>録音した MP3 ファイルを保存する radio <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リ</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ mkdir radio</pre><p>を作成し、radio <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リ内に night、junk、<a class="keyword" href="http://d.hatena.ne.jp/keyword/tama">tama</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リをそれぞれ</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ cd radio pi@raspberrypi ~/radio $ mkdir night pi@raspberrypi ~/radio $ mkdir junk pi@raspberrypi ~/radio $ mkdir tama pi@raspberrypi ~/radio $ </pre><p>上記のように作成してください。</p><p>crontab の日付時刻設定は</p> <pre class="code" data-lang="" data-unlink># # m h dom mon dow command # 何分(0-59) 何時(0-23) 何日(1-31) 何月(1-12) 何曜日(0-6) コマンド 0 8 * * 0 /home/pi/delete.py -y -d /home/pi/radio 12 0 1 * * 0,5 /home/pi/rec_radiko2.sh LFR 120 mail password /home/pi/radio/night 0 1 * * 2 /home/pi/rec_radiko2.sh TBS 120 mail password /home/pi/radio/junk 0 13 * * 1-5 /home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama 数字は、時刻、日付、曜日を表し、 * は、毎月、毎日、毎時、毎分です。 曜日は 0: 日曜日 1: 月曜日 2: 火曜日 3: 水曜日 4: 木曜日 5: 金曜日 6: 土曜日</pre><p>です。</p> <pre class="code" data-lang="" data-unlink>0 1 * * 0,5 /home/pi/rec_radiko2.sh LFR 120 mail password /home/pi/radio/night</pre><p>0,5 は、複数の曜日を指定しています。日曜日と金曜日を表しています。</p> <pre class="code" data-lang="" data-unlink>0 13 * * 1-5 /home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama</pre><p>1-5 は、複数の曜日を指定しています。月曜日から金曜日を表しています。</p><p>上の例は月曜日から金曜日の午後1時にコマンド</p> <pre class="code" data-lang="" data-unlink>/home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama</pre><p>を実行します<br /> <br /> </p> <pre><del>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip</a></del> </pre> <pre><del>同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip</a></del> </pre> <pre>タイムフリーの仕様変更に対応した 同時録音に対応した簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip</a> </pre><p>に含まれる delete.py は、次の</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ ./delete.py -d radio 12</pre><p>コマンドをターミナル上で実行すると radio フォルダの中の日付が最新 12 個以外の削除されるファイルを表示します。</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ ./delete.py -y -d radio 12</pre><p>上のように -y を引数と指定すると ( -y を指定する場合、十分注意してください。) radio フォルダ内の最新 12 個以外のファイルを削除します。radio フォルダの中にフォルダがある場合、そのフォルダ内も最新 12 個のファイル以外を削除します。</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ ./delete.py -a -d radio</pre><p>radio フォルダのすべてのファイルを表示します。</p> <pre class="code" data-lang="" data-unlink>0 8 * * 0 /home/pi/delete.py -y -d /home/pi/radio 12 0 1 * * 0,5 /home/pi/rec_radiko2.sh LFR 120 mail password /home/pi/radio/night 0 1 * * 2 /home/pi/rec_radiko2.sh TBS 120 mail password /home/pi/radio/junk 0 13 * * 1-5 /home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama</pre><p>上のように crontab -e で設定すると毎週日曜日の午前8時に radio フォルダ内のファイルを最新 12 個以外削除します。最新 12 個のファイルだけ残るので、ディスク容量を気にする必要がありません。SD カードの容量に合わせて個数を設定してください。2 時間録音した MP3 形式ファイルのサイズは 109.8 MB です。</p><p>ディスク容量の確認は、コマンド df -h を使います。</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ df -h Filesystem Size Used Avail Use% Mounted on rootfs 13G 9.1G 3.3G 74% / /dev/root 13G 9.1G 3.3G 74% / devtmpfs 180M 0 180M 0% /dev tmpfs 38M 744K 37M 2% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 75M 0 75M 0% /run/shm /dev/mmcblk0p5 60M 19M 41M 32% /boot</pre><p>上の例は、私の16 GB SD カードの状態です。crontab -e の設定は、上記例とは違います。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> を終了するには</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ exit logout Connection to 192.168.xx.xx closed.</pre><p>上記のように exit を実行してください。</p> KYoshiaki Raspberry Pi の入手方法と基本設定 hatenablog://entry/12921228815722345684 2014-04-20T18:24:55+09:00 2014-08-29T18:58:35+09:00 前回は、OS X Mavericks 上に Radiko で録音する手順を紹介しましたが、今回は Raspberry Pi の入手方法と基本設定について書きたいと思います。後、Radiko プレミアムに対応した rec_radiko.sh が 簡易radiko録音ツール。要swftools (Radiko プレミアム版) https://gist.github.com/saiten/875864 で公開されています。 簡易Radiko録音スクリプト(Radiko 無料版) https://gist.github.com/matchy2/3956266 本格的に利用するには上記スクリプトを参考に… <p>前回は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> Mavericks 上に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> で録音する手順を紹介しましたが、今回は Raspberry Pi の入手方法と基本設定について書きたいと思います。後、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> プレミアムに対応した rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>.sh が</p> <pre>簡易<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB">ツール</a>。要<a class="keyword" href="http://d.hatena.ne.jp/keyword/swftools">swftools</a> (<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> プレミアム版) <a href="https://gist.github.com/saiten/875864">https://gist.github.com/saiten/875864</a> </pre><p>で公開されています。</p> <pre>簡易<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a>録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 無料版) <a href="https://gist.github.com/matchy2/3956266">https://gist.github.com/matchy2/3956266</a> </pre><p>本格的に利用するには上記<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を参考にカスタマイズが必要ですね!</p><p><span style="color: #cc0000">追記: 2014/05/21(Wed)</span></p><p><span style="color: #cc0000">上記 URL を参考に、私が <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応の簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh を作成しました。下記 URL </span><br /> </p> <pre>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh 公開。 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748">http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748</a> </pre><p><span style="color: #cc0000">で公開しています。</span></p><br /> <p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174555" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174555.png" alt="f:id:KYoshiaki:20140420174555p:image" title="f:id:KYoshiaki:20140420174555p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 1) Raspberry Pi 本体</p><p>まず最初に Raspberry Pi を入手する必要があります。一番簡単なのは、</p> <pre>Raspberry Pi(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%BA%A5%D9%A5%EA%A1%BC%A5%D1%A5%A4">ラズベリーパイ</a>) <a href="http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0411-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-raspberry%20pi_Broad">http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0411-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-raspberry%20pi_Broad</a> </pre><p>上記 URL の正規販売店 RS 英国で購入する方法です。ただし、支払い方法は <a class="keyword" href="http://d.hatena.ne.jp/keyword/PayPal">PayPal</a></p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/PayPal">PayPal</a>(日本語) - ペイパル|海外での販売や個人の方にも!だれでもかんたんにクレジットカード決済 <a href="https://www.paypal.jp/jp/cp/ma/?mpch=ads&mplx=3484-121379-5044-0">https://www.paypal.jp/jp/cp/ma/?mpch=ads&mplx=3484-121379-5044-0</a> </pre><p>です。海外(英国)からの購入になるので、住所などを英語(英語とローマ字)で表記する必要があります。</p><p>商品によっては out of stock (在庫切れ) になっているものもあります。数週間後にアクセスしてください。</p><p>RS 英国を選ぶ理由は、Raspberry Pi に対応しているかどうかを調べる必要がないからです。例えば、USB 無線 LAN アダプター、カメラモジュール、キーボード、電源などです。</p><br /> <p>電源は、</p> <pre>RS HNP10I-microUSB Universal Mains 5V @ 2A power supply with integral 1.5m cable and microUSB plug. Interchangeable plug heads for UK, Europe, USA, Japan and Australia. Suitable for Raspberry Pi Model A or B. </pre><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174556" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174556.png" alt="f:id:KYoshiaki:20140420174556p:image" title="f:id:KYoshiaki:20140420174556p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 2) 電源プラグ一式</p><p>を購入しました。上記説明のように Japan (日本) 用の電源プラグも付属しています。日本の電源プラグを装着した状態が下図</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174557" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174557.png" alt="f:id:KYoshiaki:20140420174557p:image" title="f:id:KYoshiaki:20140420174557p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 3) 日本の電源プラグ装着状態</p><p>です。</p><br /> <p>私が正規販売店 RS 英国から購入した部品は</p> <pre class="code" data-lang="" data-unlink>□ Raspberry Pi Type B with 8GB SD card (本体 + オペレーションシステム Raspian がインストールされた SD カード) 1個 US$43.57 □ Edimax Wireless Nano USB Adapter (USB 無線 LAN アダプター) 1個 US$14.23 □ Raspberry Pi Type B Case - Clear (ケース) 1個 US$6.34 □ Micro USB Multi-Head power supply for Raspberry Pi (電源) 1個 US$12.55 □ Raspberry Pi HD Video Camera module (カメラモジュール) 1個 US$25.49 □ Goods Only Total US$102.18 Standard Delivery (Despatch expected within 1 week(s)) US$0.00 □ 合計 US $102.18 クレジット会社請求金額 ¥11100</pre><pre class="code" data-lang="" data-unlink>2014/01/10(Fri) 注文 2013/01/15(Tue) 発送メール 2014/01/22(Wed) 到着 (12日間)</pre><p>です。</p><br /> <p>その他に日本のアマゾンで、</p> <pre class="code" data-lang="" data-unlink>USB マウス USB キーボード USB2.0 Hub バスパワー 4ポート SDHCカード 16GB HDMIケーブル 2.0m (タイプAオス - タイプAオス)</pre><p>を購入しました。Raspberry Pi の USB ポードが 2 つしかないので、USB 無線 LAN アダプタ、USB マウス、USB キーボードをすべて接続するためには USB ハブが必要です。</p><br /> <p>個人的な意見ですが、私が購入したキーボードに合致したレイアウト設定が見つからなかったので、正規販売店 RS 英国でキーボードを購入すべきでした。しかし、最初の設定以外は PC から <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> でログインして設定するので、USB キーボードのレイアウトはそれほど気にする必要がないかもしれません。</p><br /> <p>Raspberry Pi の設定方法は</p> <pre>Help | Raspberry Pi <a href="http://www.raspberrypi.org/help/">http://www.raspberrypi.org/help/</a> Quick Start Guide | Raspberry Pi <a href="http://www.raspberrypi.org/help/quick-start-guide/">http://www.raspberrypi.org/help/quick-start-guide/</a> Raspberry Pi documentation <a href="http://www.raspberrypi.org/documentation/">http://www.raspberrypi.org/documentation/</a> NOOBS Setup | Raspberry Pi <a href="http://www.raspberrypi.org/help/noobs-setup/">http://www.raspberrypi.org/help/noobs-setup/</a> FAQs | Raspberry Pi <a href="http://www.raspberrypi.org/help/faqs/">http://www.raspberrypi.org/help/faqs/</a> </pre><p>が参考になります。</p><br /> <p>オペレーションシステム Raspian がインストールされた SD カードを持っていない場合は、まず最初に SD カードをフォーマットする必要があります。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows">Windows</a> SD Association's Formatting Tool <a href="https://www.sdcard.org/downloads/formatter_4/eula_windows/">https://www.sdcard.org/downloads/formatter_4/eula_windows/</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> SD Association's Formatting Tool SDFormatter.app <a href="https://www.sdcard.org/downloads/formatter_4/eula_mac/">https://www.sdcard.org/downloads/formatter_4/eula_mac/</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux">Linux</a> gparted(or the command line version parted) </pre><p>上記 URL でページの一番下の 'I Accept' ボタンをクリックし、フォーマット<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB">ツール</a>をダウンロードします。フォーマット<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB">ツール</a>をインストールし、SD カードをフォーマットしてください。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の場合、SDカードを挿入し、'/アプリケーション' フォルダの SDFormatter.app をダブルクリックして起動します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174607" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174607.png" alt="f:id:KYoshiaki:20140420174607p:image" title="f:id:KYoshiaki:20140420174607p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 4) SDFormatter.app</p><p>上図のように、上書きフォーマットを選択し、フォーマットボタンをクリックします。</p><br /> <p>最新のインストール方法はイメージファイルを<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%DE%A5%F3%A5%C9%A5%E9%A5%A4%A5%F3">コマンドライン</a>で直接書き込む必要がありません。</p> <pre>Downloads | Raspberry Pi <a href="http://www.raspberrypi.org/downloads">http://www.raspberrypi.org/downloads</a> </pre><p>から、New Out Of Box Software (NOOBS)</p> <pre class="code" data-lang="" data-unlink>NOOBS (offline and network install) Image NOOBS_v1_3_4.zip Torrent NOOBS_v1_3_4.zip.torrent SHA-1 Checksum 96b7a28e7b3bc7d73c93ff2207ede0582fe29525</pre><p>NOOBS_v1_3_4.zip (最新のファイルを選んでください。) のリンクをクリックしてダウンロードして下さい。</p><br /> <p>Finder 上でダウンロードしたファイル NOOBS_v1_3_4.zip をダブルクリックして展開し、NOOBS_v1_3_4 フォルダの中身を SD カードにコピーします。NOOBS_v1_3_4 フォルダをドラッグするのではなく、中身を全て選択し、ドラッグ&ペーストしてください。</p><p>Raspberry Pi に</p> <pre class="code" data-lang="" data-unlink>USB マウス USB キーボード USB2.0 Hub バスパワー 4ポート USB 無線 LAN アダプター</pre><p>を接続し、</p> <pre class="code" data-lang="" data-unlink>NOOBS をインストールしたSD カード</pre><p>を挿入します。</p> <pre class="code" data-lang="" data-unlink>HDMIケーブル</pre><p>で TV と接続してください。最後に電源を接続してください。</p><br /> <p>NOOBS の <a class="keyword" href="http://d.hatena.ne.jp/keyword/GUI">GUI</a> が起動します。Raspbian をチェックし、下部で言語とキーボードを設定できます。</p><p>上のインストールボタンをクリックするとインストールが始まります。</p> <pre class="code" data-lang="" data-unlink>Usename: pi パスワード: raspberry</pre><p>でログインしてください。</p><br /> <p>最初に下図のように sudo raspi-config が自動的に起動します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174558" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174558.png" alt="f:id:KYoshiaki:20140420174558p:image" title="f:id:KYoshiaki:20140420174558p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 5) sudo raspi-config 実行画面</p><p>NOOBS を使っているので</p> <pre class="code" data-lang="" data-unlink>1. Expand Filesysytem</pre><p>を選択する必要はありません。</p><p>図 5)の</p> <pre class="code" data-lang="" data-unlink>4 Internationalisation Options</pre><p>から、下図のように</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174559" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174559.png" alt="f:id:KYoshiaki:20140420174559p:image" title="f:id:KYoshiaki:20140420174559p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 6) I2 Change Timezone</p> <pre class="code" data-lang="" data-unlink>I2 Change Timezone Asia Tokyo</pre><p>を選び、Timezone を設定してください。</p><p>図 5) の</p> <pre class="code" data-lang="" data-unlink>8 Advanced Options </pre><p>から、下図</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174600" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174600.png" alt="f:id:KYoshiaki:20140420174600p:image" title="f:id:KYoshiaki:20140420174600p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 7) A4 <a class="keyword" href="http://d.hatena.ne.jp/keyword/SSH">SSH</a></p> <pre class="code" data-lang="" data-unlink>A4 SSH</pre><p>から</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174601" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174601.png" alt="f:id:KYoshiaki:20140420174601p:image" title="f:id:KYoshiaki:20140420174601p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 8) <a class="keyword" href="http://d.hatena.ne.jp/keyword/SSH">SSH</a> を有効</p><p>念のため <a class="keyword" href="http://d.hatena.ne.jp/keyword/SSH">SSH</a> を有効にしてください。</p><p>図 5) の</p> <pre class="code" data-lang="" data-unlink>8 Advanced Options </pre><p>から、</p> <pre class="code" data-lang="" data-unlink>A7 Update</pre><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174602" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174602.png" alt="f:id:KYoshiaki:20140420174602p:image" title="f:id:KYoshiaki:20140420174602p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 9) A7 Update</p><p>最新状態にし、終了してください。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Wifi">Wifi</a> の設定をする必要があるので、次のコマンド</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ startx</pre><p>を使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/GUI">GUI</a> を起動してください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174554" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174554.png" alt="f:id:KYoshiaki:20140420174554p:image" title="f:id:KYoshiaki:20140420174554p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 10) <a class="keyword" href="http://d.hatena.ne.jp/keyword/GUI">GUI</a> 起動画面</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Wifi">Wifi</a> の設定は、上図の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Wifi">Wifi</a> Config アイコンをダブルクリックします。下記 URL</p> <pre>How to setup <a class="keyword" href="http://d.hatena.ne.jp/keyword/WIFI">WIFI</a> on your Raspberry Pi - Raspbian | The Pi Hut | Raspberry Pi Accessories <a href="http://thepihut.com/pages/how-to-setup-wifi-on-your-raspberry-pi-raspbian">http://thepihut.com/pages/how-to-setup-wifi-on-your-raspberry-pi-raspbian</a> </pre><p>が参考になります。簡単に説明すると</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174603" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174603.png" alt="f:id:KYoshiaki:20140420174603p:image" title="f:id:KYoshiaki:20140420174603p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 11) <a class="keyword" href="http://d.hatena.ne.jp/keyword/Wifi">Wifi</a> Config 起動画面</p> <pre class="code" data-lang="" data-unlink>Adapter: wlan0</pre><p>表示されたウインドウの Current Status タブを選び、Scan ボタンをクリックしてください。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174604" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174604.png" alt="f:id:KYoshiaki:20140420174604p:image" title="f:id:KYoshiaki:20140420174604p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 12) ネットワーク一覧画面</p><p>ネットワーク一覧がウインドウに表示されます。接続したいネットワークをダブルクリックしてください。詳細設定ウインドウが開きます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174605" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174605.png" alt="f:id:KYoshiaki:20140420174605p:image" title="f:id:KYoshiaki:20140420174605p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 13) 詳細設定ウインドウ</p><p>PSK フィールドにパスワードを入力し、Add ボタンをクリックしてください。これで、USB 無線 LAN アダプターの設定は終わりです。ただし、このままだと無線 LAN が自動スリープしてしまいます。対処方法は最後に説明します。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20140420174606" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20140420/20140420174606.png" alt="f:id:KYoshiaki:20140420174606p:image" title="f:id:KYoshiaki:20140420174606p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> 図 14) Logout メニュー</p><p>左下隅のアイコンをクリックしてメニューを表示し、Logout を選択し <a class="keyword" href="http://d.hatena.ne.jp/keyword/GUI">GUI</a> を終了します。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> などのターミナルから <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> で Raspberry Pi にログインするために、IP アドレスを確認する必要があります。</p><p>コマンド ifconfig -a を実行すると下のように表示されます。</p> <pre class="code" data-lang="" data-unlink>$ ifconfig -a wlan0 Link encap:Ethernet HWaddr **:**:**:**:**:** inet addr:192.168.xx.xx Bcast:192.168.xx.255 Mask:255.255.255.0</pre><p>wlan0 の inet addr:192.168.xx.xx が目的の IP アドレス 192.168.xx.xx です。</p> <pre class="code" data-lang="" data-unlink>$ sudo shutdown -r now </pre><p>で再起動し、USB 無線 LAN アダプターと電源以外の <a class="keyword" href="http://d.hatena.ne.jp/keyword/HDMI">HDMI</a>、USB キーボード、マウスなどを外します。</p><br /> <p>下のように<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> のターミナルから <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> を使って Raspberry Pi にログインします。</p> <pre class="code" data-lang="" data-unlink>~ $ ssh pi@192.168.xx.xx pi@192.168.xx.xx&#39;s password: Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Apr 8 19:32:36 2014 from 192.168.xx.xx pi@raspberrypi ~ $</pre><pre class="code" data-lang="" data-unlink>user: pi password: rasberry</pre><p>パスワードは raspberry です。</p><br /> <p>USB 無線 LAN が自動スリープするのを無効にする方法が</p> <pre>Preventing Raspberry Pi <a class="keyword" href="http://d.hatena.ne.jp/keyword/WiFi">WiFi</a> from going into Sleep Mode | electronut <a href="http://electronut.in/preventing-raspberry-pi-wifi-from-going-into-sleep-mode/">http://electronut.in/preventing-raspberry-pi-wifi-from-going-into-sleep-mode/</a> </pre><p>に説明されています。簡単に説明すると</p> <pre class="code" data-lang="" data-unlink># Disable power management options 8192cu rtw_power_mgnt=0</pre><p>上記内容のファイル /etc/modprobe.d/8192cu.conf を作成し、</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ sudo shutdown -r now</pre><p>で再起動します。これで USB 無線 LAN がスリープしなくなります。</p><br /> <p>もう少し詳しく説明すると、ファイル作成には nano を使います。下記コマンドを使って </p> <pre class="code" data-lang="" data-unlink>$ sudo nano /etc/modprobe.d/8192cu.conf</pre><p>8192cu.conf ファイルを作成してください。</p> <pre class="code" data-lang="" data-unlink># Disable power management options 8192cu rtw_power_mgnt=0</pre><p>上記内容を入力し、画面下に表示されているように CTRL+O を入力するとファイル名が表示されるので Return Key を押して保存します。CTRL+X で終了してください。</p><p>忘れずに</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ sudo shutdown -r now</pre><p>で再起動してください。</p><br /> <p>通常 <a class="keyword" href="http://d.hatena.ne.jp/keyword/ssh">ssh</a> を終了するには</p> <pre class="code" data-lang="" data-unlink>pi@raspberrypi ~ $ exit logout Connection to 192.168.xx.xx closed.</pre><p>上記のように exit を実行してください。</p> KYoshiaki OS X 10.9 Mavericks で Radiko 録音する方法。 hatenablog://entry/12921228815718894440 2014-02-23T18:35:35+09:00 2014-05-04T20:20:34+09:00 簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh 公開。 http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748 上記 URL も参考にしてください。 まず最初に OS X 10.9 Mavericks で動作するように修正した 2ch Script version 0.4 http://kyoshiaki.sakura.ne.jp/osx/index.html を上記URLで公開します。フリーウェアなので、良かったら気軽にダウンロードして下さい。 最近、マンネリ気味なので新しいことに挑… <pre>簡易 <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> プレミアム対応 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> rec_radiko2.sh 公開。 <a href="http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748">http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748</a> </pre><p>上記 URL も参考にしてください。</p><br /> <p>まず最初に <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.9 Mavericks で動作するように修正した </p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/2ch">2ch</a> Script version 0.4 <a href="http://kyoshiaki.sakura.ne.jp/osx/index.html">http://kyoshiaki.sakura.ne.jp/osx/index.html</a> </pre><p>を上記URLで公開します。フリーウェアなので、良かったら気軽にダウンロードして下さい。</p><br /> <p>最近、マンネリ気味なので新しいことに挑戦してみようと海外のサイト</p> <pre>Raspberry Pi(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%BA%A5%D9%A5%EA%A1%BC%A5%D1%A5%A4">ラズベリーパイ</a>) <a href="http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0411-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-raspberry%20pi_Broad">http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0411-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-raspberry%20pi_Broad</a> </pre><p>から Raspberry Pi を直接購入してみました。詳しい内容はまた次回に紹介したいと思います。現在、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> 録音装置として使っています。</p><br /> <p>Raspberry Pi 到着まで、12日かかりました。その間に Raspberry Pi の情報をウェブ上で収集していたのですが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> の録音ツールとして利用している</p> <pre>ピコピコ日記: RaspberryPiで<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a>を録音する <a href="http://shinyamatsuyama.blogspot.jp/2013/06/raspberrypiradiko.html">http://shinyamatsuyama.blogspot.jp/2013/06/raspberrypiradiko.html</a> </pre><p>上記サイトを発見しました。Raspberry Pi が到着するまで暇なので <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> で試してみることにしました。ただし、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> を録音する<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>は</p> <pre>簡易<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a>録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> <a href="https://gist.github.com/matchy2/3956266">https://gist.github.com/matchy2/3956266</a> </pre><p>を使うことにしました。</p><br /> <p>まず、簡易<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a>録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を実行できるように必要なプログラムをインストールする必要があります、</p><p>プログラムのインストールに</p> <pre>Homebrew — <a class="keyword" href="http://d.hatena.ne.jp/keyword/MacPorts">MacPorts</a>は酒でも飲みたくなるでしょ?じゃあHomebrewを使おう! <a href="http://brew.sh/index_ja.html">http://brew.sh/index_ja.html</a> </pre><p>を利用することにしました。ターミナル上で次のコマンド</p> <pre class="code" data-unlink>~ $ brew update ~ $ brew install wget rtmpdump swftools libxml2 ffmpeg</pre><p>を使って必要なプログラムをインストールします。</p><p>次に</p> <pre>簡易<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a>録音<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> <a href="https://gist.github.com/matchy2/3956266">https://gist.github.com/matchy2/3956266</a> </pre><p>上記 URL の左部分 'Download Gist' ボタンをクリックしてダウンロードします。</p><p>ダウンロードされた gistxxxxxxx.tar.gz ファイルを Finder 上でダブルクリックして展開します。作成されたフォルダの中のファイル rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>.sh を<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A1%BC%A5%E0%A5%D5%A5%A9%A5%EB%A5%C0">ホームフォルダ</a>に移動します。 rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>.sh ファイルを移動したら、作成されたフォルダはゴミ箱に捨ててください。</p><p>ターミナル上でファイル rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>.sh に実行属性をつけます。</p> <pre class="code" data-unlink>~ $ chmod +x rec_radiko.sh </pre><p>次に</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> <a href="http://radiko.jp/">http://radiko.jp/</a> </pre><p>に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> でアクセスして地域と放送局を確認して下さい。(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> は IP アドレスを基準に地域を判定します。)</p><p>私が</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>の番組表<a class="keyword" href="http://d.hatena.ne.jp/keyword/XML">XML</a> :宗子時空 <a href="http://www.dcc-jpl.com/diary/2011/06/13/radiko-xml/">http://www.dcc-jpl.com/diary/2011/06/13/radiko-xml/</a> </pre><p>を参考にしたエリア情報取得<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%A7%A5%EB%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">シェルスクリプト</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_<a class="keyword" href="http://d.hatena.ne.jp/keyword/curl">curl</a>_area.sh、<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_<a class="keyword" href="http://d.hatena.ne.jp/keyword/wget">wget</a>_area.sh と指定したフォルダ内の最新のファイル最大数を設定する <a class="keyword" href="http://d.hatena.ne.jp/keyword/Python">Python</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a> delete.py <span style="color: #cc0000"> (delete.py は危険なプログラムです。むやみに実行しないでください。)</span> を下記 URL</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_utility.zip <a href="http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip">http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip</a> </pre><p>で公開します。上の URL からダウンロードしたファイル <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_utility.zip を Finder 上で展開し、ファイル <a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_<a class="keyword" href="http://d.hatena.ne.jp/keyword/curl">curl</a>_area.sh、<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_<a class="keyword" href="http://d.hatena.ne.jp/keyword/wget">wget</a>_area.sh、 delete.py をそれぞれ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A1%BC%A5%E0%A5%D5%A5%A9%A5%EB%A5%C0">ホームフォルダ</a>に移動してください。作成されたフォルダはゴミ箱に捨ててください。</p> <pre class="code" data-unlink>~ $ ./radiko_curl_area.sh </pre><p>上記コマンドをターミナル上で実行してください。地域別の放送局情報 <a class="keyword" href="http://d.hatena.ne.jp/keyword/XML">XML</a> が<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C5%D4%C6%BB">都道</a>府県別に JP1.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> ~ JP47.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> という名前のファイルでダウンロードされます。</p><p>ここで</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko.jp">radiko.jp</a> <a href="http://radiko.jp/">http://radiko.jp/</a> </pre><p>にアクセスした時に表示される地域がどの <a class="keyword" href="http://d.hatena.ne.jp/keyword/XML">XML</a> のファイルか確認します。</p><br /> <p>例えば、放送局の地域が東京ならコマンド <a class="keyword" href="http://d.hatena.ne.jp/keyword/grep">grep</a> で "<a class="keyword" href="http://d.hatena.ne.jp/keyword/TBS%A5%E9%A5%B8%A5%AA">TBSラジオ</a>" で検索します。</p> <pre class="code" data-unlink>~ $ grep -e &#34;TBSラジオ&#34; *.xml JP10.xml: &lt;name&gt;TBSラジオ&lt;/name&gt; JP11.xml: &lt;name&gt;TBSラジオ&lt;/name&gt; JP12.xml: &lt;name&gt;TBSラジオ&lt;/name&gt; JP13.xml: &lt;name&gt;TBSラジオ&lt;/name&gt; JP14.xml: &lt;name&gt;TBSラジオ&lt;/name&gt; JP8.xml: &lt;name&gt;TBSラジオ&lt;/name&gt; JP9.xml: &lt;name&gt;TBSラジオ&lt;/name&gt; ~ $</pre><p>JP8.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> ~ JP14.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> まで絞り込めました。</p><p>Finder 上で JP13.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> ファイルをダブルクリックすると <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> が立ち上がります。</p> <pre class="code" data-unlink>================ JP13.xml ======================= &lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34; ?&gt; &lt;stations area_id=&#34;JP13&#34; area_name=&#34;TOKYO JAPAN&#34;&gt; &lt;station&gt; &lt;id&gt;TBS&lt;/id&gt; &lt;name&gt;TBSラジオ&lt;/name&gt; &lt;ascii_name&gt;TBS RADIO&lt;/ascii_name&gt; . . &lt;/station&gt; &lt;station&gt; &lt;id&gt;QRR&lt;/id&gt; &lt;name&gt;文化放送&lt;/name&gt; &lt;ascii_name&gt;JOQR BUNKA HOSO&lt;/ascii_name&gt; &lt;href&gt;http://www.joqr.co.jp/&lt;/href&gt; &lt;name&gt;TBSラジオ&lt;/name&gt; . . ================ JP13.xml =======================</pre><p>2行目の area_name="TOKYO JAPAN" より、JP13.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> が東京の放送局情報 <a class="keyword" href="http://d.hatena.ne.jp/keyword/XML">XML</a>だとわかります。</p><p>rec_<a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>.sh の引数は</p> <pre class="code" data-unlink>rec_radiko.sh &lt;channel_name_id&gt; &lt;minutes&gt; &lt;outputdir&gt; [prefix]</pre><p>です。引数の詳細は</p> <pre class="code" data-unlink>channel_name_id: 放送局の station id minutes: 何分録音するか outputdir: 出力するディレクトリ [prefix]: 保存ファイル名の先頭文字。指定されない場合 channel_name_id が使われます。 例) ~ $ ./rec_radiko.sh TBS 1 TBS を 1分間録音してカレントディレクトリに名前の先頭が TBS のファイル を MP3 形式で保存します。 ~ $ ./rec_radiko.sh TBS 120 radio TBSラジオを 120分録音してカレントディレクトリの radio ディレクトリに 名前の先頭が TBS のファイルを MP3 形式で保存します。</pre><p>です。</p><br /> <p>自分の地域の放送局を確認するには、放送局情報 <a class="keyword" href="http://d.hatena.ne.jp/keyword/XML">XML</a> ファイル、東京の場合は JP13.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a> の</p> <pre class="code" data-unlink><span class="synIdentifier">&lt;station&gt;&lt;/station&gt;</span> </pre><p>で囲まれた部分がそれぞれの放送局の情報です。例えば</p> <pre class="code" data-unlink> <span class="synIdentifier">&lt;station&gt;</span> <span class="synIdentifier">&lt;id&gt;</span>TBS<span class="synIdentifier">&lt;/id&gt;</span> <span class="synIdentifier">&lt;name&gt;</span>TBSラジオ<span class="synIdentifier">&lt;/name&gt;</span> <span class="synIdentifier">&lt;ascii_name&gt;</span>TBS RADIO<span class="synIdentifier">&lt;/ascii_name&gt;</span> </pre><p>の部分 </p> <pre class="code" data-unlink><span class="synIdentifier">&lt;id&gt;</span>TBS<span class="synIdentifier">&lt;/id&gt;</span> </pre><p>が <a class="keyword" href="http://d.hatena.ne.jp/keyword/TBS%A5%E9%A5%B8%A5%AA">TBSラジオ</a>の channel_name_id です。<br /> <br /> </p> <pre class="code" data-unlink><span class="synIdentifier">&lt;station&gt;</span> <span class="synIdentifier">&lt;id&gt;</span>QRR<span class="synIdentifier">&lt;/id&gt;</span> <span class="synIdentifier">&lt;name&gt;</span>文化放送<span class="synIdentifier">&lt;/name&gt;</span> <span class="synIdentifier">&lt;ascii_name&gt;</span>JOQR BUNKA HOSO<span class="synIdentifier">&lt;/ascii_name&gt;</span> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%CA%B8%B2%BD%CA%FC%C1%F7">文化放送</a>の場合は channel_name_id は QRR です。<br /> <br /> </p> <pre class="code" data-unlink>~ $ ./rec_radiko.sh QRR 120 radio </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%CA%B8%B2%BD%CA%FC%C1%F7">文化放送</a>を 120分録音して radio ディレクトリに名前の先頭が QRR のファイルを MP3 形式で保存します。</p><br /> <p>実際に正しく動作するか、自分の地域の放送局 station_name_id で1分間録音を試してみてください。(ここでは<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CA%B8%B2%BD%CA%FC%C1%F7">文化放送</a>を指定しています。)</p> <pre class="code" data-unlink>~ $ ./rec_radiko.sh QRR 1 </pre><p>カレントディレクトリ(この場合、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A1%BC%A5%E0%A5%D5%A5%A9%A5%EB%A5%C0">ホームフォルダ</a>) に、ファイル QRR_2014-XX-XX-XX_XX.mp3 が作成されているはずです。</p><br /> <p>Finder 上で ファイル QRR_2014-XX-XX-XX_XX.mp3 をダブルクリックすると <a class="keyword" href="http://d.hatena.ne.jp/keyword/iTunes">iTunes</a> に登録されてしまうので '/アプリケーション' フォルダの <a class="keyword" href="http://d.hatena.ne.jp/keyword/QuickTime">QuickTime</a> Player にドラッグ・ドロップして再生してください。</p><p>これで <a class="keyword" href="http://d.hatena.ne.jp/keyword/Radiko">Radiko</a> の録音に成功しました。</p><br /> <p>ただし、</p> <pre class="code" data-unlink>perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = &#34;ja_JP.utf8&#34;</pre><p>という警告が表示されます。問題はないのですが、いやなら .bashrc、.profile ファイルに</p> <pre class="code" data-unlink>export LC_ALL=en_US.UTF-8 export LANG=ja_JP.utf8</pre><p>を追加してください。</p> <pre class="code" data-unlink>export LC_ALL=C</pre><p>だと <a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby">Ruby</a> などで</p> <pre class="code" data-unlink>invalid byte sequence in US-ASCII (ArgumentError)</pre><p>上記のようなエラーが出ます。注意してください。</p><br /> <p>後は、cron を使って指定した時間に録音するようにします。次のコマンドを使って</p> <pre class="code" data-unlink>~ $ sudo launchctl unload /System/Library/LaunchDaemons/com.vix.cron.plist ~ $ sudo launchctl load /System/Library/LaunchDaemons/com.vix.cron.plist</pre><p>cron を起動してください。</p><br /> <p>次に crontab -e を使用して時間を設定します。</p><p>crontab -e を実行すると<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%AD%A5%B9%A5%C8%A5%A8%A5%C7%A5%A3%A5%BF">テキストエディタ</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> が起動します。</p><p>まず最初に簡単な <a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> の説明をしたいと思います。<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> には、4つのモード (ノーマルモード、コマンドモード、ビジュアルモード、挿入モード) があります。</p> <pre class="code" data-unlink>ノーマルモード: 最初の状態 コマンドモード: ノーマルモードで : キーを押す ビジュアルモード: ノーマルモードで v キーを押す 挿入モード: ノーマルモードで i キーを押す。 コマンドモード、ビジュアルモード、挿入モードで ESC キーを押すとノーマルモードに戻る。</pre><pre class="code" data-unlink>位置の移動: カーソルキー 文字の入力: 挿入モードで、キーをタイプすると入力できます。delete キーで削除できます。 文字の削除: ノーマルモードで x キーを押すと一文字削除できます。 コピー: ノーマルモードでコピーしたい最初の位置に移動、その後ビジュアルモードに変更、 右カーソルキーで範囲を指定し、y キーを押すとコピーできます。 ペースト: ノーマルモードでペーストしたい位置にカーソルキーで移動し、p キーを押す。 ファイルを保存して終了: ノーマルモードで : w q の順に3つのキーを押して Return キーを押す。</pre><p><br /> 簡単な <a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> の説明は、これで終わりです。詳しい説明は</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Vim">Vim</a>の使い方 <a href="http://www15.ocn.ne.jp/~tusr/vim/vim_text0.html">http://www15.ocn.ne.jp/~tusr/vim/vim_text0.html</a> </pre><p>を参考にしてください。</p><br /> <p>それではコマンド crontab -e を実行します。</p> <pre>~ $ crontab -e </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> が起動します。</p> <pre class="code" data-unlink>PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin 0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio</pre><p>と入力して保存し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a> を終了してください。コマンド crontab -e を終了したら、入力されたデータが正しいかチェックされ結果がターミナル上に英語で表示されます。</p><p>PATH を忘れずに指定してください。<br /> 録音した MP3 ファイルを保存する radio ディレクトリを次のコマンド</p> <pre class="code" data-unlink>~ $ mkdir radio</pre><p>で作成してください。(Finder 上で作成しても構いません。)</p> <pre class="code" data-unlink>0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio</pre><p>の xxxxxx の部分はターミナル上で pwd コマンドで</p> <pre class="code" data-unlink>~ $ pwd /Users/xxxxxx</pre><p>確認して置き換えてください。</p><p>crontab の日付時刻設定は</p> <pre class="code" data-unlink># m h dom mon dow command # 何分(0-59) 何時(0-23) 何日(1-31) 何月(1-12) 何曜日(0-6) コマンド 0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio 数字は、時刻、日付、曜日を表し、 * は、毎月、毎日、毎時、毎分です。 曜日は 0: 日曜日 1: 月曜日 2: 火曜日 3: 水曜日 4: 木曜日 5: 金曜日 6: 土曜日</pre><p>です。</p> <pre class="code" data-unlink>0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio</pre><p>0,2-6 は、複数の曜日を指定しています。日曜日,火曜日〜土曜日を表しています。</p><p>上の例は日曜日と火曜日から土曜日の午前1時にコマンド</p> <pre class="code" data-unlink>/Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio</pre><p>を実行します。</p><p>すなわち、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%C3%A5%DD%A5%F3%CA%FC%C1%F7">ニッポン放送</a>で日曜日と火曜日から土曜日の午前1時に2時間 (120 分) <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AA%A1%BC%A5%EB%A5%CA%A5%A4%A5%C8%A5%CB%A5%C3%A5%DD%A5%F3">オールナイトニッポン</a>を録音します。<br /> <br /> </p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/radiko">radiko</a>_utility.zip <a href="http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip">http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip</a> </pre><p>に含まれる delete.py は、次の</p> <pre class="code" data-unlink>~ $ ./delete.py -d radio 10</pre><p>コマンドをターミナル上で実行すると radio フォルダの中の日付が最新 10 個以外の削除されるファイルを表示します。</p> <pre class="code" data-unlink>~ $ ./delete.py -y -d radio 10</pre><p>上のように -y を引数と指定すると <span style="color: #cc0000">( -y を指定する場合、十分注意してください。)</span> radio フォルダ内の最新 10 個以外のファイルを削除します。radio フォルダの中にフォルダがある場合、そのフォルダ内も最新10 個のファイル以外削除します。</p> <pre class="code" data-unlink>~ $ ./delete.py -a -d radio</pre><p>radio フォルダのすべてのファイルを表示します。<br /> <br /> </p> <pre class="code" data-unlink>PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin 0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio 0 10 * * 0 /Users/xxxxxx/delete.py -y /Users/xxxxxx/radio 10</pre><p>上のように crontab -e で設定すると毎週日曜日の午前10時に radio フォルダ内のファイルを最新 10 個以外削除します。そのためディスク容量を気にする必要がありません。本来、Raspberry Pi 用に作成したものです。</p><p>後、失敗した録音ファイルは</p> <pre class="code" data-unlink>~ $ open /tmp</pre><p>で確認して下さい。<br /> <br /> </p> <pre class="code" data-unlink>You have mail. ~ $ </pre><p>cron で指定したコマンドが実行されると上記のようにメールが届きます。<br /> ターミナル上で</p> <pre class="code" data-unlink>~ $ cd /var/mail /var/mail $ ls xxxxxx</pre><p>上記コマンドを実行するとユーザー名: xxxxxx のファイルが確認できます。このファイルがメールの実体です。</p> <pre class="code" data-unlink>/var/mail $ cat xxxxxx</pre><p>上記コマンドで中身が見れます。削除するには</p> <pre class="code" data-unlink>/var/mail $ sudo rm xxxxxx</pre><p>を実行してください。</p> KYoshiaki 自作アプリの OS X 10.9 Mavericks 対応。Sprite Kit を使ったアプリケーション Neko version 1.0 公開。 hatenablog://entry/12921228815714492188 2013-12-14T18:53:34+09:00 2013-12-17T19:29:05+09:00 久しぶりのブログ更新です。Retina ディスプレイ対応の iMac を待っていたのですが、当分なさそうなので、 15インチ MacBook Pro Retina ディスプレイモデル 製品番号: Z0PU ハードウェア 2.3GHzクアッドコアIntel Core i7(Turbo Boost使用時最大3.5GHz) 16GB 1,600MHz DDR3L SDRAM 512GBフラッシュストレージ(PCIeベース) バックライトキーボード (JIS) + 製品マニュアル(日本語)上記、15インチ MacBook Pro Retina を購入しました。ディスプレイが眩しすぎて、目が痛いです。輝… <p>久しぶりのブログ更新です。Retina ディスプレイ対応の <a class="keyword" href="http://d.hatena.ne.jp/keyword/iMac">iMac</a> を待っていたのですが、当分なさそうなので、</p> <pre class="code" data-unlink>15インチ MacBook Pro Retina ディスプレイモデル 製品番号: Z0PU ハードウェア 2.3GHzクアッドコアIntel Core i7(Turbo Boost使用時最大3.5GHz) 16GB 1,600MHz DDR3L SDRAM 512GBフラッシュストレージ(PCIeベース) バックライトキーボード (JIS) + 製品マニュアル(日本語)</pre><p>上記、15インチ <a class="keyword" href="http://d.hatena.ne.jp/keyword/MacBook%20Pro">MacBook Pro</a> Retina を購入しました。ディスプレイが眩しすぎて、目が痛いです。輝度を調整したり、アプリを <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> で購入してみたのですが、慣れるしかないようです。</p><br /> <p>また、OS も <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.9 Mavericks になったので、私が普段利用している自作アプリを対応させました。 個人的にビルドし直したり、公開していないものもありますが!</p> <ul> <li>動作に問題がない自作アプリ</li> </ul><pre class="code" data-unlink>YKCalendar StripToString HatenaDiaryAssistance PocketLauncher YKClock DateMaker IndexView2 ConvertPTC Search2chBBS Wordbook2 YKBookmarks iYKRSSMac YKeyes Sakura</pre><p><br /> </p> <ul> <li>2chScriptMenu </li> </ul><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/ruby">ruby</a> のバージョンが</p> <pre class="code" data-unlink>~ $ ruby --version ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]</pre><p>に変更になったので、正しく動作しません。それでソースの一部を修正しました。現在、問題なく動作しています。<br /> <br /> </p> <ul> <li>PCG-LinkMac</li> </ul><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> 純正の FTDI ドライバとメーカーの FTDI ドライバが衝突して USB・<a class="keyword" href="http://d.hatena.ne.jp/keyword/RS232C">RS232C</a> シリアルポート変換ケーブルを抜くと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AB%A1%BC%A5%CD%A5%EB%A5%D1%A5%CB%A5%C3%A5%AF">カーネルパニック</a>が起きます。<br /> 対処方法は、下に別記載してあります。<br /> <br /> </p> <ul> <li>AnimalCrossingDesign</li> </ul><p>Retina で開くと画像が正しく表示されません。Finder 上で AnimalCrossingDesign.app を右クリック( CTRL + 左クリック ) でメニューを表示し、'情報を見る' を選択、'低解像度で開く' に✔️を入れてください。これで再起動すれば、正しく表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131214181928" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131214/20131214181928.png" alt="f:id:KYoshiaki:20131214181928p:image" title="f:id:KYoshiaki:20131214181928p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>以上の通りです。使っている人もいないと思うので、最新版をそれぞれ公開すべきか悩んでいます。</p><br /> <p>PCG-LinkMac 自体は、何の問題もなく動作します。ところが USB・<a class="keyword" href="http://d.hatena.ne.jp/keyword/RS232C">RS232C</a> シリアルポート変換ケーブルを抜くと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AB%A1%BC%A5%CD%A5%EB%A5%D1%A5%CB%A5%C3%A5%AF">カーネルパニック</a>が起きます<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> 純正の FTDI ドライバとメーカーの FTDI ドライバが衝突しているのが原因のようです。<br /> それでメーカー製 FTDI ドライバをターミナル上で次のコマンドを使って削除してください。</p> <pre class="code" data-unlink>~ $ cd /System/Library/Extensions/ /System/Library/Extensions $ sudo rm -R FTDIUSBSerialDriver.kext Password: /System/Library/Extensions $ sudo touch . /System/Library/Extensions $</pre><p><br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> 純正 FTDI ドライバ AppleUSBFTDI.kext は、/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns フォルダにあります。</p> <pre class="code" data-unlink>~ $ cd /System/library/Extensions/IOUSBFamily.kext/Contents/Plugins/ /System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ ls AppleUSBCDC.kext AppleUSBMergeNub.kext AppleUSBCDCACMControl.kext AppleUSBOHCI.kext AppleUSBCDCACMData.kext AppleUSBOpticalMouse.kext AppleUSBCDCDMM.kext AppleUSBUHCI.kext AppleUSBCDCECMControl.kext AppleUSBVideoSupport.kext AppleUSBCDCECMData.kext AppleUSBXHCI.kext AppleUSBCDCEEM.kext IOUSBCompositeDriver.kext AppleUSBCDCWCM.kext IOUSBHIDDriver.kext AppleUSBEHCI.kext IOUSBHIDDriverSafeBoot.kext AppleUSBFTDI.kext IOUSBLib.bundle AppleUSBHub.kext IOUSBUserClient.kext /System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ </pre><p><br /> 後、コマンドラインツールをインストールするには、ターミナル上で</p> <pre class="code" data-unlink>~$ xcode-select --install ~$ sudo xcodebuild -license</pre><p>を実行するとインストールできます。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> のインストールは <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> 6 のアプリを起動すると <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> 6 パッケージをインストールするか尋ねてきます。また <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> 7 アプリを起動すると <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> 7 パッケージをインストールすることができます。</p><br /> <p>以前から試してみたかった Sprite Kit に挑戦してみました。衝突処理を物理演算として処理するのには驚きました。</p><p>最初に</p> <pre>Sprite Kit Programming Guide: About Sprite Kit <a href="https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40013043">https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40013043</a> </pre><p>の Jumping into Sprite Kit</p> <pre>Sprite Kit Programming Guide: Jumping into Sprite Kit <a href="https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/GettingStarted/GettingStarted.html#//apple_ref/doc/uid/TP40013043-CH2-SW1">https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/GettingStarted/GettingStarted.html#//apple_ref/doc/uid/TP40013043-CH2-SW1</a> ▼Jumping into Sprite Kit </pre><p>を試して基本を理解しました。</p><br /> <p>サンプル3つ</p> <pre>code:Explained Adventure: Introduction <a href="https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/AdventureArchitecture/AdventureArchitecture.html#//apple_ref/doc/uid/TP40013140">https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/AdventureArchitecture/AdventureArchitecture.html#//apple_ref/doc/uid/TP40013140</a> SpriteKit Physics Collisions <a href="https://developer.apple.com/library/mac/samplecode/SpriteKit_Physics_Collisions/Introduction/Intro.html#//apple_ref/doc/uid/DTS40013390">https://developer.apple.com/library/mac/samplecode/SpriteKit_Physics_Collisions/Introduction/Intro.html#//apple_ref/doc/uid/DTS40013390</a> Sprite Tour <a href="https://developer.apple.com/library/mac/samplecode/Sprite_Tour/Introduction/Intro.html#//apple_ref/doc/uid/DTS40013389">https://developer.apple.com/library/mac/samplecode/Sprite_Tour/Introduction/Intro.html#//apple_ref/doc/uid/DTS40013389</a> </pre><p>も参考になります。特に</p> <pre>code:Explained Adventure: Introduction <a href="https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/AdventureArchitecture/AdventureArchitecture.html#//apple_ref/doc/uid/TP40013140">https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/AdventureArchitecture/AdventureArchitecture.html#//apple_ref/doc/uid/TP40013140</a> </pre><p>は、本格的な<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%C9%A5%D9%A5%F3%A5%C1%A5%E3%A1%BC%A5%B2%A1%BC%A5%E0">アドベンチャーゲーム</a>です。ソースの解説も上記 URL にあります。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> での Particle Emitter 作成方法は</p> <pre>Particle Emitter Editor Guide: About the Particle Emitter Editor <a href="https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-particle_emitter/Introduction/Introduction.html">https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-particle_emitter/Introduction/Introduction.html</a> </pre><p>が参考になります。</p><br /> <p>SKEffectNode、CIFilter の使い方は</p> <pre>Sprite Kit Programming Guide: Working with Other Node Types <a href="https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/OtherNodeClasses/OtherNodeClasses.html#//apple_ref/doc/uid/TP40013043-CH10-SW20">https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/OtherNodeClasses/OtherNodeClasses.html#//apple_ref/doc/uid/TP40013043-CH10-SW20</a> ▼Working with Other Node Types ▼Effect Nodes Apply Special Effects to Their Descendants <a class="keyword" href="http://d.hatena.ne.jp/keyword/Core%20Image">Core Image</a> Filter Reference <a href="https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CoreImageFilterReference/Reference/reference.html">https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CoreImageFilterReference/Reference/reference.html</a> </pre><p>が参考になります。CIFilter を NSLog で直接表示すると</p> <pre class="code" data-unlink><span class="synIdentifier">- </span>(CIFilter *)spotLightFilter { CIFilter *filter = [CIFilter filterWithName:<span class="synConstant">@&quot;CISpotLight&quot;</span>]; <span class="synComment">// 3</span> [filter setDefaults]; NSLog(<span class="synConstant">@&quot;</span><span class="synSpecial">%@</span><span class="synConstant">&quot;</span>, [filter attributes]); [filter setValue:[NSNumber numberWithFloat:<span class="synConstant">10.00</span>] forKey:<span class="synConstant">@&quot;inputBrightness&quot;</span>]; [filter setValue:[CIVector vectorWithX:<span class="synConstant">150</span> Y:<span class="synConstant">150</span> Z:<span class="synConstant">300</span>] forKey:<span class="synConstant">@&quot;inputLightPosition&quot;</span>]; <span class="synComment">// [filter setValue:[CIVector vectorWithX:0 Y:0 Z:0] forKey:@&quot;inputLightPointsAt&quot;];</span> <span class="synStatement">return</span> filter; } </pre><p><br /> </p> <pre class="code" data-unlink>2013-12-08 21:18:50.725 SpriteKitGuide[14458:303] { CIAttributeDescription = &#34;Applies a directional spotlight effect to an image.&#34;; CIAttributeFilterCategories = ( CICategoryStylize, CICategoryVideo, CICategoryStillImage, CICategoryBuiltIn ); CIAttributeFilterDisplayName = &#34;Spot Light&#34;; CIAttributeFilterName = CISpotLight; CIAttributeReferenceDocumentation = &#34;http://developer.apple.com/cgi-bin/apple_ref.cgi?apple_ref=//apple_ref/doc/filter/ci/CISpotLight&#34;; inputBrightness = { CIAttributeClass = NSNumber; CIAttributeDefault = 3; CIAttributeDescription = &#34;The brightness of the spotlight.&#34;; CIAttributeDisplayName = Brightness; CIAttributeIdentity = 1; CIAttributeMin = 0; CIAttributeSliderMax = 10; CIAttributeSliderMin = 0; CIAttributeType = CIAttributeTypeDistance; CIUIParameterSet = CIUISetBasic; }; . . . inputImage = { CIAttributeClass = CIImage; CIAttributeDescription = &#34;The image to use as an input image. For filters that also use a background image, this is the foreground image.&#34;; CIAttributeDisplayName = Image; CIUIParameterSet = CIUISetBasic; }; inputLightPointsAt = { CIAttributeClass = CIVector; CIAttributeDefault = &#34;[200 200 0]&#34;; CIAttributeDescription = &#34;The x and y position that the spotlight points at.&#34;; CIAttributeDisplayName = &#34;Light Points At&#34;; CIAttributeType = CIAttributeTypePosition3; CIUIParameterSet = CIUISetBasic; }; inputLightPosition = { CIAttributeClass = CIVector; CIAttributeDefault = &#34;[400 600 150]&#34;; CIAttributeDescription = &#34;The x and y position of the spotlight.&#34;; CIAttributeDisplayName = &#34;Light Position&#34;; CIAttributeType = CIAttributeTypePosition3; CIUIParameterSet = CIUISetBasic; }; outputImage = { CIAttributeClass = CIImage; }; }</pre><p>と詳しい解説が見れます。</p><br /> <p>SpriteKit を学んだ集大成として自作アプリ Neko を作成してみました。実行画面は</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131214181929" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131214/20131214181929.png" alt="f:id:KYoshiaki:20131214181929p:image" title="f:id:KYoshiaki:20131214181929p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>です。</p><p>Neko を下記 URL で公開します。ソースは要望があれば公開します。</p> <pre>Sprite Kit を使ったアプリケーション。 Neko version 1.0 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Neko.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Neko.zip</a> </pre><p><span style="color: #cc0000">注意) "Neko は開発元が未確認のため開けません" と表示される場合、Finder 上で Neko を右クリック (CTRL + 左クリック) し、表示されたメニューから ’開く’ を選択してください。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%A4">ダイ</a>アログが表示されるので、'開く' ボタンをクリックすれば、アプリケーションが実行できるはずです。</span></p> KYoshiaki OS X Mountain Lion 10.8.5 上でウェブブラウザ Google Chrome に使われている JavaScript engine V8 を試す。 hatenablog://entry/11696248318758517414 2013-10-06T17:34:54+09:00 2013-10-06T17:34:54+09:00 enchantMOON ; The Hypertext Authoring Tablet http://enchantmoon.com/ 賛否両論がある enchantMOON を 2013/07/13(Sat) にアスキーストアで予約しました。随分待たされましたが、2013/09/21(Sat) に到着しました。URL を入力して Web を開くシールを作ってみました。次回にでも公開したいと思います。 enchantMOON が到着するまでに時間があったので、以前から興味があった enchantMOON の JavaScript Based Virtual Machine (EAGLEVM)… <pre>enchantMOON ; The Hypertext Authoring Tablet <a href="http://enchantmoon.com/">http://enchantmoon.com/</a> </pre><p>賛否両論がある enchantMOON を 2013/07/13(Sat) に<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%B9%A5%AD%A1%BC">アスキー</a>ストアで予約しました。随分待たされましたが、2013/09/21(Sat) に到着しました。URL を入力して Web を開くシールを作ってみました。次回にでも公開したいと思います。</p><br /> <p>enchantMOON が到着するまでに時間があったので、以前から興味があった enchantMOON の <a class="keyword" href="http://d.hatena.ne.jp/keyword/JavaScript">JavaScript</a> Based Virtual Machine (EAGLEVM) に利用されている V8 を試してみました。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Chrome">Chrome</a> V8 — <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Developers <a href="https://developers.google.com/v8/">https://developers.google.com/v8/</a> </pre><p>V8 は、ウェブブラウザ <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Chrome">Google Chrome</a> に使われている <a class="keyword" href="http://d.hatena.ne.jp/keyword/JavaScript">JavaScript</a> engine です。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC">プログラミング言語</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/C%2B%2B">C++</a> で書かれています。私の <a class="keyword" href="http://d.hatena.ne.jp/keyword/C%2B%2B">C++</a> の知識は、</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/C%2B%2B">C++</a> Primer(5th Edition)</p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0091I7FEQ/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/41LSlra7GOL._SL160_.jpg" class="hatena-asin-detail-image" alt="C++ Primer (5th Edition)" title="C++ Primer (5th Edition)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0091I7FEQ/yoshiakishome-22/">C++ Primer (5th Edition)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> Stanley B. Lippman,Stanley Lippman,Barbara Moo</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> Addison-Wesley Professional</li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/08/06</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle%C8%C7">Kindle版</a></li><li><a href="http://d.hatena.ne.jp/asin/B0091I7FEQ/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>を読んだ程度です。ほとんど <a class="keyword" href="http://d.hatena.ne.jp/keyword/C%2B%2B">C++</a> でプログラミングをしたことがない初心者です。</p><p>ソースのダウンロードは</p> <pre>How to Download and Build V8 - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Chrome">Chrome</a> V8 — <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Developers <a href="https://developers.google.com/v8/build">https://developers.google.com/v8/build</a> </pre> <pre>Source - v8 - How to get the V8 source code - V8 <a class="keyword" href="http://d.hatena.ne.jp/keyword/JavaScript">JavaScript</a> Engine - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Project Hosting <a href="http://code.google.com/p/v8/wiki/Source">http://code.google.com/p/v8/wiki/Source</a> </pre><p>Git を使わず <a class="keyword" href="http://d.hatena.ne.jp/keyword/Subversion">Subversion</a> を利用しました。</p><p>ターミナル上で</p> <pre class="code" data-unlink>~ $ svn checkout http://v8.googlecode.com/svn/trunk/ v8</pre><p>上記コマンド <a class="keyword" href="http://d.hatena.ne.jp/keyword/svn">svn</a> を用いて<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>を入手しました。</p> <pre>BuildingWithGYP - v8 - Instructions to build V8 using GYP - V8 <a class="keyword" href="http://d.hatena.ne.jp/keyword/JavaScript">JavaScript</a> Engine - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Project Hosting <a href="http://code.google.com/p/v8/wiki/BuildingWithGYP">http://code.google.com/p/v8/wiki/BuildingWithGYP</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> Mountain Lion 上では GYP が正しく動作しないようなので、上記ページと v8/build/ReadMe.txt を参考に</p> <pre class="code" data-unlink>~ $ cd v8 ~/v8 $ make dependencies ~/v8 $ make x64.release ~/v8 $ make x64.release.check</pre><p>上記コマンドを実行しました。</p> <pre>Getting Started - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Chrome">Chrome</a> V8 — <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Developers <a href="https://developers.google.com/v8/get_started">https://developers.google.com/v8/get_started</a> Getting Started Audience <a class="keyword" href="http://d.hatena.ne.jp/keyword/Hello%20World">Hello World</a> Run the <a class="keyword" href="http://d.hatena.ne.jp/keyword/Hello%20World">Hello World</a> example </pre><p>上記ページ、最初に紹介されている <a class="keyword" href="http://d.hatena.ne.jp/keyword/Hello%20World">Hello World</a> のソースは handle、scope、context が追加されていないので、ビルドできません。その下の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Hello%20World">Hello World</a> サンプルソースを hello_world.cc として保存し、v8 フォルダにコピーします。ターミナル上で次のコマンド</p> <pre class="code" data-unlink>~/v8 $ g++ -Iinclude hello_world.cc -o hello_world out/x64.release/libv8_base.x64.a out/x64.release/libv8_snapshot.a out/x64.release/libicu{data,i18n,uc}.a -lpthread</pre><p>を実行するとビルドできました。実際に hello_world を実行すると次のように</p> <pre class="code" data-unlink>~/v8 $ ./hello_world Hello, World! ~/v8 $ </pre><p>表示されます。</p><p>ディレクトリ v8/out/x64.release には</p> <pre class="code" data-unlink>~/v8 $ cd out/x64.release/ ~/v8/out/x64.release $ ls cctest libv8_nosnapshot.x64.a obj.target d8 libv8_snapshot.a preparser libicudata.a lineprocessor process libicui18n.a mksnapshot.x64 shell libicuuc.a obj libv8_base.x64.a obj.host ~/v8/out/x64.release $ </pre><p>hello_world.cc のビルドに必要なライブラリ</p> <pre class="code" data-unlink>libv8_base.x64.a ibv8_snapshot.a libicudata.a libicui18n.a libicuuc.a</pre><p>と v8/samples のサンプルをビルドした実行ファイル</p> <pre class="code" data-unlink>shell process lineprocessor</pre><p>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Javascript">Javascript</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%BF%A5%D7%A5%EA%A5%BF">インタプリタ</a> d8 が含まれています。以下が d8 の実行例です。</p> <pre class="code" data-unlink>~ $ cd v8/out/x64.release/ ~/v8/out/x64.release $ ./d8 V8 version 3.22.1 [console: dumb] d8&gt; var x=Math.sqrt(2); undefined d8&gt; x 1.4142135623730951 d8&gt; var r = function(x,y,x1,y1) { return Math.sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y)); }; undefined d8&gt; r(0,0,1,1); 1.4142135623730951 d8&gt; r(0,0,1,Math.sqrt(3)); 1.9999999999999998 d8&gt; quit() ~/v8/out/x64.release $ </pre><p>v8/samples ディレクトリのサンプルソースを理解するには、</p> <pre class="code" data-unlink>~ $ cd v8/samples ~/v8/samples $ ls count-hosts.js process.cc shell.cc lineprocessor.cc samples.gyp ~/v8/samples $ </pre> <pre>Getting Started - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Chrome">Chrome</a> V8 — <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Developers <a href="https://developers.google.com/v8/get_started">https://developers.google.com/v8/get_started</a> Getting Started </pre> <pre>Embedder's Guide - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Chrome">Chrome</a> V8 — <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Developers <a href="https://developers.google.com/v8/embed">https://developers.google.com/v8/embed</a> ▼ Documentation Embedder's Guide </pre><p>上記ページが参考になります。サンプル <a class="keyword" href="http://d.hatena.ne.jp/keyword/Hello%20World">Hello World</a> や Contexts、自作の関数を定義するのに利用する Templates など、基本的な仕組みを理解するのに便利です。</p> <pre>v8: v8::String Class Reference <a href="http://izs.me/v8-docs/classv8_1_1String.html">http://izs.me/v8-docs/classv8_1_1String.html</a> </pre><p>また、上記ページで各クラスの説明を見ることができます。ディレクトリ v8/src、v8/include には、ソースやヘッダがあるので勉強になると思います。</p><p>私自身、初歩的なことがわかっていなかったので、</p> <pre class="code" data-unlink><span class="synComment">// hello_world.cc</span> Handle&lt;String&gt; source = String::New(<span class="synConstant">&quot;'Hello' + ', World!'&quot;</span>); </pre><p>の String::New() は Local<String> 返すのに Handle<String> に代入していたので、疑問に思っていたのですが、Local<String> は Handle<String> を継承しているのですね!</p><p>また、process.cc 351行目</p> <pre class="code" data-unlink>string ObjectToString(Local&lt;Value&gt; value) { String::Utf8Value utf8_value(value); <span class="synStatement">return</span> string(*utf8_value); } </pre><p>の *utf8_value が理解できなかったのですが、</p> <pre class="code" data-unlink>~ $ cd v8/include ~/v8/include $ grep -e &#34;class V8_EXPORT Utf8Value&#34; *.h v8.h: class V8_EXPORT Utf8Value { ~/v8/include $ </pre><pre class="code" data-unlink><span class="synComment">// ~/v8/include/v8.h 1838 行目</span> <span class="synType">class</span> V8_EXPORT Utf8Value { <span class="synStatement">public</span>: <span class="synType">explicit</span> Utf8Value(Handle&lt;v8::Value&gt; obj); ~Utf8Value(); <span class="synType">char</span>* <span class="synStatement">operator</span>*() { <span class="synStatement">return</span> str_; } <span class="synType">const</span> <span class="synType">char</span>* <span class="synStatement">operator</span>*() <span class="synType">const</span> { <span class="synStatement">return</span> str_; } <span class="synType">int</span> length() <span class="synType">const</span> { <span class="synStatement">return</span> length_; } </pre><p>String::Utf8Value には、上の char* operator*() { return str_; } ように * <a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%E9%BB%BB%BB%D2">演算子</a>が定義されているのですね!</p> <pre>Sample Code - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Chrome">Chrome</a> V8 — <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Developers <a href="https://developers.google.com/v8/samples">https://developers.google.com/v8/samples</a> ▼ Documentation Sample Code </pre><p>上記ページでサンプルコード、process.cc、shell.cc の簡単な説明があります。</p><br /> <p></p> <pre class="code" data-unlink>~/v8/samples $ ls count-hosts.js process.cc shell.cc lineprocessor.cc samples.gyp ~/v8/samples $ </pre><p>上記 v8/samples ディレクトリあるサンプルコード shell.cc、process.cc、lineprocessor.cc を説明したいと思います。</p><br /> <p>説明をしやすいように、下記のようにディレクトリ v8/samples 内のすべてのファイルをディレクトリ v8/out/x64.release/ に cp コマンドを使ってコピーしました。</p> <pre class="code" data-unlink>~ $ cd v8/samples/ ~/v8/samples $ cp *.* ../out/x64.release/ ~/v8/samples $ </pre><p><br /> ■サンプルコード shell.cc</p><p>shell.cc は、コマンドライン引数として --help、--shell、ファイル名を指定できます。</p> <pre class="code" data-unlink>~ $ cd v8/out/x64.release/ ~/v8/out/x64.release $ ./shell V8 version 3.22.1 [sample shell] &gt; 1+1 2 &gt; var x=1; &gt; print(x); 1 &gt; var text = read(&#34;shell.cc&#34;); &gt; print(text); .... &gt; load(&#34;count-hosts.js&#34;); &gt; version(); 3.22.1 &gt; quit(); ~/v8/out/x64.release $ </pre><p>shell.cc<br /> 99行目より、自作関数として print()、read()、load()、quit()、version() が使えます。</p> <pre class="code" data-unlink>print(x) : 引数を表示する。 read(filename) : 引数のファイルを読み込む load(filename) : 引数のファイルを読み込み、コンパイルして実行する。 quit() : プログラム終了 version() : バージョン表示</pre><p>shell のコマンドライン引数に <a class="keyword" href="http://d.hatena.ne.jp/keyword/javascript">javascript</a> ファイルを指定すると <a class="keyword" href="http://d.hatena.ne.jp/keyword/javascript">javascript</a> ファイルを実行します。</p> <pre class="code" data-unlink>~/v8/out/x64.release $ ./shell count-hosts.js ~/v8/out/x64.release $ </pre><p>実行した後、shell モードに入りたい場合は、コマンドライン引数に --shell を指定します。</p> <pre class="code" data-unlink>~/v8/out/x64.release $ ./shell count-hosts.js --shell V8 version 3.22.1 [sample shell] &gt; Initialize(); &gt; var request = {host:&#34;localhost&#34;, path:&#34;/&#34;, referrer:&#34;apple.com&#34;, userAgent:&#34;Safari&#34;}; &gt; var options = {verbose:0}; &gt; var output = {}; &gt; Process(request); &gt; print(output); [object Object] &gt; print(request.host); localhost &gt; print(output[&#34;localhost&#34;]); 1 &gt; quit(); ~/v8/out/x64.release $ </pre><p><br /> ■サンプルコード process.cc</p><p>process.cc は v8/samples ディレクトリある <a class="keyword" href="http://d.hatena.ne.jp/keyword/Javascript">Javascript</a> ファイル count-hosts.js を利用します。</p><p>プログラム process.cc 内で log 関数、変数 options.verbose、output を作り、process.cc 599行目</p> <pre class="code" data-unlink><span class="synType">const</span> <span class="synType">int</span> kSampleSize = <span class="synConstant">6</span>; StringHttpRequest kSampleRequests[kSampleSize] = { StringHttpRequest(<span class="synConstant">&quot;/process.cc&quot;</span>, <span class="synConstant">&quot;localhost&quot;</span>, <span class="synConstant">&quot;google.com&quot;</span>, <span class="synConstant">&quot;firefox&quot;</span>), StringHttpRequest(<span class="synConstant">&quot;/&quot;</span>, <span class="synConstant">&quot;localhost&quot;</span>, <span class="synConstant">&quot;google.net&quot;</span>, <span class="synConstant">&quot;firefox&quot;</span>), StringHttpRequest(<span class="synConstant">&quot;/&quot;</span>, <span class="synConstant">&quot;localhost&quot;</span>, <span class="synConstant">&quot;google.org&quot;</span>, <span class="synConstant">&quot;safari&quot;</span>), StringHttpRequest(<span class="synConstant">&quot;/&quot;</span>, <span class="synConstant">&quot;localhost&quot;</span>, <span class="synConstant">&quot;yahoo.com&quot;</span>, <span class="synConstant">&quot;ie&quot;</span>), StringHttpRequest(<span class="synConstant">&quot;/&quot;</span>, <span class="synConstant">&quot;localhost&quot;</span>, <span class="synConstant">&quot;yahoo.com&quot;</span>, <span class="synConstant">&quot;safari&quot;</span>), StringHttpRequest(<span class="synConstant">&quot;/&quot;</span>, <span class="synConstant">&quot;localhost&quot;</span>, <span class="synConstant">&quot;yahoo.com&quot;</span>, <span class="synConstant">&quot;firefox&quot;</span>) }; </pre><pre class="code" data-unlink>StringHttpRequest(&#34;/process.cc&#34;, &#34;localhost&#34;, &#34;google.com&#34;, &#34;firefox&#34;), を例にとると var request = {path:&#34;/proces.cc&#34;, host:&#34;localhost&#34;, referrer:&#34;google.com&#34;, userAgent:&#34;firefox&#34;}; になります。</pre><p>で宣言されているそれぞれの request を <a class="keyword" href="http://d.hatena.ne.jp/keyword/Javascript">Javascript</a> ファイル count-hosts.js 内の Process 関数で呼び出します。結果が、変数 output に格納されます。output の内容は、process,cc 652行目</p> <pre class="code" data-unlink>PrintMap(&amp;output); </pre><p>で表示します。実行結果は</p> <pre class="code" data-unlink>~/v8/out/x64.release $ ./process count-hosts.js google.com: 1 google.net: 1 google.org: 1 yahoo.com: 3 ~/v8/out/x64.release $ </pre><p>になります。 ./process のコマンドライン引数として verbose=true を宣言すると log 関数が呼び出されます。</p> <pre class="code" data-unlink>~/v8/out/x64.release $ ./process count-hosts.js verbose=true Logged: Processing google.com/process.cc from localhost@firefox Logged: Processing google.net/ from localhost@firefox Logged: Processing google.org/ from localhost@safari Logged: Processing yahoo.com/ from localhost@ie Logged: Processing yahoo.com/ from localhost@safari Logged: Processing yahoo.com/ from localhost@firefox google.com: 1 google.net: 1 google.org: 1 yahoo.com: 3 ~/v8/out/x64.release $ </pre><p><br /> ■サンプルコード lineprocessor.cc</p><p> lineprocessor は、コマンドライン引数として --main-cycle-in-cpp、--main-cycle-in-js のどちらかを指定することで違った動作をします。ループ処理を <a class="keyword" href="http://d.hatena.ne.jp/keyword/C%2B%2B">C++</a>側か、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Javascript">Javascript</a> 側で行うかの違いがあります。</p><p>サンプルコード lineprocessor.cc の 56 行目にある</p> <pre class="code" data-unlink><span class="synIdentifier">function</span> ProcessLine(input_line) <span class="synIdentifier">{</span> <span class="synStatement">return</span> <span class="synConstant">&quot;&gt;&gt;&gt;&quot;</span> + input_line + <span class="synConstant">&quot;&lt;&lt;&lt;&quot;</span>; <span class="synIdentifier">}</span> </pre><p>の部分を main-cycle-in-cpp.js という名前で保存します。</p><p>コマンドライン引数を main-cycle-in-cpp.js、--main-cycle-in-cpp とし、実行すると</p> <pre class="code" data-unlink>~/v8/out/x64.release $ ./lineprocessor main-cycle-in-cpp.js --main-cycle-in-cpp hello &gt;&gt;&gt;hello&lt;&lt;&lt; bye &gt;&gt;&gt;bye&lt;&lt;&lt; ^C ~/v8/out/x64.release $ </pre><p>lineprocessor.cc 内で入力処理を行い、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Javascript">Javascript</a> ファイルの関数 ProcessLine(input_line) を呼び出します。関数 ProcessLine(input_line) の返り値を下記 RunCppCycle 関数内の</p> <pre class="code" data-unlink> printf(<span class="synConstant">&quot;</span><span class="synSpecial">%s\n</span><span class="synConstant">&quot;</span>, cstr); </pre><p>で表示します。</p><p>272行目</p> <pre class="code" data-unlink><span class="synType">bool</span> RunCppCycle(v8::Handle&lt;v8::Script&gt; script, v8::Local&lt;v8::Context&gt; context, <span class="synType">bool</span> report_exceptions) { </pre><p>lineprocessor.cc 側の上記 RunCppCycle 関数内でループ処理を行います。</p><p>サンプルコード lineprocessor.cc の 66 行目にある</p> <pre class="code" data-unlink><span class="synStatement">while</span> (<span class="synConstant">true</span>) <span class="synIdentifier">{</span> <span class="synIdentifier">var</span> line = read_line(); <span class="synStatement">if</span> (!line) <span class="synIdentifier">{</span> <span class="synStatement">break</span>; <span class="synIdentifier">}</span> <span class="synIdentifier">var</span> res = line + <span class="synConstant">&quot; | &quot;</span> + line; print(res); <span class="synIdentifier">}</span> </pre><p>の部分を main-cycle-in-js.js という名前で保存します。</p><p>コマンドライン引数を main-cycle-in-js.js 、--main-cycle-in-js としてし、実行すると</p> <pre class="code" data-unlink>~/v8/out/x64.release $ ./lineprocessor main-cycle-in-js.js --main-cycle-in-js hello hello | hello bye bye | bye ^C ~/v8/out/x64.release $ </pre><p>lineprocessor.cc 内で read_line() を定義し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Javascript">Javascript</a> 側でループ処理をおこないます。</p><p>lineprocessor.cc の肝は、デバッガに対応していることです。</p><br /> <p>■ <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Chrome">Google Chrome</a> Developer Tools for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a></p><p>V8 でデバッガを利用するには、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Chrome">Google Chrome</a> Developer Tools for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a> が必要です。</p> <pre>chromedevtools - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Chrome">Google Chrome</a> Developer Tools for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Project Hosting <a href="http://code.google.com/p/chromedevtools/">http://code.google.com/p/chromedevtools/</a> </pre><p>が、参考になります。</p><p>2013/09/29(Sun) 現在、<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> Mountain Lion バージョン 10.8.5 上では、</p> <pre class="code" data-unlink>~ $ java -version java version &#34;1.6.0_51&#34; Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509) Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode) ~ $ </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> のバージョンは、1.6.0_51で問題ありません。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a> は、余計なものがインストールされないように</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a> Downloads <a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a> Standard 4.3.1, 196 MB Downloaded 381 Times Other Downloads Mac OS X 64 Bit </pre><p>から、一番上の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a> Standard 4.3.1, 196 MB <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 64 Bit をダウンロードしました。ダウンロードした <a class="keyword" href="http://d.hatena.ne.jp/keyword/eclipse">eclipse</a>-standard-kepler-SR1-<a class="keyword" href="http://d.hatena.ne.jp/keyword/macosx">macosx</a>-cocoa-<a class="keyword" href="http://d.hatena.ne.jp/keyword/x86">x86</a>_64.tar.gz ファイルを Finder 上でダブルクリックして展開し、作成された <a class="keyword" href="http://d.hatena.ne.jp/keyword/eclipse">eclipse</a> フォルダを /アプリケーション フォルダに移動します。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/eclipse">eclipse</a> を再インストールルする時は、/アプリケーション フォルダ内の <a class="keyword" href="http://d.hatena.ne.jp/keyword/eclipse">eclipse</a> フォルダ と ~/書類/workspace フォルダを削除してください。workspace フォルダには、不可視ファイルが含まれているので必ず削除してください。</p> <pre>DebuggerTutorial - chromedevtools - First steps of using Debugger. - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Chrome">Google Chrome</a> Developer Tools for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Project Hosting <a href="http://code.google.com/p/chromedevtools/wiki/DebuggerTutorial">http://code.google.com/p/chromedevtools/wiki/DebuggerTutorial</a> </pre><p>上記 URL を参考に、<a class="keyword" href="http://d.hatena.ne.jp/keyword/SDK">SDK</a> をインストールする必要があります。</p><p>/アプリケーション/<a class="keyword" href="http://d.hatena.ne.jp/keyword/eclipse">eclipse</a> フォルダ 内の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a> を Finder 上でダブルクリックして起動します。</p><p>メニュー Help/Install New Software.... を選びます。</p><p>図 1</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165739" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165739.png" alt="f:id:KYoshiaki:20131006165739p:image" title="f:id:KYoshiaki:20131006165739p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 1の一番上のテキストフィールド Wok with: に</p> <pre><a href="http://chromedevtools.googlecode.com/svn/update/dev/">http://chromedevtools.googlecode.com/svn/update/dev/</a> </pre><p>を入力します。Add ボタンをクリックします。</p><p>図 2</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165740" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165740.png" alt="f:id:KYoshiaki:20131006165740p:image" title="f:id:KYoshiaki:20131006165740p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 2 の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%A4">ダイ</a>アログが開くので、Name: に</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Chrome">Google Chrome</a> Developer Tools </pre><p>と入力して OK ボタンをクリックします。</p><p>図 3</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165741" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165741.png" alt="f:id:KYoshiaki:20131006165741p:image" title="f:id:KYoshiaki:20131006165741p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 3 の中央に表示される大きなエリアの <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Chrome">Google Chrome</a> Developer Tools 横にある ▼ をクリックして開きます。</p><p>“<a class="keyword" href="http://d.hatena.ne.jp/keyword/Chromium">Chromium</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/JavaScript">JavaScript</a> Remote Debugger” にチェックを入れます。</p><p>後は Next > ボタンを 2 回クリックし、ライセンス同意ボタンを選択して終了します。途中、セキュリティ警告が表示されますが、OK ボタンをクリックしてください。</p><br /> <p>■サンプルコード lineprocessor.cc をデバッガで試す</p> <pre>AddDebuggerSupport - v8 - Adding debugger support to application HOW-TO. - V8 <a class="keyword" href="http://d.hatena.ne.jp/keyword/JavaScript">JavaScript</a> Engine - <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Project Hosting <a href="http://code.google.com/p/v8/wiki/AddDebuggerSupport">http://code.google.com/p/v8/wiki/AddDebuggerSupport</a> </pre><p>上記 URL が参考になります。</p><p>まず、最初にターミナルで、コマンドライン引数 -p 9222、--callback を追加して lineprocessor 実行します。</p> <pre class="code" data-unlink>~/v8/out/x64.release $ ./lineprocessor -p 9222 main-cycle-in-cpp.js --main-cycle-in-cpp --callback</pre><p>それから、</p><p>図 4</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165742" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165742.png" alt="f:id:KYoshiaki:20131006165742p:image" title="f:id:KYoshiaki:20131006165742p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 4のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a> を起動、メニュー Run/Debug Configurations... を選択します。</p><p>図 5</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165743" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165743.png" alt="f:id:KYoshiaki:20131006165743p:image" title="f:id:KYoshiaki:20131006165743p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 5 のように、左エリア内の Standalone V8 VM を選択して、上部ノートに + が付いたアイコンをクリックします。図 6のように設定が新規に作成されます。</p><p>図 6</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165744" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165744.png" alt="f:id:KYoshiaki:20131006165744p:image" title="f:id:KYoshiaki:20131006165744p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 6 のように remote タブの Host: <a class="keyword" href="http://d.hatena.ne.jp/keyword/localhost">localhost</a>、Port: 9222、show debugger network cominucation console にチェックを入れます。 Apply ボタンをクリックしてから Debug ボタンをクリックします。</p><p>図 7</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165745" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165745.png" alt="f:id:KYoshiaki:20131006165745p:image" title="f:id:KYoshiaki:20131006165745p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>上図のように表示されます。左上の一番上のアイコンをクリックすると下図のように表示されます。</p><p>図 8</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165746" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165746.png" alt="f:id:KYoshiaki:20131006165746p:image" title="f:id:KYoshiaki:20131006165746p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>Project Explorer の New_configuration の▼を開き、main-cycle-in-cpp.js をダブルクリックして開きます。<br /> ソース main-cycle-in-cpp.js の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D6%A5%EC%A1%BC%A5%AF%A5%DD%A5%A4%A5%F3%A5%C8">ブレークポイント</a>を仕掛けたい行をクリックすると、図 9 のように青色反転させます。</p><p>図 9</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165747" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165747.png" alt="f:id:KYoshiaki:20131006165747p:image" title="f:id:KYoshiaki:20131006165747p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 10</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165748" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165748.png" alt="f:id:KYoshiaki:20131006165748p:image" title="f:id:KYoshiaki:20131006165748p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>図 10 のメニュー 'Run'/'Add V8/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Chrome">Chrome</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Javascript">Javascript</a> Exception Breakpoint'/'Togle Line Breakpoint' を選択して、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D6%A5%EC%A1%BC%A5%AF%A5%DD%A5%A4%A5%F3%A5%C8">ブレークポイント</a>を仕掛けます。</p><p>図 11</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165749" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165749.png" alt="f:id:KYoshiaki:20131006165749p:image" title="f:id:KYoshiaki:20131006165749p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>ターミナル側で</p> <pre class="code" data-unlink>./lineprocessor capitalizer.js -p 9222 --main-cycle-in-cpp --callback hello</pre><p>hello と文字を入力して Return キーを押します。</p><p>すると<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D6%A5%EC%A1%BC%A5%AF%A5%DD%A5%A4%A5%F3%A5%C8">ブレークポイント</a>で実行が止まり、デバッガーを表示していいか尋ねてくるので、Yes ボタンをクリックします。</p><p>Variables タブで、変数 input_line に "Hello" という文字列が渡されているのが確認できると思います。</p><p>メニュー Window/Show Toolbar を選び、ツールバーを表示します。ツールバーの赤色正方形の横にステップイン、ステップオーバーなどのボタンがあります。</p><p>図 12</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165750" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165750.png" alt="f:id:KYoshiaki:20131006165750p:image" title="f:id:KYoshiaki:20131006165750p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>Resume ボタン(緑色の再生ボタン) 押すとターミナル側で</p> <pre class="code" data-unlink>~ $ cd v8/out/x64.release/ ~/v8/out/x64.release $ ./lineprocessor -p 9222 main-cycle-in-cpp.js --main-cycle-in-cpp --callback hello &gt;&gt;&gt;hello&lt;&lt;&lt;</pre><p>図 13</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165751" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165751.png" alt="f:id:KYoshiaki:20131006165751p:image" title="f:id:KYoshiaki:20131006165751p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>>>>hello<<< という文字が表示されます。ターミナルで CTRL + C を押せば終了させることができます。</p><br /> <p>また、main-cycle-in-js.js、--main-cycle-in-js のコマンドライン引数を lineprocessor に渡しても、同じようにデバッガを使うことができます。</p> <pre class="code" data-unlink>~/v8/out/x64.release $ ./lineprocessor main-cycle-in-js.js --main-cycle-in-js -p 9222 --callback hello</pre><p>変数 line の内容を表示するには、ソースの line という文字にカーソルを合わせます。 図 14 のように "hello"というポップアップが現れます。</p> <pre class="code" data-unlink><span class="synStatement">while</span> (<span class="synConstant">true</span>) <span class="synIdentifier">{</span> <span class="synIdentifier">var</span> line = read_line(); <span class="synStatement">if</span> (!line) <span class="synIdentifier">{</span> <span class="synStatement">break</span>; <span class="synIdentifier">}</span> <span class="synIdentifier">var</span> res = line + <span class="synConstant">&quot; | &quot;</span> + line; print(res); <span class="synIdentifier">}</span> </pre><p>図 14</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20131006165752" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20131006/20131006165752.png" alt="f:id:KYoshiaki:20131006165752p:image" title="f:id:KYoshiaki:20131006165752p:image" class="hatena-fotolife" itemprop="image"></a></span></p> KYoshiaki プチコンmkII プログラム PBR (Petit Book Reader) 用 Mac 版補助ツール ConvertPTC 公開 hatenablog://entry/11696248318757075064 2013-08-25T18:44:00+09:00 2013-08-25T19:08:56+09:00 「プログラミングコンテスト 第二回 プチコン大喜利 審査結果発表」 http://smileboom.com/special/ptcm2/co_contest/ 第二回 プチコン大喜利の審査結果が発表されました。早速、QR コードを読み取りました。特に Gust Notch? さん作 ★プロ生ちゃん特別賞★ PBR (Petit Book Reader) 作/ Gust Notch? さん GN_PBR GN_MKBL 青空文庫リーダー の deflate アルゴリズム実装には驚きました。 最近 Twiitter などで公開されている QR コードを追いかけていませんが、それでも自分の作りかけ… <pre>「<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%A5%B3%A5%F3%A5%C6%A5%B9%A5%C8">プログラミングコンテスト</a> 第二回 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>大喜利 審査結果発表」 <a href="http://smileboom.com/special/ptcm2/co_contest/">http://smileboom.com/special/ptcm2/co_contest/</a> </pre><p>第二回 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>大喜利の審査結果が発表されました。早速、QR コードを読み取りました。特に Gust Notch? さん作</p> <pre>★プロ生ちゃん特別賞★ PBR (Petit Book Reader) 作/ Gust Notch? さん GN_PBR GN_MKBL <a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%C4%B6%F5%CA%B8%B8%CB">青空文庫</a>リーダー </pre><p>の deflate アルゴリズム実装には驚きました。</p><br /> <p>最近 Twiitter などで公開されている QR コードを追いかけていませんが、それでも自分の作りかけのプログラムも含めると約360本ほどあります。どんなプログラムがあるのか、ほとんど忘れてしまいました。それで、Mac のメモに <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> などの発言をプログラムごとにまとめてあります。これを PBR (Petit Book Reader) で読めたら便利だと思い、早速試してみました。</p><br /> <p>(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> の発言を公開するわけにはいかないので、ここでは OOGIRI_B.txt を使用しています。テキストファイル OOGIRI_B.txt は、第二回 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>大喜利の結果をまとめたものです。<a class="keyword" href="http://d.hatena.ne.jp/keyword/QR%A5%B3%A1%BC%A5%C9">QRコード</a>のファイル名、プログラム名も書いてあります。どんなプログラムがあったか確認するのに便利です。後ほど紹介するアプリ ConvertPTC に含まれています。PTC ファイル化されているので、Windows ユーザーでも利用できます。 )</p><br /> <p>テキストファイル OOGIRI_B.txt を<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9">文字コード</a> : '日本語 (Shift JIS)'、改行コード : 'Windows CR LF' で保存し、ターミナル上で <a class="keyword" href="http://d.hatena.ne.jp/keyword/gzip">gzip</a> コマンドを使って</p> <pre class="code" data-unlink>~ $ cd Desktop/ConvertPTC ~/Desktop/ConvertPTC $ gzip -c OOGIRI_B.txt &gt; OOGIRI_B.gz ~/Desktop/ConvertPTC $ </pre><p>上記のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/GZIP">GZIP</a> 圧縮ファイル OOGIRI_B.gz を作成しました。</p><p>はずかしいのですが、最初は圧縮書庫形式を TAR 形式 + <a class="keyword" href="http://d.hatena.ne.jp/keyword/GZIP">GZIP</a> 形式</p> <pre class="code" data-unlink> $ cd ~/Desktop/ConvertPTC/ ~/Desktop/ConvertPTC $ tar czvf OOGIRI_B.tar.gz OOGIRI_B.txt a OOGIRI_B.txt ~/Desktop/ConvertPTC $ </pre><p>のように tar.gz に圧縮していました。また、圧縮したアーカイブ・ファイルを展開するには</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/GZIP">GZIP</a> 圧縮ファイルの展開</p> <pre class="code" data-unlink>~/Desktop/ConvertPTC $ gzip -dc OOGIRI_B.gz &gt; OOGIRI_B.txt ~/Desktop/ConvertPTC $ </pre><p> TAR 形式 + <a class="keyword" href="http://d.hatena.ne.jp/keyword/GZIP">GZIP</a> 形式の展開</p> <pre class="code" data-unlink>~/Desktop/ConvertPTC $ tar xzvf OOGIRI_B.tar.gz x ./._OOGIRI_B.txt x OOGIRI_B.txt ~/Desktop/ConvertPTC $ </pre><p>以上のコマンドでできます。</p><br /> <p>後は、PBR (Petit Book Reader) のマニュアルに説明されている通り、</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a> MkII 開発支援ツール DSPCBMP <a href="http://www.aogondo.net/PetitCom/DSPCBMP/">http://www.aogondo.net/PetitCom/DSPCBMP/</a> </pre><p>DSPCBMP を使って PTCファイルに変換しました。ところが Mac と Windows 間でファイルをやり取りしているせいか正しく変換されていないようです。(私の使用方法に問題があるのかもしれません。)</p><br /> <p>そこで、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby">Ruby</a> で PTC ファイルに変換するプログラムを作ってみたのですが、私の技術力不足でなかなか思った通りの動作をしてくれません。それで思いきって Mac 用の PTC 変換プログラムを作ってみました。折角なので、テキストファイルをドラッグ・ドロップするだけで <a class="keyword" href="http://d.hatena.ne.jp/keyword/GZIP">GZIP</a> 圧縮し、PTC ファイル化するようにしました。十分な動作確認をしていないので注意してください。</p><br /> <p>下記 URL で公開します。</p> <pre>Gust Notch? さん作 PBR (Petit Book Reader) で読むことができる GRP 形式 PTC ファイルを Mac 上で作成する プログラム ConvertPTC。 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/ConvertPTC.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/ConvertPTC.zip</a> </pre><p><span style="color: #cc0000">注意) GRP: OOGIRI_B を GN_PBR で読み込む時、エラーが出ます。GN_PBR を修正する必要があります。 上記 URL の ConvertPTC.zip に含まれる ReadMe を参照してください。Windows ユーザーにも ReadMe を読めるように PDF 形式で保存した ReadMe も同封しておきました。<br /> </span></p><p>詳しくは、</p> <pre class="code" data-unlink>【使用方法】 5) プログラム GN_PBR を修正。</pre><p>を参照してください。</p><br /> <p>文章ファイルリスト MEM: BOOKLIST を編集すると PBR (Petit Book Reader) GN_PBRの 起動画面で、文書タイトルをタッチするだけで読み込むことができます。その方法も、上記 URL の ConvertPTC.zip に含まれる ReadMe </p> <pre class="code" data-unlink>【Tips】 4) 文書ファイルリスト GN_MKBL </pre><p>に解説してあります。</p><br /> <p></p> <pre>「<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%A5%B3%A5%F3%A5%C6%A5%B9%A5%C8">プログラミングコンテスト</a> 第二回 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>大喜利 審査結果発表」 <a href="http://smileboom.com/special/ptcm2/co_contest/">http://smileboom.com/special/ptcm2/co_contest/</a> 技術賞 一分間戦争 作/ Ackieee さん OMWAR PDF 書類 manual-omwar.pdf <a href="http://smileboom.com/special/ptcm2/co_contest/media/manual-omwar.pdf">http://smileboom.com/special/ptcm2/co_contest/media/manual-omwar.pdf</a> </pre><p>に熱中しています。なかなか手強いですね。</p><p></p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a> 3号(仮称) <a href="http://smileboom.com/special/ptcm2/html_third.php">http://smileboom.com/special/ptcm2/html_third.php</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%F3%A5%C6%A5%F3%A5%C9%A1%BC3DS">ニンテンドー3DS</a> 用<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%C1%A5%B3%A5%F3">プチコン</a>が発表されました。近日発売だそうです。楽しみですね。</p> KYoshiaki 拙作 iPhone 用 RSS リーダー iYKRSS、iPad 用 RSS リーダー iYKRSSHD 無料公開、 iOS 用 Twitter アプリ作成方法 hatenablog://entry/11696248318756208877 2013-07-28T21:00:03+09:00 2013-07-28T21:00:03+09:00 ちょっと宣伝です。拙作 RSS リーダー iYKRSS を iPhone 5 スクリーンで表示できるようにしました。また、iPad 版 RSS リーダー iYKRSSHD を Retina ディスプレイに対応しました。あらかじめ登録された芸能人ブログリストから RSS フィードを簡単に選ぶことができるので、RSS リーダーを使ったことがない初心者にもお勧めです。iYKRSS、iYKRSSHD 共に無料です。ただし、iYKRSSHD は、9月になると 85 円に戻ります。iPhone、iPod touch、iPad を持ってる人は、良かったら試しにダウンロードしてみてください。使い方がわからない… <p>ちょっと宣伝です。拙作 <a class="keyword" href="http://d.hatena.ne.jp/keyword/RSS">RSS</a> リーダー iYKRSS を <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone%205">iPhone 5</a> スクリーンで表示できるようにしました。また、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> 版 <a class="keyword" href="http://d.hatena.ne.jp/keyword/RSS">RSS</a> リーダー iYKRSSHD を Retina ディスプレイに対応しました。</p><p>あらかじめ登録された芸能人ブログリストから <a class="keyword" href="http://d.hatena.ne.jp/keyword/RSS">RSS</a> フィードを簡単に選ぶことができるので、<a class="keyword" href="http://d.hatena.ne.jp/keyword/RSS">RSS</a> リーダーを使ったことがない初心者にもお勧めです。</p><p>iYKRSS、iYKRSSHD 共に無料です。ただし、iYKRSSHD は、9月になると 85 円に戻ります。<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhone">iPhone</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPod%20touch">iPod touch</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> を持ってる人は、良かったら試しにダウンロードしてみてください。</p><p>使い方がわからない人は、気軽にコメントに書き込んでください。返事は、遅れるかもしれないのでご了承ください。</p> <pre>iYKRSS version 1.0.4 <a href="http://appstore.com/yoshiakikoyama/iykrss">http://appstore.com/yoshiakikoyama/iykrss</a> </pre><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130728203817" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130728/20130728203817.png" alt="f:id:KYoshiaki:20130728203817p:image" title="f:id:KYoshiaki:20130728203817p:image" class="hatena-fotolife" itemprop="image"></a></span> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130728203818" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130728/20130728203818.png" alt="f:id:KYoshiaki:20130728203818p:image" title="f:id:KYoshiaki:20130728203818p:image" class="hatena-fotolife" itemprop="image"></a></span></p> <pre>iYKRSSHD version 1.0.2 <a href="http://appstore.com/yoshiakikoyama/iykrsshd">http://appstore.com/yoshiakikoyama/iykrsshd</a> </pre><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130728203854" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130728/20130728203854.png" alt="f:id:KYoshiaki:20130728203854p:image" title="f:id:KYoshiaki:20130728203854p:image" class="hatena-fotolife" itemprop="image"></a></span></p><br /> <p>随分遅れましたが、前回、予告した iOS 用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリ作成方法を説明したいと思います。私自身、良く理解していない部分もあるので、間違いもあるかもしれません。</p><p>基本的に、下記 URL の <a class="keyword" href="http://d.hatena.ne.jp/keyword/REST%20API">REST API</a> v1.1 を</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/REST%20API">REST API</a> v1.1 Resources | <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> Developers <a href="https://dev.twitter.com/docs/api/1.1">https://dev.twitter.com/docs/api/1.1</a> </pre><p>使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> のタイムライン情報などを取得します。<a class="keyword" href="http://d.hatena.ne.jp/keyword/REST%20API">REST API</a> v1.1 を前回説明した GET、POST で送信するのですが、</p> <pre>Authorizing a request | <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> Developers <a href="https://dev.twitter.com/docs/auth/authorizing-request">https://dev.twitter.com/docs/auth/authorizing-request</a> </pre><p>上記、URL の</p> <pre class="code" data-unlink>POST /1/statuses/update.json?include_entities=true HTTP/1.1 Accept: */* Connection: close User-Agent: OAuth gem v0.4.4 Content-Type: application/x-www-form-urlencoded Authorization: OAuth oauth_consumer_key=&#34;xvz1evFS4wEEPTGEFPHBog&#34;, oauth_nonce=&#34;kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg&#34;, oauth_signature=&#34;tnnArxj06cWHq44gCs1OSKk%2FjLY%3D&#34;, oauth_signature_method=&#34;HMAC-SHA1&#34;, oauth_timestamp=&#34;1318622958&#34;, oauth_token=&#34;370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb&#34;, oauth_version=&#34;1.0&#34; Content-Length: 76 Host: api.twitter.com status=Hello%20Ladies%20%2b%20Gentlemen%2c%20a%20signed%20OAuth%20request%21</pre><p>のように、認証情報 (上の Authorization: OAuth の部分) が必要です。OAuth を使って取得する必要があります。</p><p>しかし、iOS の場合、</p> <pre> Using Reverse Auth | <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> Developers <a href="https://dev.twitter.com/docs/ios/using-reverse-auth">https://dev.twitter.com/docs/ios/using-reverse-auth</a> </pre><p>Reverse Auth を使って OAuth の情報を取得できます。取得の仕方は、</p> <pre> seancook/TWReverseAuthExample · GitHub <a href="https://github.com/seancook/TWReverseAuthExample">https://github.com/seancook/TWReverseAuthExample</a> </pre><p>を参考にした拙作サンプル</p> <pre>自作 iOS 用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリ サンプル TSTwitter <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip</a> </pre><p>に含まれています。 KeyDefines.h の</p> <pre class="code" data-unlink><span class="synPreProc">#define TWITTER_CONSUMER_KEY </span><span class="synConstant">@&quot;&quot;</span> <span class="synPreProc">#define TWITTER_CONSUMER_SECRET </span><span class="synConstant">@&quot;&quot;</span> </pre><p>を設定してください。Consumer key、Consumer secret を使うには、</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> Developers <a href="https://dev.twitter.com/">https://dev.twitter.com/</a> </pre><p>にログインして、自分のアイコンをクリックして表示されるメニューから 'My applications' を選び、'Create a new application' ボタンをクリックして My application を作成する必要があります。</p> <pre>Sign in with your <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> account | <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> Developers <a href="https://dev.twitter.com/apps">https://dev.twitter.com/apps</a> </pre><p>作成した application を選べば、Consumer key、Consumer secret は表示されます。</p><p></p> <pre>自作 iOS 用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリ サンプル TSTwitter <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip</a> </pre><p>の TSViewController.m の Reverse Auth を呼び出している部分は、</p><p>TSViewController.m</p> <pre class="code" data-unlink><span class="synIdentifier">- </span>(<span class="synType">void</span>)awakeFromNib { __unsafe_unretained TSViewController *me = <span class="synStatement">self</span>; _accountStore = [[ACAccountStore alloc] init]; _apiManager = [[TWAPIManager alloc] init]; ACAccountType *twitterType = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; _accounts = [_accountStore accountsWithAccountType:twitterType]; _account = [_accounts objectAtIndex:<span class="synConstant">0</span>]; NSLog(<span class="synConstant">@&quot;</span><span class="synSpecial">%@</span><span class="synConstant">&quot;</span>, _account); NSLog(<span class="synConstant">@&quot;identifier: </span><span class="synSpecial">%@</span><span class="synConstant">&quot;</span>, _account.identifier); NSLog(<span class="synConstant">@&quot;username: </span><span class="synSpecial">%@</span><span class="synConstant">&quot;</span>, _account.username); <span class="synStatement">if</span> ([TWITTER_CONSUMER_KEY isEqualToString:<span class="synConstant">@&quot;&quot;</span>]) { NSLog(<span class="synConstant">@&quot;TWITTER_CONSUMER_KEY=</span><span class="synSpecial">\&quot;\&quot;</span><span class="synConstant">&quot;</span>); [<span class="synStatement">self</span> requestApiTimeline:<span class="synStatement">self</span>]; <span class="synComment">// [self requestApi:me];</span> } <span class="synStatement">else</span> { [_apiManager performReverseAuthForAccount:_account withHandler:^(NSData *responseData, NSError *error) { if (responseData) { NSString *responseStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; NSArray *parts = [responseStr componentsSeparatedByString:<span class="synConstant">@&quot;&amp;&quot;</span>]; me.reverseAuth = [NSMutableDictionary dictionary]; <span class="synComment">// NSLog(@&quot;%@&quot;, responseStr);</span> for (NSString *line <span class="synType">in</span> parts) { NSArray *array = [line componentsSeparatedByString:<span class="synConstant">@&quot;=&quot;</span>]; [me.reverseAuth setObject:array[<span class="synConstant">1</span>] forKey:array[<span class="synConstant">0</span>]]; } <span class="synComment">// NSLog(@&quot;%@&quot;, me.reverseAuth);</span> <span class="synComment">//</span> [me requestApi:me]; <span class="synComment">// [me requestRawApi:me];</span> } }]; } } </pre><p>[_apiManager performReverseAuthForAccount:_account withHandler:^(NSData *responseData, NSError *error) { です。</p><p>_apiManager に引数、ACAccount *account と最終的に呼ばれるブロックを渡し、performReverseAuthForAccount: withHandler: メソッドを呼ぶと</p> <pre>Using Reverse Auth | <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> Developers <a href="https://dev.twitter.com/docs/ios/using-reverse-auth">https://dev.twitter.com/docs/ios/using-reverse-auth</a> </pre><p>の最後にある下部</p> <pre class="code" data-unlink>oauth_token=2311112785-EXKeLV5ezo3HHIaIf1T3ffeww0mR5dfYXKZjjRy0&amp;oauth_token_secret=KYxxxxx3U4Fxrxva3BGD92--12ehEzFwQ&amp;user_id=38895958&amp;screen_name=theseancook</pre><p>のような、oauth_token、oauth_token_secret、user_id、screen_name を NSData *responseData で返してくれます。ここで重要なのは、user_id を返してくれることです。実は、Reverse Auth を使わなくても、タイムラインを表示することができます。</p> <pre class="code" data-unlink> <span class="synStatement">if</span> ([TWITTER_CONSUMER_KEY isEqualToString:<span class="synConstant">@&quot;&quot;</span>]) { NSLog(<span class="synConstant">@&quot;TWITTER_CONSUMER_KEY=</span><span class="synSpecial">\&quot;\&quot;</span><span class="synConstant">&quot;</span>); [<span class="synStatement">self</span> requestApiTimeline:<span class="synStatement">self</span>]; <span class="synComment">// [self requestApi:me];</span> </pre><p>上の部分が <a class="keyword" href="http://d.hatena.ne.jp/keyword/TWITTER">TWITTER</a>_CONSUMER_KEY が設定されていない場合、Reverse Auth を使わないでタイムラインを表示しています。</p><p>ただし、他の <a class="keyword" href="http://d.hatena.ne.jp/keyword/REST%20API">REST API</a> v1.1 を使用するためには user_id が必要になってきます。</p><p>後は、簡単です。アップルが用意した<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>の SLReuest を使って <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a> v1.1 を呼び出す汎用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a> が</p> <pre class="code" data-unlink><span class="synIdentifier">- </span>(<span class="synType">void</span>)performTwitterRequestAccount:(ACAccount *)account Method:(SLRequestMethod)method URL:(NSURL *)url parameters:(NSDictionary *)dict completion:(TwitterRequestHandler)completion </pre><p>です。</p> <pre class="code" data-unlink><span class="synIdentifier">- </span>(<span class="synType">void</span>)requestApi:(<span class="synType">id</span>)sender { <span class="synComment">// url = [NSURL URLWithString:@&quot;http://192.168.1.6:9090/1.1/lists/list.json&quot;];</span> url = [NSURL URLWithString:<span class="synConstant">@&quot;https://api.twitter.com/1.1/lists/list.json&quot;</span>]; <span class="synComment">// dict = @{@&quot;user_id&quot; : @&quot;00000000&quot;}; // user_id を設定してください</span> dict = @{<span class="synConstant">@&quot;user_id&quot;</span> : [<span class="synStatement">self</span>.reverseAuth objectForKey:<span class="synConstant">@&quot;user_id&quot;</span>]}; <span class="synComment">// TWITTER_CONSUMER_KEY を設定していないと使えません。</span> [<span class="synStatement">self</span> performTwitterRequestAccount:_account Method:SLRequestMethodGET URL:url parameters:dict completion:^(NSArray *json, NSURLResponse *response, NSError *error) { NSLog(<span class="synConstant">@&quot;===&lt; List &gt;===&quot;</span>); <span class="synComment">// NSLog(@&quot;%@&quot;, json);</span> for (NSDictionary *list <span class="synType">in</span> json) { NSString *text = [NSString stringWithFormat:<span class="synConstant">@&quot;&lt;</span><span class="synSpecial">%@</span><span class="synConstant">&gt;</span><span class="synSpecial">\n</span><span class="synConstant"> list_id:</span><span class="synSpecial">%@\n</span><span class="synConstant"> slug:</span><span class="synSpecial">%@</span><span class="synConstant">&quot;</span>,[list objectForKey:<span class="synConstant">@&quot;uri&quot;</span>],[list objectForKey:<span class="synConstant">@&quot;id&quot;</span>],[list objectForKey:<span class="synConstant">@&quot;slug&quot;</span>]]; NSLog(<span class="synConstant">@&quot;</span><span class="synSpecial">%@</span><span class="synConstant">&quot;</span>, text); } }]; </pre><p>で、- (void)performTwitterRequestAccount:(ACAccount *)account Method:(SLRequestMethod)method URL:(NSURL *)url parameters:(NSDictionary *)dict completion:(TwitterRequestHandler)completion を呼び出しているのがわかると思います。この場合、自分のリストを表示しています。</p> <pre class="code" data-unlink> url = [NSURL URLWithString:<span class="synConstant">@&quot;http://192.168.1.6:9090/1.1/lists/list.json&quot;</span>]; </pre><p>を有効にして、前回の GET、POST のように SLRequest がどんなデータをサーバーに送信しているのか確認することができます。</p><p>まず、ターミナルで </p> <pre>自作 iOS 用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリ サンプル TSTwitter <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip</a> </pre><p>に含まれる server.rb を実行します。その後、TSTwitter.xcodeproj を開き、ツールバー上 Run ボタンをクリックします。画面が現れプログラムが起動し終えたら、Stop ボタンを押します。ターミナル上に実際の SLRequst がサーバーに送るデータが下図のように表示されます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130728204059" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130728/20130728204059.png" alt="f:id:KYoshiaki:20130728204059p:image" title="f:id:KYoshiaki:20130728204059p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>上図より、</p> <pre>Authorizing a request | <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> Developers <a href="https://dev.twitter.com/docs/auth/authorizing-request">https://dev.twitter.com/docs/auth/authorizing-request</a> </pre><p>上記 URL の</p> <pre class="code" data-unlink>POST /1/statuses/update.json?include_entities=true HTTP/1.1 Accept: */* Connection: close User-Agent: OAuth gem v0.4.4 Content-Type: application/x-www-form-urlencoded Authorization: OAuth oauth_consumer_key=&#34;xvz1evFS4wEEPTGEFPHBog&#34;, oauth_nonce=&#34;kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg&#34;, oauth_signature=&#34;tnnArxj06cWHq44gCs1OSKk%2FjLY%3D&#34;, oauth_signature_method=&#34;HMAC-SHA1&#34;, oauth_timestamp=&#34;1318622958&#34;, oauth_token=&#34;370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb&#34;, oauth_version=&#34;1.0&#34; Content-Length: 76 Host: api.twitter.com status=Hello%20Ladies%20%2b%20Gentlemen%2c%20a%20signed%20OAuth%20request%21</pre><p>と似ているのが理解できると思います。SLRequest を使わずに NSMutableURLRequest で実現したのが </p> <pre>自作 iOS 用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリ サンプル TSTwitter <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip</a> </pre><p>に含まれているソース </p> <pre class="code" data-unlink>TSSignedRequest.h TSSignedRequest.m</pre><p>の TSSignedRequest</p> <pre class="code" data-unlink><span class="synIdentifier">- </span>(<span class="synType">void</span>)performTSTwitterRequestMethod:(TSSignedRequestMethod)method URL:(NSURL *)url parameters:(NSDictionary *)dict completion:(TSTwitterRequestHandler)completion { <span class="synIdentifier">- </span>(<span class="synType">void</span>)requestRawApi:(<span class="synType">id</span>)sender { <span class="synIdentifier">- </span>(<span class="synType">void</span>)performTSTwitterRequestMethod:(TSSignedRequestMethod)method URL:(NSURL *)url parameters:(NSDictionary *)dict completion:(TSTwitterRequestHandler)completion { </pre><p>です。SLRequest と似ているので注意してください。TSSignedRequest を通常使う必要はありません。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a> の動作を確認するために、実験的に作ってみただけです。SLRequest を使ってください。</p><p>SLRequest を使うだけなら、Reverse Auth が必要ないと思うかもしれません。以前は ACAccount *account から user_id を取り出すことができたのですが、現在、Reverse Auth を使って user_id を取り出すしか方法がありません。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a> v1.1 を試すには、Mac <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a>、ターミナル上で <a class="keyword" href="http://d.hatena.ne.jp/keyword/curl">curl</a> を使う方法があります。</p><p>Mac 上で動作する本家 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリは、Mac <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> にあります。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> <a href="http://appstore.com/mac/twitterinc/twitter">http://appstore.com/mac/twitterinc/twitter</a> </pre><p>上記 URL をクリックすれば表示されます。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> をクリックして実行し、メニュー/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a>/環境設定... を選び、ツールバーから '開発者' を選択します。コンシュマーキー、アクセストークンを入力し、認証ボタンをクリックすると開発者メニューが有効になります。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130728204022" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130728/20130728204022.png" alt="f:id:KYoshiaki:20130728204022p:image" title="f:id:KYoshiaki:20130728204022p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>試しに、メニュー/開発/コンソール を選び、ホームタイムラインを表示してみたのが下図です。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130728204023" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130728/20130728204023.png" alt="f:id:KYoshiaki:20130728204023p:image" title="f:id:KYoshiaki:20130728204023p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/curl">curl</a> を使って試す方法は、まず、</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> Developers <a href="https://dev.twitter.com/">https://dev.twitter.com/</a> </pre><p>にログインします。</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/REST%20API">REST API</a> v1.1 Resources | <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> Developers <a href="https://dev.twitter.com/docs/api/1.1">https://dev.twitter.com/docs/api/1.1</a> </pre><p>を開き、呼びたい <a class="keyword" href="http://d.hatena.ne.jp/keyword/REST%20Api">REST Api</a> をクリックします。ここでは、GET statuses/home_timeline にします。<br /> 右側、OAuth tool で 'Select one of your Apps' から自分のアプリケーションを選びます。その後、Generate OAuth signature ボタンをクリックします。</p><p>表示されたページの Request <a class="keyword" href="http://d.hatena.ne.jp/keyword/URI">URI</a>: が正しく設定されているか確かめます。 Request query: に設定したいパラメーターを入力します。ここでは、count=2 と入力します。</p><p>この後、ページの一番下の See Oauth signature for this request ボタンをクリックします。</p><p>表示されたページの OAuth Signing Results に <a class="keyword" href="http://d.hatena.ne.jp/keyword/cURL">cURL</a> command と名前の項目があります。右横にパラメーターがセットされた <a class="keyword" href="http://d.hatena.ne.jp/keyword/curl">curl</a> コマンドが表示されています。それをコピーして、ターミナルにペーストし実行すれば、生の JSON データを取得することができます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130728204024" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130728/20130728204024.png" alt="f:id:KYoshiaki:20130728204024p:image" title="f:id:KYoshiaki:20130728204024p:image" class="hatena-fotolife" itemprop="image"></a></span></p> KYoshiaki 自作 iOS 用 Twitter アプリ サンプル TSTwitter 公開、シンプルな Ruby 製 HTTP サーバーを使った GET、POST 解析。 hatenablog://entry/11696248318753907161 2013-05-26T19:16:18+09:00 2013-05-28T13:55:32+09:00 iOS 用 Twitter アプリの作成方法について書こうと思っていたのですが、あまり時間がとれなかったので次回にしたいと思います。サンプルは、先に公開しておきます。 自作 iOS 用 Twitter アプリ サンプル TSTwitter http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip Twitter REST v1.1 API をコールし、結果を Xcode のコンソールに表示する簡単なプログラムです。( Social.framework を使用しているので iOS 6.0 以上で動作します。 ) xAuth、Apple 純正ソーシャ… <p>iOS 用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリの作成方法について書こうと思っていたのですが、あまり時間がとれなかったので次回にしたいと思います。サンプルは、先に公開しておきます。</p> <pre>自作 iOS 用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリ サンプル TSTwitter <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> REST v1.1 <a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a> をコールし、結果を <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> のコンソールに表示する簡単なプログラムです。( Social.framework を使用しているので iOS 6.0 以上で動作します。 ) </p><p>xAuth、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> 純正<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B7%A5%E3%A5%EB%A5%CD%A5%C3%A5%C8%A5%EF%A1%BC%A5%AF">ソーシャルネットワーク</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>の SLRequest、NSURLRequest で直接呼び出す TSSignedRequest など <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/REST%20API">REST API</a> をいろいろな方法で呼び出せるので便利です。初心者にも実用的なプログラムが組めるので、楽しめると思います。UITableView を使って本格的な <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリに仕立てるのも面白いと思います。</p><br /> <p>詳細は、次回に。</p><p>今回は、手始めとして REST の動作を学ぶため、 GET、POST の違いを解説します。 </p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby">Ruby</a> で簡単な HTTP サーバーを作り、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> でアクセスし、表示されたフォームから GET と POST を使ってサーバーにデータを送信します。送られてきた生のデーターを表示してみます。</p><p></p> <pre>自作 iOS 用 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> アプリ サンプル TSTwitter <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip</a> </pre><p>GET、POST を使用する HTTP サーバーは、上記サンプルに含まれている server_get.rb、server_post.rb です。<br /> server_get.rb は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> がアクセスすると HTML書式</p> <pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier">&lt;</span><span class="synStatement">form</span><span class="synIdentifier"> </span><span class="synType">method</span><span class="synIdentifier">=</span><span class="synConstant">&quot;get&quot;</span><span class="synIdentifier"> </span><span class="synType">action</span><span class="synIdentifier">=</span><span class="synConstant">&quot;.&quot;</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;</span><span class="synStatement">p</span><span class="synIdentifier">&gt;</span>Name:<span class="synIdentifier">&lt;</span><span class="synStatement">br</span><span class="synIdentifier">&gt;&lt;</span><span class="synStatement">input</span><span class="synIdentifier"> </span><span class="synType">type</span><span class="synIdentifier">=</span><span class="synConstant">&quot;text&quot;</span><span class="synIdentifier"> </span><span class="synType">name</span><span class="synIdentifier">=</span><span class="synConstant">&quot;name&quot;</span><span class="synIdentifier"> </span><span class="synType">size</span><span class="synIdentifier">=</span><span class="synConstant">&quot;50&quot;</span><span class="synIdentifier">&gt;&lt;/</span><span class="synStatement">p</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;</span><span class="synStatement">p</span><span class="synIdentifier">&gt;</span>Message:<span class="synIdentifier">&lt;</span><span class="synStatement">br</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;</span><span class="synStatement">textarea</span><span class="synIdentifier"> </span><span class="synType">name</span><span class="synIdentifier">=</span><span class="synConstant">&quot;message&quot;</span><span class="synIdentifier"> </span><span class="synType">cols</span><span class="synIdentifier">=</span><span class="synConstant">&quot;50&quot;</span><span class="synIdentifier"> </span><span class="synType">rows</span><span class="synIdentifier">=</span><span class="synConstant">&quot;5&quot;</span><span class="synIdentifier">&gt;&lt;/</span><span class="synStatement">textarea</span><span class="synIdentifier">&gt;&lt;/</span><span class="synStatement">p</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;</span><span class="synStatement">p</span><span class="synIdentifier">&gt;&lt;</span><span class="synStatement">input</span><span class="synIdentifier"> </span><span class="synType">type</span><span class="synIdentifier">=</span><span class="synConstant">&quot;submit&quot;</span><span class="synIdentifier"> </span><span class="synType">value</span><span class="synIdentifier">=</span><span class="synConstant">&quot;Send&quot;</span><span class="synIdentifier">&gt;&lt;/</span><span class="synStatement">p</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;/</span><span class="synStatement">form</span><span class="synIdentifier">&gt;</span> </pre><p>を送信します。</p> <pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier">&lt;</span><span class="synStatement">form</span><span class="synIdentifier"> </span><span class="synType">method</span><span class="synIdentifier">=</span><span class="synConstant">&quot;get&quot;</span><span class="synIdentifier"> </span><span class="synType">action</span><span class="synIdentifier">=</span><span class="synConstant">&quot;.&quot;</span><span class="synIdentifier">&gt;</span> </pre><p>の method を下記のように post に変更したものが</p> <pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier">&lt;</span><span class="synStatement">form</span><span class="synIdentifier"> </span><span class="synType">method</span><span class="synIdentifier">=</span><span class="synConstant">&quot;post&quot;</span><span class="synIdentifier"> </span><span class="synType">action</span><span class="synIdentifier">=</span><span class="synConstant">&quot;.&quot;</span><span class="synIdentifier">&gt;</span> </pre><p>server_post.rb です。</p><br /> <p>server_get.rb と server_post.rb の使用方法は、同じなので server_get.rb で説明します。</p><p>まず最初に、メニュー/アップルマーク/システム環境設定... を選び、’システム環境設定' を開きます。<br /> インターネットとワイヤレス/ネットワークをクリックします。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130526190343" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130526/20130526190343.png" alt="f:id:KYoshiaki:20130526190343p:image" title="f:id:KYoshiaki:20130526190343p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>IP アドレスを確認します。ここでは、192.168.1.6 に設定されています。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%AD%A5%B9%A5%C8%A5%A8%A5%C7%A5%A3%A5%BF">テキストエディタ</a>や <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> で server_get.rb ファイルを開きます。(Finder 上、またはドッグの中の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Xcode">Xcode</a> アイコンにファイルをドラッグ・ドロップすれば開くことができます。)</p> <pre class="code lang-ruby" data-lang="ruby" data-unlink><span class="synComment"># 5行目の</span> server = <span class="synType">TCPServer</span>.new(<span class="synSpecial">'</span><span class="synConstant">192.168.1.6</span><span class="synSpecial">'</span>, <span class="synConstant">9090</span>); </pre><p>上の '192.168.1.6' の部分を確認した IP アドレスに置き換えてください。IP アドレスが 192.168.1.2 なら</p> <pre class="code lang-ruby" data-lang="ruby" data-unlink>server = <span class="synType">TCPServer</span>.new(<span class="synSpecial">'</span><span class="synConstant">192.168.1.2</span><span class="synSpecial">'</span>, <span class="synConstant">9090</span>); </pre><p>です。</p><br /> <p>/アプリケーション/ユーティリティ/ターミナル.app を起動し、server_get.rb があるパスまで移動し、./server_get.rb を実行して、HTTP サーバーを起動します。</p> <pre class="code lang-" data-lang="" data-unlink>~ $ cd Desktop/Twitter/ ~/Desktop/Twitter $ ls TSTwitter server.rb server_get.rb server_post.rb ~/Desktop/Twitter $ ./server_get.rb GET Listening on port 9090</pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> で先程指定した IP アドレス、<a href="http://192.168.1.6:9090">http://192.168.1.6:9090</a> にアクセスします。下図のように表示されます。フォームに Name: Yoshiaki、Message: Hello! と入力して 'Send' ボタンをクリックします。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> 実行画面<br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130526190344" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130526/20130526190344.png" alt="f:id:KYoshiaki:20130526190344p:image" title="f:id:KYoshiaki:20130526190344p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>サーバーからの返答がないので、送信が止まりません。それで <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> の URL フィールド右端の 'x' ボタンをクリックして中止します。すると、ターミナル側に <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> から送信された生データーが次のように表示されます。(実際のデータには、文字列両端のダブルクォーテーション ( " ) は含まれていません。)</p> <pre class="code lang-" data-lang="" data-unlink>~/Desktop/Twitter $ ./server_get.rb GET Listening on port 9090 &#34;GET /?name=Yoshiaki&amp;message=Hello%21 HTTP/1.1\r\n&#34; &#34;Host: 192.168.1.6:9090\r\n&#34; &#34;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.29.13 (KHTML, like Gecko) Version/6.0.4 Safari/536.29.13\r\n&#34; &#34;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n&#34; &#34;Referer: http://192.168.1.6:9090/\r\n&#34; &#34;Accept-Language: ja-jp\r\n&#34; &#34;Accept-Encoding: gzip, deflate\r\n&#34; &#34;Connection: keep-alive\r\n&#34; &#34;\r\n&#34;</pre><p><br /> Listening on port 9090 の次の行、 GET に表示されるのが URL とパラメーターです。? はパラメーターの開始を表し、& は区切り文字です。</p> <pre class="code lang-" data-lang="" data-unlink>&#34;GET /?name=Yoshiaki&amp;message=Hello%21 HTTP/1.1\r\n&#34;</pre><p>上部分より、 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> のフォームで入力された値、name が Yoshiaki、message が Hello%21 というパラメーターで送信されたことがわかります。%21は ! 文字の URL <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%F3%A5%B3%A1%BC%A5%C9">エンコード</a>です。 HTML の</p> <pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier">&lt;</span><span class="synStatement">input</span><span class="synIdentifier"> </span><span class="synType">type</span><span class="synIdentifier">=</span><span class="synConstant">&quot;text&quot;</span><span class="synIdentifier"> </span><span class="synType">name</span><span class="synIdentifier">=</span><span class="synConstant">&quot;name&quot;</span><span class="synIdentifier"> </span><span class="synType">size</span><span class="synIdentifier">=</span><span class="synConstant">&quot;50&quot;</span><span class="synIdentifier">&gt;&lt;/</span><span class="synStatement">p</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;</span><span class="synStatement">textarea</span><span class="synIdentifier"> </span><span class="synType">name</span><span class="synIdentifier">=</span><span class="synConstant">&quot;message&quot;</span><span class="synIdentifier"> </span><span class="synType">cols</span><span class="synIdentifier">=</span><span class="synConstant">&quot;50&quot;</span><span class="synIdentifier"> </span><span class="synType">rows</span><span class="synIdentifier">=</span><span class="synConstant">&quot;5&quot;</span><span class="synIdentifier">&gt;&lt;/</span><span class="synStatement">textarea</span><span class="synIdentifier">&gt;&lt;/</span><span class="synStatement">p</span><span class="synIdentifier">&gt;</span> </pre><p>より、input の name="name" と textarea の name="message" が入力された値の名前です。</p><br /> <p>フォームを <a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a> が解釈して、サーバーにデータを送っています。フォームは複雑な表記ですが、送信するデータは name=Yoshiaki&message=Hello%21と単純です。<br /> server_get.rb を終了するには、ターミナル上で CTRL + C キーを押してください。</p><br /> <p>POST を利用した server_post.rb で同じように試してみると</p> <pre class="code lang-" data-lang="" data-unlink>~/Desktop/Twitter $ ./server_post.rb POST Listening on port 9090 &#34;POST / HTTP/1.1\r\n&#34; &#34;Host: 192.168.1.6:9090\r\n&#34; &#34;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.29.13 (KHTML, like Gecko) Version/6.0.4 Safari/536.29.13\r\n&#34; &#34;Content-Length: 30\r\n&#34; &#34;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n&#34; &#34;Origin: http://192.168.1.6:9090\r\n&#34; &#34;Content-Type: application/x-www-form-urlencoded\r\n&#34; &#34;Referer: http://192.168.1.6:9090/\r\n&#34; &#34;Accept-Language: ja-jp\r\n&#34; &#34;Accept-Encoding: gzip, deflate\r\n&#34; &#34;Connection: keep-alive\r\n&#34; &#34;\r\n&#34; &#34;name=Yoshiaki&amp;message=Hello%21&#34;</pre><p>上のように表示されます。GET と違ってパラメーターは、ヘッダの後、ボディーに付加されます。</p> <pre class="code lang-" data-lang="" data-unlink>&#34;name=Yoshiaki&amp;message=Hello%21&#34;</pre><p>の部分です。GET、POST の違いがはっきりわかると思います。サーバーに送られるパラメーターは同じです。</p><br /> <p>次回、紹介しますが、同封の server.rb を使って、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> 純正<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B7%A5%E3%A5%EB%A5%CD%A5%C3%A5%C8%A5%EF%A1%BC%A5%AF">ソーシャルネットワーク</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>の SLRequest がどんなデーターをサーバーに送信するか、覗き見ると面白いかもしれません。</p> KYoshiaki シリアル通信ソフト CoolTerm の使用方法と遅延処理を追加した拙作 PCG-LinkMac バージョン 1.1(1) 公開 hatenablog://entry/11696248318752856769 2013-04-28T17:55:50+09:00 2014-05-21T18:27:03+09:00 追記: 2014/05/21(Wed)OS X Mavericks では、USB・RS232C シリアルポート変換ケーブル対応のドライバをインストールする必要がありません。Apple 純正のドライバがインストールされています。 ~ $ cd /System/library/Extensions/IOUSBFamily.kext/Contents/Plugins/ /System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ ls AppleUSBCDC.kext AppleUSBMergeNub.kext AppleUSBCDCA… <p><span style="color: #cc0000">追記: 2014/05/21(Wed)</span></p><p><span style="color: #cc0000"><a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> Mavericks では、USB・<a class="keyword" href="http://d.hatena.ne.jp/keyword/RS232C">RS232C</a> シリアルポート変換ケーブル対応のドライバをインストールする必要がありません。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> 純正のドライバがインストールされています。</span><br /> </p> <pre>~ $ cd /System/library/Extensions/IOUSBFamily.kext/Contents/Plugins/ /System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ ls AppleUSBCDC.kext AppleUSBMergeNub.kext AppleUSBCDCACMControl.kext AppleUSBOHCI.kext AppleUSBCDCACMData.kext AppleUSBOpticalMouse.kext AppleUSBCDCDMM.kext AppleUSBUHCI.kext AppleUSBCDCECMControl.kext AppleUSBVideoSupport.kext AppleUSBCDCECMData.kext AppleUSBXHCI.kext AppleUSBCDCEEM.kext IOUSBCompositeDriver.kext AppleUSBCDCWCM.kext IOUSBHIDDriver.kext AppleUSBEHCI.kext IOUSBHIDDriverSafeBoot.kext <span style="color: #cc0000">AppleUSBFTDI.kext</span> IOUSBLib.bundle AppleUSBHub.kext IOUSBUserClient.kext /System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ </pre><p><span style="color: #cc0000">上記のように <a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> 純正 FTDI ドライバ AppleUSBFTDI.kext は、/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns フォルダにあります。</span><br /> </p> <pre>自作アプリの <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> 10.9 Mavericks 対応。Sprite Kit を使ったアプリケーション Neko version 1.0 公開。 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/2013/12/14/185334">http://kyoshiaki.hatenablog.com/entry/2013/12/14/185334</a> </pre><p><span style="color: #cc0000">上記 URL の PCG-LinkMac の記事も参考にしてください。</span></p><br /> <p></p> <pre>PC-G850VS と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> ( <a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> Mountain Lion 10.8 ) の間でのシリアル通信 - KOYAMA Yoshiaki のブログ <a href="http://kyoshiaki.hatenablog.com/entry/20120831/1346414073">http://kyoshiaki.hatenablog.com/entry/20120831/1346414073</a> </pre><p>以前、上記 URL で PC-G850VS と <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の間でのシリアル通信に、拙作 PCG-LinkMac</p> <pre>PCG-LinkMac バージョン 1.1(1) <a href="http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink">http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink</a> </pre><p>を紹介しました。</p><br /> <p>今回は、シリアル通信ソフト CoolTerm を紹介します。(また、PCG-LinkMac も遅延処理を追加したバージョン 1.1(1) を上記 URL で公開しています。詳しい解説は同封の ReadMe を参照してください。)<br /> <br /> <br /> </p> <pre>Roger Meier's Freeware CoolTerm <a href="http://freeware.the-meiers.org/">http://freeware.the-meiers.org/</a> </pre><p>シリアル通信ソフト CoolTerm には、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a>、Win、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux">Linux</a> 版があります。</p><br /> <p>使い方は簡単です。CoolTerm を起動したら、まず最初に端末の設定をおこないます。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の Options をクリックし、Serial Port タブを選び</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130428170828" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130428/20130428170828.png" alt="f:id:KYoshiaki:20130428170828p:image" title="f:id:KYoshiaki:20130428170828p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> </p> <pre class="code" data-unlink>Port: usbserial-FTG6R5XK Baudrate: 9600 Data Bits: 8 Parity: none Stop Bits: 1 Flow Control: いづれもチェックしない</pre><p>上図のように設定します。OK ボタンをクリックすれば設定完了です。(自分の環境に合わせて設定してください。)<br /> 後は、ツールボタンの Connect をクリックしてシリアルポートを開いてください。成功すれば、ウインドウの下部エリアに状態が表示されます。</p><br /> <p>ファイルを転送するには、メニュー/Connection/Send Textfile... からファイルを選択すれば、転送されます。</p> <pre>MINE [Minesweeper ver 0.2] <a href="http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#mine">http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#mine</a> (PCG-LinkMac1_1.zip を展開して作られる PCG-LinkMac/Example フォルダ にすべての拙作プログラムが含まれています。) </pre><p><br /> 上記メニューを使って、拙作 MINE [Minesweeper ver 0.2] のテキ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%C8%A5%D5%A5%A1%A5%A4">ストファイ</a>ル mine02.txt を <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> 側から遅延せずに転送し、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> 側で転送が終了してから、10秒ほど待つと PC-G850VS 側で受信が終了し、転送に成功します。(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> の環境によって違いが出ると思います。)</p><br /> <p>たたし、サイズの多きなファイルだとエラーが生じることがあります。その時は、1文字送るごとに遅延するように設定します。</p><br /> <p>一度、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の Disconnect でシリアルポートを閉じて、再設定します。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の Options をクリックし、Transmit タブを選びます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130428170829" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130428/20130428170829.png" alt="f:id:KYoshiaki:20130428170829p:image" title="f:id:KYoshiaki:20130428170829p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> </p> <pre class="code" data-unlink>Options/Tranmit ✓Use trasmit character delay Delay (ms): 5</pre><p>Use trasmit character delay にチェックを入れ、遅延時間を 5 ms に設定します。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の Save をクリックして名前を付けてファイルに保存すれば、そのファイルを Finder 上でダブルクリックするだけで端末が設定されます。</p><p>それから再度<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC">ツールバー</a>の Connect ボタンをクリックして、シリアルポートを開いてください。<br /> <br /> <br /> </p> <pre>SDCC 版 Minesweeper ver 1.0 <a href="http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#sdccmine">http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#sdccmine</a> (PCG-LinkMac1_1.zip を展開して作られる PCG-LinkMac/Example フォルダ にすべての拙作プログラムが含まれています。) </pre><p>拙作 SDCC 版 Minesweeper ver 1.0 の minesweeper_hex.txt ファイルで説明したいと思います。</p><p>PC-G850VS のモニタで<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B8%EC">機械語</a>エリアを確保し</p> <pre class="code" data-unlink>MON *USER 23AE *</pre><p>先程、遅延時間を 5 ms に設定しましたが、ここでは説明のため 3ms に設定したとします。<br /> minesweeper_hex.txt を PC-G850VS に転送すると</p> <pre class="code" data-unlink>*R INFO:0100-2154 *</pre><p>終了番地が 2154 となり、データの取りこぼしが起きています。<br /> それで、5ms の遅延に設定すると</p> <pre class="code" data-unlink>*R INFO:0100-23AE *</pre><p>終了番地が 23AE となり正しく受信しています。私の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> は</p> <pre class="code" data-unlink>iMac 27-inch, Mid 2010 プロセッサ 2.93 GHz Intel Core i7 メモリ 8 GB 1333 MHz DDR3 グラフィックス ATI Radeon HD 5750 1024 MB ソフトウェア OS X 10.8.3(12D78)</pre><p>です。最新の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> だと遅延時間を 5ms 以上にしないといけないかもしれません。</p><br /> <p>エラーが出た時は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> 側の入出力条件設定と P-G850VS側 の入出力条件設定 Format が等しいか確認してください。<br /> 特に</p> <pre class="code" data-unlink>I/O DEVICE ERROR</pre><p>がすぐ起きた時は、遅延するように設定してください。最初は、エラーが起きない大きめの間隔から設定し、段々減らしていくと良いかもしれません。<br /> 改行コード: end of file、行番号: line number も注意してください。</p><br /> <p>下図のように、PCG-LinkMac でも遅延できるように機能を追加しました。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130428170830" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130428/20130428170830.png" alt="f:id:KYoshiaki:20130428170830p:image" title="f:id:KYoshiaki:20130428170830p:image" class="hatena-fotolife" itemprop="image"></a></span><br /> </p> <pre>PCG-LinkMac バージョン 1.1(1) <a href="http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink">http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink</a> </pre><p>良かったら、ダウンロードしてください。</p> KYoshiaki テキサス インスツルメンツ グラフ電卓 TI-Nspire CAS App for iPad hatenablog://entry/6435988827676557674 2013-03-29T19:35:13+09:00 2013-03-29T19:49:03+09:00 最近、'ti nspire cx' で検索して訪れる人が多くなっています。教育機関などで配布されているのでしょうか? TI-Nspire CX を日本語で解説した記事が少ないのも一因だと思います。需要があるなら、書いてみたいですね。そんなに高度な利用方法は、解説できませんが! また、iPad 用の TI-Nspire App Sore for iPad TI-Nspire CAS App for iPad カテゴリ:教育 ¥2600 http://appstore.com/texasinstrumentsincorporated/tinspirecas TI-Nspire App for iP… <p>最近、'ti nspire cx' で検索して訪れる人が多くなっています。教育機関などで配布されているのでしょうか? TI-Nspire CX を日本語で解説した記事が少ないのも一因だと思います。需要があるなら、書いてみたいですね。そんなに高度な利用方法は、解説できませんが!</p><br /> <p>また、<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> 用の TI-Nspire</p> <pre>App Sore for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> TI-Nspire CAS App for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> カテゴリ:教育 ¥2600 <a href="http://appstore.com/texasinstrumentsincorporated/tinspirecas">http://appstore.com/texasinstrumentsincorporated/tinspirecas</a> </pre> <pre>TI-Nspire App for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> カテゴリ:教育 ¥2600 <a href="http://appstore.com/texasinstrumentsincorporated/tinspire">http://appstore.com/texasinstrumentsincorporated/tinspire</a> </pre><p>も発売されています。アメリカの大学受験、統一テストを受験する必要がないなら、値段が同じなので Ti-Nspire CAS (数式処理) App for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> がお勧めです。CAS は Computer Algebra System の略です。 </p><br /> <p></p> <pre>アメリカの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C3%E6%C5%F9%B6%B5%B0%E9">中等教育</a>・高等教育 ④ 大学受験と統一テスト(SATとACT) ★アメリカの「育児と教育」・e-百科★(印刷用ページ) <a href="http://www.jlifeus.com/e-pedia/03.childcare&education/02.higheredu/ptext/04.SATACT.htm">http://www.jlifeus.com/e-pedia/03.childcare&education/02.higheredu/ptext/04.SATACT.htm</a> </pre><p>ACT assessments では Ti-Nspire CX CAS は使用できないようです。SAT、AP Calculus exams では、Ti-Nspire CX CAS は利用できます。<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> 版の場合については、わかりません。詳細は、下記 URL を参照してください。</p> <pre>National and State Assessments with Graphing Calculators by Texas Instruments - US and Canada <a href="http://education.ti.com/en/us/product-resources/assessments">http://education.ti.com/en/us/product-resources/assessments</a> </pre><p><br /> 私は TI-Nspire CAS App for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> を日本の <a class="keyword" href="http://d.hatena.ne.jp/keyword/iTunes">iTunes</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/App%20Store">App Store</a> で購入しました。以前、ブログに書いた通り TI-Nspire CX CAS は米アマゾンから直接購入しました。使用方法はほとんど同じなのですぐ使えるようになりました。</p><br /> <p>TI-Nspire CAS App for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> を起動して、上部ツールバーに表示されるギアアイコンをタップして表示される Settings ダイアログの Online Help は、コンパクトにまとまっていて TI-Nspire の操作を理解するのにちょうど良いと思います。Online Help の URLは</p> <pre>TI-Nspire™ Apps for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a>® <a href="http://education.ti.com/html/webhelp/nspire/3.4/IOS/iPadQuickInfo_EN/Advanced/HELP.HTML">http://education.ti.com/html/webhelp/nspire/3.4/IOS/iPadQuickInfo_EN/Advanced/HELP.HTML</a> </pre><p>です。また、日本語の資料として</p><p></p> <pre>TI-Nspire CXを使った解析幾何と3Dグラフ <a href="http://www.t3japan.gr.jp/pdf2011/17_komori.pdf">http://www.t3japan.gr.jp/pdf2011/17_komori.pdf</a> </pre><p>の PDF が参考になるかもしれません。</p><br /> <p>TI-Nspire CX CAS と同じく TI-Nspire CAS Student Software がないと <a class="keyword" href="http://d.hatena.ne.jp/keyword/Lua">Lua</a> スクリプトによるプログラミングはできません。</p><br /> <p>本家の</p> <pre>Software, Guidebooks and Classroom Activities by Texas Instruments - US and Canada <a href="http://education.ti.com/en/us/downloads-and-activities">http://education.ti.com/en/us/downloads-and-activities</a> Techinology: TI-Nspire CAS View: ALL </pre><p>TI-Nspire CX CAS の取扱説明書</p> <pre>Guidebooks by Texas Instruments - US and Canada <a href="http://education.ti.com/en/us/guidebook/search/ti-nspire-cas">http://education.ti.com/en/us/guidebook/search/ti-nspire-cas</a> </pre> <pre>Getting Started with the TI-Nspire™ / TI-Nspire CAS Handheld TI-Nspire_HH_GettingStarted_EN.pdf Getting Started with the TI-Nspire™ CX / TI-Nspire CX CAS Handheld TI-Nspire_CX-HH_GettingStarted_EN.pdf TI-Nspire™ / TI-Nspire™ CAS Installation and Activation Guidebook TI-Nspire_Installation_Guidebook_EN.pdf TI-Nspire™ / TI-Nspire™ CAS Student Software Guidebook TI-Nspire_SS_Guidebook_EN.pdf TI-Nspire™ CAS Reference Guide TI-NspireCAS_ReferenceGuide_EN.pdf TI-Nspire™ <a class="keyword" href="http://d.hatena.ne.jp/keyword/Lua">Lua</a> Scripting <a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a> Reference Guide TI-Nspire_Scripting_<a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>_Reference_Guide_EN.pdf TI-Nspire™ Technology Version 3.2 Release Notes TI-Nspire_3.2_Release_Notes_EN.pdf </pre><p>の</p> <pre>TI-Nspire™ CAS Reference Guide TI-Nspire CAS Reference Guide (English) TI-NspireCAS_ReferenceGuide_EN.pdf </pre><p>で使える関数の一覧が見れるので便利です。Continue as guest を選ぶとアカウントを作成せずにゲストとしてダウンロードできます。私は、アカウントを作成しました。</p><br /> <p>TI-Nspire CAS App for <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> の実行画面を載せて置きます。</p><br /> <p>自作 TI-Nspire CX CAS 版プログラム Kitty を <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> の画面に合うように調整しました。下記 URL で公開します。</p> <pre>Kitty Version 1.0.1 猫 (Neko) Version 1.0.1 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/Kitty843x568.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/Kitty843x568.zip</a> </pre><p>実行画面<br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130329182625" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130329/20130329182625.png" alt="f:id:KYoshiaki:20130329182625p:image" title="f:id:KYoshiaki:20130329182625p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>Calculator Application<br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130329182626" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130329/20130329182626.png" alt="f:id:KYoshiaki:20130329182626p:image" title="f:id:KYoshiaki:20130329182626p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>Graphs Application<br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130329182627" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130329/20130329182627.png" alt="f:id:KYoshiaki:20130329182627p:image" title="f:id:KYoshiaki:20130329182627p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>Geometry Application<br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130329182630" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130329/20130329182630.png" alt="f:id:KYoshiaki:20130329182630p:image" title="f:id:KYoshiaki:20130329182630p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>Lists & Spreadsheet Application<br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130329182628" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130329/20130329182628.png" alt="f:id:KYoshiaki:20130329182628p:image" title="f:id:KYoshiaki:20130329182628p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>Data & Statistics Application<br /> <span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20130329182629" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20130329/20130329182629.png" alt="f:id:KYoshiaki:20130329182629p:image" title="f:id:KYoshiaki:20130329182629p:image" class="hatena-fotolife" itemprop="image"></a></span></p> KYoshiaki Kindle 版書籍 Cocoa Design Patterns (Developer's Library) 購入。 hatenablog://entry/6435922169449351613 2013-02-24T17:11:10+09:00 2013-02-24T17:11:10+09:00 今月はあまり書くことがないので、本の紹介です。 iOS、OS X のプログラミングを続けていると、Apple のフレームワークの出来の良さに舌を巻きます。デザインパターンについては、良書だと評判の増補改訂版Java言語で学ぶデザインパターン入門作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2004/06/19メディア: 大型本購入: 48人 クリック: 754回この商品を含むブログ (387件) を見るを随分前に読んだきりです。それで、もう少し理解を深めようとCocoa Design Patterns (Developer's Library)作者: Erik M. B… <p>今月はあまり書くことがないので、本の紹介です。<br /> iOS、<a class="keyword" href="http://d.hatena.ne.jp/keyword/OS%20X">OS X</a> のプログラミングを続けていると、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>の出来の良さに舌を巻きます。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%B6%A5%A4%A5%F3%A5%D1%A5%BF%A1%BC%A5%F3">デザインパターン</a>については、良書だと評判の</p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797327030/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/51k0udCitAL._SL160_.jpg" class="hatena-asin-detail-image" alt="増補改訂版Java言語で学ぶデザインパターン入門" title="増補改訂版Java言語で学ぶデザインパターン入門"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797327030/yoshiakishome-22/">増補改訂版Java言語で学ぶデザインパターン入門</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%B7%EB%BE%EB%B9%C0">結城浩</a></li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> ソフトバンククリエイティブ</li><li><span class="hatena-asin-detail-label">発売日:</span> 2004/06/19</li><li><span class="hatena-asin-detail-label">メディア:</span> 大型本</li><li><span class="hatena-asin-detail-label">購入</span>: 48人 <span class="hatena-asin-detail-label">クリック</span>: 754回</li><li><a href="http://d.hatena.ne.jp/asin/4797327030/yoshiakishome-22" target="_blank">この商品を含むブログ (387件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>を随分前に読んだきりです。それで、もう少し理解を深めようと</p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B002RAPB46/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/51br4lKQotL._SL160_.jpg" class="hatena-asin-detail-image" alt="Cocoa Design Patterns (Developer's Library)" title="Cocoa Design Patterns (Developer's Library)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B002RAPB46/yoshiakishome-22/">Cocoa Design Patterns (Developer's Library)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> Erik M. Buck,Donald A. Yacktman</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> Addison-Wesley Professional</li><li><span class="hatena-asin-detail-label">発売日:</span> 2009/09/01</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><a href="http://d.hatena.ne.jp/asin/B002RAPB46/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p>を購入してみました。読んでいる途中ですが<br /> </p> <pre>Memory Zones Category Informal Procotols Fast Enumrators Accessors Copying Notifications </pre><p>など、より深く理解することが出来ました。ただし、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Objective-C">Objective-C</a> 2.0 には対応していますが、新たに追加された <a class="keyword" href="http://d.hatena.ne.jp/keyword/Objective-C">Objective-C</a> value literal syntax <br /> </p> <pre class="code lang-objc" data-lang="objc" data-unlink>NSNumber *longNumber = @<span class="synConstant">42l</span>; NSDictionary *dictionary = @{ <span class="synConstant">@&quot;anObject&quot;</span> : someObject, <span class="synConstant">@&quot;helloString&quot;</span> : <span class="synConstant">@&quot;Hello, World!&quot;</span>, <span class="synConstant">@&quot;magicNumber&quot;</span> : @<span class="synConstant">42</span>, <span class="synConstant">@&quot;aValue&quot;</span> : someValue }; NSArray *someArray = @[firstObject, secondObject, thirdObject]; </pre><p>などには対応していません。情報としては少し古いかもしれませんが、十分に通用する内容です。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%DD%A5%A4%A5%F3%A5%C8">はてなポイント</a>が余っていたので、アマゾンギフト券に交換し、次の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版書籍とコミックを買ってみました。</p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0089H281U/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/51T8Z6PtyOL._SL160_.jpg" class="hatena-asin-detail-image" alt="「量子論」を楽しむ本 ミクロの世界から宇宙まで最先端物理学が図解でわかる! (PHP文庫)" title="「量子論」を楽しむ本 ミクロの世界から宇宙まで最先端物理学が図解でわかる! (PHP文庫)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0089H281U/yoshiakishome-22/">「量子論」を楽しむ本 ミクロの世界から宇宙まで最先端物理学が図解でわかる! (PHP文庫)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%BA%B4%C6%A3%BE%A1%C9%A7">佐藤勝彦</a></li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> PHP研究所</li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/10/05</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><a href="http://d.hatena.ne.jp/asin/B0089H281U/yoshiakishome-22" target="_blank">この商品を含むブログ (3件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KYC6S6/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/51KJGq4nTCL._SL160_.jpg" class="hatena-asin-detail-image" alt="進撃の巨人(1): 1 (少年マガジンKC)" title="進撃の巨人(1): 1 (少年マガジンKC)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KYC6S6/yoshiakishome-22/">進撃の巨人(1): 1 (少年マガジンKC)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%EB%DD%BB%B3%C1%CF">諫山創</a></li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> 講談社</li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/09/28</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><span class="hatena-asin-detail-label">購入</span>: 3人 <span class="hatena-asin-detail-label">クリック</span>: 3回</li><li><a href="http://d.hatena.ne.jp/asin/B009KYC6S6/yoshiakishome-22" target="_blank">この商品を含むブログ (3件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KYC6SQ/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/51COe3R4d6L._SL160_.jpg" class="hatena-asin-detail-image" alt="進撃の巨人(2): 2 (講談社コミックス)" title="進撃の巨人(2): 2 (講談社コミックス)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009KYC6SQ/yoshiakishome-22/">進撃の巨人(2): 2 (講談社コミックス)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%EB%DD%BB%B3%C1%CF">諫山創</a></li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> 講談社</li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/09/28</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 2回</li><li><a href="http://d.hatena.ne.jp/asin/B009KYC6SQ/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009727M6M/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/61nNbo9LPlL._SL160_.jpg" class="hatena-asin-detail-image" alt="テルマエ・ロマエI: 1 (ビームコミックス)" title="テルマエ・ロマエI: 1 (ビームコミックス)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009727M6M/yoshiakishome-22/">テルマエ・ロマエI: 1 (ビームコミックス)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E4%A5%DE%A5%B6%A5%AD%A5%DE%A5%EA">ヤマザキマリ</a></li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%F3%A5%BF%A1%BC%A5%D6%A5%EC%A5%A4%A5%F3">エンターブレイン</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/09/01</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 1回</li><li><a href="http://d.hatena.ne.jp/asin/B009727M6M/yoshiakishome-22" target="_blank">この商品を含むブログ (3件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009727O92/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/610DSy1S17L._SL160_.jpg" class="hatena-asin-detail-image" alt="テルマエ・ロマエII: 2 (ビームコミックス)" title="テルマエ・ロマエII: 2 (ビームコミックス)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009727O92/yoshiakishome-22/">テルマエ・ロマエII: 2 (ビームコミックス)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E4%A5%DE%A5%B6%A5%AD%A5%DE%A5%EA">ヤマザキマリ</a></li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%F3%A5%BF%A1%BC%A5%D6%A5%EC%A5%A4%A5%F3">エンターブレイン</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/09/01</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 1回</li><li><a href="http://d.hatena.ne.jp/asin/B009727O92/yoshiakishome-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> 版書籍やコミックは手軽に買えるので、 注意しないといけませんね!<br /> いくらお金があっても足りません!</p> KYoshiaki Mac 版 'とびだせ どうぶつの森' マイデザイン作成ツール AnimalCrossingDesign を Mac OS X 10.6 Snow Leopard に対応。Mac で動作する QR コード対応の 'とびだせ どうぶつの森' マイデザイン作成ツールの紹介。 hatenablog://entry/6435922169448266459 2013-01-27T18:37:21+09:00 2013-04-10T19:47:05+09:00 随分遅れましたが、新年明けましておめでとうございます。今年も宜しくお願いします。 先月公開した Mac 版 'とびだせ どうぶつの森' マイデザイン作成ツール AnimalCrossingDesign は、私が他に公開しているアプリに比べると比べものにならないくらいダウンロードされています。それだけ、とびだせ どうぶつの森の人気がすさまじいのだと思います。 ただし、アクセス解析を調べてみると Mac OS X 10.6 Snow Leopard 以下の人も結構います。私の開発環境が Automatic Reference Counting (ARC) に依存するので、Mac OS X 10.5… <p>随分遅れましたが、新年明けましておめでとうございます。今年も宜しくお願いします。</p><br /> <p>先月公開した Mac 版 '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>' マイデザイン作成ツール AnimalCrossingDesign は、私が他に公開しているアプリに比べると比べものにならないくらいダウンロードされています。それだけ、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>の人気がすさまじいのだと思います。</p><br /> <p>ただし、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%AF%A5%BB%A5%B9%B2%F2%C0%CF">アクセス解析</a>を調べてみると <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.6 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Snow%20Leopard">Snow Leopard</a> 以下の人も結構います。私の開発環境が Automatic Reference Counting (ARC) に依存するので、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.5 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Leopard">Leopard</a> 以下に対応させるのは無理です。 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.6 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Snow%20Leopard">Snow Leopard</a> は、Weak references を使わなければ対応させることができます。それであらためて <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.6 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Snow%20Leopard">Snow Leopard</a> 以上で動作する Mac 版 '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>' マイデザイン作成ツール AnimalCrossingDesign version 1.0.1 をビルドし直しました。</p><br /> <p>下記 URL で公開します。(前回公開した AnimalCrossingDesign が問題なく動作している人は、ダウンロードする必要はありません。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.6 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Snow%20Leopard">Snow Leopard</a> で動作する以外、何もプログラム的に変更はありません。)</p><br /> <p></p> <pre>Mac 版 '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>' マイデザイン作成ツール AnimalCrossingDesign version 1.0.1 Mac OS X 10.6 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Snow%20Leopard">Snow Leopard</a> 以上で動作するように変更。 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/AnimalCrossingDesign_101.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/AnimalCrossingDesign_101.zip</a> </pre><p><br /> Retinaディスプレイ対応の Mac を所有していないので動作確認ができません。上手く動作するか心配ですが!<br /> Retina に対応した <a class="keyword" href="http://d.hatena.ne.jp/keyword/iMac">iMac</a> は、今年には発売されそうにないので <a class="keyword" href="http://d.hatena.ne.jp/keyword/MacBook%20Pro">MacBook Pro</a> Retina がアップデートされたら購入するつもりです。</p><br /> <p>Mac で動作する QR コード対応の '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>' マイデザイン作成ツールは、</p> <pre> YGGDRASILL SOFT - ドット絵ナニカ (<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> 版) <a href="http://www5d.biglobe.ne.jp/~yggsoft/software/nanika/index.html">http://www5d.biglobe.ne.jp/~yggsoft/software/nanika/index.html</a> あさみしん (Web 版) <a href="http://heriet.info/swf/asamisin/">http://heriet.info/swf/asamisin/</a> </pre><p>で公開されています。</p><br /> <p>ドット絵ナニカ (<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> 版) は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> がインストールされている必要があります。</p><br /> <p>上の URL から nanika.zip をダウンロードし、Finder でダブルクリックして展開します。(ここでは、デスクトップに展開しています。)<br /> nanika/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux">Linux</a> フォルダにマイデザインにしたい画像 (ここでは、image.png ) をドラッグ・ドロップします。</p><br /> <p>ターミナルで nanika32QR.sh ファイルに実行属性を追加し、引数に image.png (マイデザインにしたい画像)を渡し実行します。</p> <pre class="code" data-unlink>~ $ cd Desktop/nanika/Linux ~/Desktop/nanika/Linux $ chmod 766 nanika32QR.sh ~/Desktop/nanika/Linux $ ./nanika32QR.sh image.png ???? (Enterキーを押せば、おしまい。) ~/Desktop/nanika/Linux $ ls image.png image.png_QR.png image.png.png nanika32QR.sh ~/Desktop/nanika/Linux $ </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> がインストールされていない場合、インストールするか尋ねてきます。指示通りにインストールしてください。(たぶん <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> はインストールされていると思います。)<br /> image.png_QR.png が QR コード画像、image.png.png が <a class="keyword" href="http://d.hatena.ne.jp/keyword/QR%A5%B3%A1%BC%A5%C9">QRコード</a>で取り込まれる画像です。</p><br /> <p>また、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BB%A5%AD%A5%E5%A5%EA%A5%C6%A5%A3%A5%DB%A1%BC%A5%EB">セキュリティホール</a>が大問題になっています。各種ブラウザの <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> applet を無効にしていください。下記 URL が</p> <pre>Life is beautiful: 各種ブラウザーで <a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a> (applet) を無効にする方法 <a href="http://satoshi.blogs.com/life/2013/01/java.html">http://satoshi.blogs.com/life/2013/01/java.html</a> </pre><p>参考になります。</p><br /> <p><span style="color: #cc0000">追記: 2013/01/29(Tue)</span></p><p>ドット絵ナニカがバージョンアップし、読み込んだ画像を 'かきかえる' ことができるようになりました。<br /> Mac での利用方法を紹介したいと思います。</p><p>最新の 'ドット絵ナニカ' を</p> <pre>YGGDRASILL SOFT - ドット絵ナニカ <a href="http://www5d.biglobe.ne.jp/~yggsoft/software/nanika/index.html">http://www5d.biglobe.ne.jp/~yggsoft/software/nanika/index.html</a> </pre><p>からダウンロードしてください。ダウンロードしたファイル nanika.zip を Finder 上でダブルクリックして展開してください。(ここでは、デスクトップ上に展開しています。)</p><p>nanika/高度な機能/me フォルダに、自分で作成したマイデザインの<a class="keyword" href="http://d.hatena.ne.jp/keyword/QR%A5%B3%A1%BC%A5%C9">QRコード</a>画像をドラッグ・ドロップしてください。例えば HNI_0030_JPG.JPG などのファイル名になります。マイデザイン PRO の QR コード画像ではうまく動作しないので注意してください。</p><p>マイデザインの<a class="keyword" href="http://d.hatena.ne.jp/keyword/QR%A5%B3%A1%BC%A5%C9">QRコード</a>画像は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%A4%A5%D6%A5%EB">エイブル</a>シスターズのあさみさんに話しかけると作成できます。詳しくは</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>@まとめwiki - <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%A4%A5%D6%A5%EB">エイブル</a>シスターズ <a href="http://www49.atwiki.jp/doubutsunomori3ds/pages/54.html">http://www49.atwiki.jp/doubutsunomori3ds/pages/54.html</a> </pre><p>を参照してください。</p><br /> <p>マイデザインの<a class="keyword" href="http://d.hatena.ne.jp/keyword/QR%A5%B3%A1%BC%A5%C9">QRコード</a>画像は SD カードに保存されています。</p><p>SDカードを SDカードリーダーなどで Mac に接続すると <a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhoto">iPhoto</a> が起動します。<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPhoto">iPhoto</a> を使って画像を読み込む場合は、'?? 枚の写真を読み込む' ボタンをクリックして読み込んでください。</p><p>左側ペインに表示された'ライブラリ' から 'イベント' を選択し、一番最後の日付をダブルクリックして画像を表示します。マイデザインの QR コード画像を選択し、メニュー 'ファイル/Finder に表示/オリジナルファイル' を選ぶと Finder 上にマイデザインの QR コード画像が表示されます。そのファイルを nanika/高度な機能/me フォルダにコピーしてください。</p><br /> <p>また Finder 左下のデバイスのところに 'NO NAME' と表示されているのが SD カードです。(表示されない場合は、Finder のメニュー 'Finder/環境設定...' で表示されるウインドウの 'サイドバー' タブを選び、デバイスの '外部ディスク' にチェックを入れてください。)</p><p> 'NO NAME' をクリックして中身を表示してください。その中の DCIM フォルダにマイデザインの画像が格納されています。100NIN3、101NIN3、102NIN3、... というフォルダがあるはずです。フォルダ名の最初の3文字の数字が大きいほど最新の画像が格納されています。Finder で開いて確認してください。(拡張子は、JPG です。) サムネイル画像が表示されるので見分けやすいはずです。目的のマイデザインの QR コード画像を nanika/高度な機能/me フォルダにコピーしてください。</p><br /> <p>ちょっと宣伝ですが <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/AnimalCrossingDesign_101.zip">AnimalCrossingDesign_101.zip</a> に含まれる <a class="keyword" href="http://d.hatena.ne.jp/keyword/3DS">3DS</a>.<a class="keyword" href="http://d.hatena.ne.jp/keyword/php">php</a> を使えば、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%F3%A5%C6%A5%F3%A5%C9%A1%BC3DS">ニンテンドー3DS</a>内蔵ブラウザを使って Mac に簡単に保存できます。</p><br /> <p>後は、下記ファイルを</p> <pre>nanika32QR_me.sh <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/nanika32QR_me.sh.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/nanika32QR_me.sh.zip</a> </pre><p>をダウンロードし、ダブルクリックして展開してください。nanika32QR_me.sh ファイルが作成されます。Finder を使って nanika/<a class="keyword" href="http://d.hatena.ne.jp/keyword/Linux">Linux</a> フォルダに nanika32QR_me.sh を移動してください。同じくマイデザインにしたい画像 (ここでは、image.png ) もドラッグ・ドロップしてください。</p><p>後は、ターミナル上で下記のように実行すれば作成できます。</p> <pre class="code" data-unlink>~/Desktop/nanika/Linux $ ./nanika32QR_me.sh image.png ???? (Enterキーを押せば、おしまい。) ~/Desktop/nanika/Linux $ ls image.png image.png_QR.png nanika32QR_me.sh image.png.png nanika32QR.sh ~/Desktop/nanika/Linux $ </pre><p>文字エンコーディングを 日本語 (Shift JIS) を選択すれば、エラー表示を確認できます。</p> <pre class="code" data-unlink>‾/Desktop/nanika/Linux $ ./nanika32QR_me.sh ファイル、ナイヨ ‾/Desktop/nanika/Linux $ </pre><p><br /> メニュー 'ターミナル/環境設定' で利用したいプロファイルを選び、詳細 タブをクリック、中央部分に文字エンコーディングを選択できるポップアップメニューがあります。</p><p>文字エンコーディングを UTF8 以外にすると、日本語名のディレクトリに cd を使って移動できなくなるので注意してください。</p> KYoshiaki Mac 版 'とびだせ どうぶつの森' マイデザイン作成ツール AnimalCrossingDesign を公開。ニンテンドー3DS内蔵ブラウザを使って、画像をMac に保存する PHP プログラム公開、Wii U、Kindle Fire HD 購入 hatenablog://entry/12704830469096997100 2012-12-28T19:24:48+09:00 2013-01-30T12:58:55+09:00 今年最後の更新になります。ニンテンドー3DS 'とびだせ どうぶつの森' で遊んでいるのですが、マイデザインでアップルのロゴマークを作ってみようとドット絵に挑戦してみました。しかし、私に絵心がないのかぜんぜんそれらしいものが作れません。そこで、まとめ Wiki とびだせ どうぶつの森@まとめwiki - トップページ http://www49.atwiki.jp/doubutsunomori3ds/ に紹介されているマイデザイン作成ツールを利用してみようと思いました。しかし、ちょうど良いパレットが見つかりません。 そこで、 Mac で動作するマイデザイン作成ツールを作ってみました。(動作環境は… <p>今年最後の更新になります。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%F3%A5%C6%A5%F3%A5%C9%A1%BC3DS">ニンテンドー3DS</a> '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>' で遊んでいるのですが、マイデザインでアップルのロゴマークを作ってみようとドット絵に挑戦してみました。しかし、私に絵心がないのかぜんぜんそれらしいものが作れません。</p><p>そこで、まとめ Wiki</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>@まとめwiki - トップページ <a href="http://www49.atwiki.jp/doubutsunomori3ds/">http://www49.atwiki.jp/doubutsunomori3ds/</a> </pre><p>に紹介されているマイデザイン作成ツールを利用してみようと思いました。</p><p>しかし、ちょうど良いパレットが見つかりません。</p><br /> <p>そこで、 Mac で動作するマイデザイン作成ツールを作ってみました。(動作環境は <del><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.7 Lion</del> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.6 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Snow%20Leopard">Snow Leopard</a> 以上です。) </p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/QR%A5%B3%A1%BC%A5%C9">QRコード</a>出力ができないので、実用性に乏しいですが、良かったらダウンロードしてください。</p><p>下記 URL で公開します。</p> <pre>Mac 版 '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>' マイデザイン作成ツール AnimalCrossingDesign <del><a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/AnimalCrossingDesign.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/AnimalCrossingDesign.zip</a></del> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac%20OS%20X">Mac OS X</a> 10.6 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Snow%20Leopard">Snow Leopard</a> 以上で動作するように変更。 <a href="http://kyoshiaki.sakura.ne.jp/osx/Sample/AnimalCrossingDesign_101.zip">http://kyoshiaki.sakura.ne.jp/osx/Sample/AnimalCrossingDesign_101.zip</a> </pre><p>おまけに、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%F3%A5%C6%A5%F3%A5%C9%A1%BC3DS">ニンテンドー3DS</a>内蔵ブラウザを使って、'<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C8%A4%D3%A4%C0%A4%BB%20%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">とびだせ どうぶつの森</a>' の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A1%BC%A5%F3%A5%B7%A5%E7%A5%C3%A5%C8">スクリーンショット</a>を Mac に保存する <a class="keyword" href="http://d.hatena.ne.jp/keyword/PHP">PHP</a> プログラムも付けておきました。</p><p><span style="color: #cc0000">注意) '開発元が未確認のため開けません' というダイアログが出る場合は、Finder 上で AnimalCrossingDesign を右クリック (CTRL + 左クリック) して、メニューから '開く' を選び、'開いてもよろしいですか' とダイアログがでるので '開く' ボタンをクリックしてください。</span></p><br /> <p>後、拙作マイデザイン作成ツール AnimalCrossingDesign を使って作ったアップルのロゴマーク QR コード</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20121201210150" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20121201/20121201210150.jpg" alt="f:id:KYoshiaki:20121201210150j:image" title="f:id:KYoshiaki:20121201210150j:image" class="hatena-fotolife" itemprop="image"></a></span></p><p>を公開します。</p><br /> <p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009K1ECXQ/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/416M011NOXL._SL160_.jpg" class="hatena-asin-detail-image" alt="Wii U プレミアムセット (WUP-S-KAFC)" title="Wii U プレミアムセット (WUP-S-KAFC)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009K1ECXQ/yoshiakishome-22/">Wii U プレミアムセット (WUP-S-KAFC)</a></p><ul><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%C7%A4%C5%B7%C6%B2">任天堂</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/12/08</li><li><span class="hatena-asin-detail-label">メディア:</span> Video Game</li><li><span class="hatena-asin-detail-label">購入</span>: 9人 <span class="hatena-asin-detail-label">クリック</span>: 3,378回</li><li><a href="http://d.hatena.ne.jp/asin/B009K1ECXQ/yoshiakishome-22" target="_blank">この商品を含むブログ (98件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009K1EDTY/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/41ubuTMUhDL._SL160_.jpg" class="hatena-asin-detail-image" alt="Wii U ベーシックセット (WUP-S-WAAA)" title="Wii U ベーシックセット (WUP-S-WAAA)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B009K1EDTY/yoshiakishome-22/">Wii U ベーシックセット (WUP-S-WAAA)</a></p><ul><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%C7%A4%C5%B7%C6%B2">任天堂</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/12/08</li><li><span class="hatena-asin-detail-label">メディア:</span> Video Game</li><li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 1,229回</li><li><a href="http://d.hatena.ne.jp/asin/B009K1EDTY/yoshiakishome-22" target="_blank">この商品を含むブログ (51件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Wii%20U">Wii U</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Fire HD を購入しました。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Wii%20U">Wii U</a> は、アップデートに時間がかかる以外は問題がありません。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C7%A4%C5%B7%C6%B2">任天堂</a>版 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a> の <a class="keyword" href="http://d.hatena.ne.jp/keyword/Miiverse">Miiverse</a> (ミーバース) には、未来を感じました。<a class="keyword" href="http://d.hatena.ne.jp/keyword/SNS">SNS</a> として可能性を感じます。はてなが開発に参加しているようです。</p><br /> <p><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00960YR3Q/yoshiakishome-22/"><img src="http://ecx.images-amazon.com/images/I/416zr7gtamL._SL160_.jpg" class="hatena-asin-detail-image" alt="Kindle Fire HD 16GB" title="Kindle Fire HD 16GB"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00960YR3Q/yoshiakishome-22/">Kindle Fire HD 16GB</a></p><ul><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon.co.jp">Amazon.co.jp</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/12/18</li><li><span class="hatena-asin-detail-label">メディア:</span> エレクトロニクス</li><li><span class="hatena-asin-detail-label">購入</span>: 27人 <span class="hatena-asin-detail-label">クリック</span>: 866回</li><li><a href="http://d.hatena.ne.jp/asin/B00960YR3Q/yoshiakishome-22" target="_blank">この商品を含むブログ (60件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Fire HD でコミックを購入してみました。コミックは7インチサイズで問題なく読むことができます。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Fire HD の詳しい説明は</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon.co.jp">Amazon.co.jp</a> ヘルプ: <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Fire HD <a href="http://www.amazon.co.jp/gp/help/customer/display.html/ref=help_search_1-3_bc?ie=UTF8&nodeId=201047790">http://www.amazon.co.jp/gp/help/customer/display.html/ref=help_search_1-3_bc?ie=UTF8&nodeId=201047790</a> </pre><p>で読めます。</p><br /> <p>また、上記 ヘルプでは紹介されていませんが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A1%BC%A5%F3%A5%B7%A5%E7%A5%C3%A5%C8">スクリーンショット</a>を撮るには、音量 - ボタンと電源ボタンを同時に押すと撮れます。</p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20121228183310" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20121228/20121228183310.png" alt="f:id:KYoshiaki:20121228183310p:image" title="f:id:KYoshiaki:20121228183310p:image" class="hatena-fotolife" itemprop="image"></a></span></p><p><span itemscope itemtype="http://schema.org/Photograph"><a href="http://f.hatena.ne.jp/KYoshiaki/20121228183311" class="hatena-fotolife" itemprop="url"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/K/KYoshiaki/20121228/20121228183311.png" alt="f:id:KYoshiaki:20121228183311p:image" title="f:id:KYoshiaki:20121228183311p:image" class="hatena-fotolife" itemprop="image"></a></span></p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Fire HD と Mac 間でファイルを転送するには、</p> <pre><a class="keyword" href="http://d.hatena.ne.jp/keyword/Amazon.co.jp">Amazon.co.jp</a> ヘルプ: <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Fireにコンテンツを転送またはダウンロードする <a href="http://www.amazon.co.jp/gp/help/customer/display.html/ref=help_search_1-4?ie=UTF8&nodeId=201073220&qid=1356429070&sr=1-4">http://www.amazon.co.jp/gp/help/customer/display.html/ref=help_search_1-4?ie=UTF8&nodeId=201073220&qid=1356429070&sr=1-4</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a> File Transfer (Mac) - ダウンロード <a href="http://android-file-transfer.softonic.jp/mac">http://android-file-transfer.softonic.jp/mac</a> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a> File Transfer が必要です。</p><br /> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Fire HD と Mac を USB で接続して、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a> File Transfer で表示されるウインドウのファイルを Finder で開いたフォルダにドラッグ・ドロップすれば、コピーできます。逆に Finder から、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a> File Transfer のウインドウにドラッグ・ドロップすれば、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a> Fire HD にコピーできます。</p><p>米国のアカウントと日本のアカウントを統合するか悩んでいます。</p> KYoshiaki はてなブログに引っ越しました。 hatenablog://entry/12704830469096908939 2012-12-26T19:58:49+09:00 2012-12-26T20:08:50+09:00 はてなダイアリーからはてなブログに引っ越しました。 <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%C0%A5%A4%A5%A2%A5%EA%A1%BC">はてなダイアリー</a>から<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%ED%A5%B0">はてなブログ</a>に引っ越しました。</p> KYoshiaki