2020年3月5日木曜日

ブログ移転しました


https://racchie.hatenablog.com/

はてなブログに移転しました。

このブログで昔書いた記事は残していますが、一部(確か数記事くらい)再編集して新しいブログに載せていたりします。

と言うか、移転して(と言うか新しいプラットフォームでブログ運営を始めて)もう2年近くになるのですが、まさかこんなに続くと思ってなかったので前のブログ、つまりここに「移転しました」的なことも書かないまま時が過ぎました。

相変わらずくだらないことばかり書いていますが、ぜひご贔屓いただきたく存じます。

みうら

2016年7月19日火曜日

(ジャンクの)初代Mac Pro復活顛末

今年の春頃に、たまたま立ち寄ったHard OffでMac Proのジャンクが3,000円で売り出されていたので即買いしたのですが、数ヶ月してやっと復活、起動からちょっとした改造まで時間(とお金)をかけてみたのでその顛末を簡単にまとめておきます。

まず、購入したジャンクのMac Pro本体。筐体の一部分が歪んでいて、脚がグラグラとしている状態でした。それが安い原因かと高をくくっていたのですが、購入後に家に運び込んでいろいろと確認して見ると、パーツがいろいろとないことに気が付きました。
・メモリはライザーカードはあるもののメモリは全部抜かれている
・HDDとグラボが見当たらない
・AirMac ExtreamカードとBluetoothカードもついてない(オプション品だったようで)

筐体の問題はとりあえず放置し、動作さえすればいいや、と電源を入れてみるのですが、起動音が鳴らない。Macの場合、最低限のハードウェアテストが完了すると起動音が鳴り、そこからHDDのブート領域を読み込んでOSが起動する、という流れになるはずなので、起動音がしないということはハードが足りてない、ということになります。

そこで購入したのは、
・メモリ:16GBが8,000円くらいで売っていたのでAmazonで購入
・HDDのマウンタ2つ(3,000円/個)。アキバの専門店(バカンだったか)で購入
・グラボ:このマシンで「使える」とネットに書いてあったGTX 460を近所のHard Offで(5,000円)

で、ポン付けして電源を入れてみますが、やっぱり起動音がしない。

ダメ元でAppleのサポートに電話を入れてみます。もう10年前のハードなのでサポート外ですが・・・、と前置きをされたうえで、問題となりそうな点を細かく確認してもらい、結果、ロジックボードが問題なのでは?という結論に落ち着きました。

と言っても、ロジックボードの修理を依頼しようとするとびっくりするほどユートピア高価で、ここで断念か、と思ったのですが、自分で交換できるなら、とネットで調べてみると、ebayで6,000円(ただし輸送費も同じくらいするので結局12,000円)で完動品を売っていたので即ポチ。

半月くらい待ってロジックボードが届いたので、入れ替えて見ましたが状況は変わらず、Appleサポートと話をしていた時にもう一箇所疑わしい点としてあげていた(結論は上述の通りロジックボード)グラボが問題ではないかと考えました。

ちなみに、先に買ってあったグラボは完動品であることはわかっていたので、問題は「相性」と言うか、そもそも初期状態で認識するグラボは限られてしまう(基本Macはハードウェアのユーザによる交換を想定していない)、ということではないかと考えました。

しかし、このMac Pro用のグラボ、中古市場ではこれもびっくりするほどユートピア高価。ebayでも結構な高値で取引されていたのですが、たまたま安い(それでも3,500円、しかもこれまた輸送料が同じくらい)のを見つけてポチってみました。

そして半月後、届いたグラボを挿して電源を入れると、「ボーン」起動音が鳴った!

結局、問題点はグラボだった、ということになりました。その後はOSをインストールしていろいろとアプリ入れて、・・・となるのですが、このマシン、通常であれば最新のOSX(El Capitan)に対応しておらず、普段使っていたアプリがほとんどインストールできないことが判明しました。

そこで、ググってみるとどうやらちょっとしたゴニョゴニョをするとインストールできるらしいという情報が。試してみると簡単にEl Capitanにアップグレード完了。

そもそもこのマシン、メモリは16GB積んでるわ、CPUもXeonの2コアx2だわ、10年落ちのマシンの割には今でも通用するレベルのスペックだったりするんです。起動もHDDなのにかなり早いですし、反応も全然良い。

ということで、結局いくらかけたかをおさらいしてみると、
・筐体:3,000円
・メモリ:8,000円
・HDDマウンタ:6,000円
・グラボ1:5,000円
・ロジックボード:12,000円
・グラボ2:6,000円
・AirMac Extreamカード:2,000円(動作確認ができた時点で別途Amazonで購入)
トータル:42,000円

個人的にはロジックボードはいらなかった気もするのですが(元のロジックボードで動作確認してないですが多分・・・)、それでも完動品の中古でも20,000円弱するし、アキバで買ったら倍するし、と、わりと最低限の投資で動かせるようになったので満足していたりします。

それにしてもこのMac Pro、ファンが強烈に回るんでうるさいですよね。これはディスプレイを外してどこかの部屋に置きっぱなしにしようかな。

2016年5月10日火曜日

ChromeOSを試してみる(その2:考察編)

さて、繰り返しになり恐縮ですが、普段の仕事はMacを中心に動いています。ブラウザはMacにインストールしたChrome。スマホはiPhoneもAndroidもMacに繋いでいます。特にiPhoneはMacのiTunesと紐付いており、大量のメディアデータがMacのHDDに格納されています。

スマホアプリ開発は、最近はJavaFX(Android)がメインなので、Android StudioとiPhone用のXcodeが共存していますが、一応HTMLアプリ開発もできるようなアプリも入れてあるし、ゲーム開発用にUnityもインストール済です。

Windows系の開発に限ってはWindowsを使うことが多いので、これはサーバーに展開してある仮想OSを使用しています。実はMac版Officeのマクロ開発も大半をWindows側で行い、Macでは動作テストのために使うのが、仕事のしやすさの点では個人的なオススメです。

文字を打つ仕事、例えば議事録作成やドキュメント作成、アイデア出しのノートなどがありますが、これはその時々で使うツールがいろいろあって、しかもMacとWindowsで別のものを使っていたりして、いわゆる「節操のない」状態です。ただ、アイデア系は基本Evernote、開発系ドキュメントはOnenoteに集約しているような感じではあります。

実はテキストエディタはそこそこ高機能かつ無料のモノをMacもWindowsも入れていて、シンタックスハイライトと行番号表示がマストだったりします。

画像加工に関しては、MacにPixelmatorが入っており、基本はこれひとつでまかなっています。

ついでに趣味レベルの話まで深堀りするならば、
  • Garagebandでギターとつないでいる。MIDIもつなげる予定。
  • ビデオデータの編集はiMovie。
  • ラジオ録音は自分で作るまではWindows版のソフトを使用。Radikoolが今のところ自宅環境で動くもの。データの編集はする予定もないが、するならiMovieあたりか。
  • 音楽を聞き流す場合はradikoやらNHKやらAFN PACIFICやらと、要はブラウザから起動させられるものが半分、Google Playミュージックが4割、あとはiTunes。
  • ビデオの再生はAppleTVがあることもあり、iTunesからの再生。
  • あと、Kindleを使っていて、たまにそれを見ながら仕事だったり暇潰しだったり。
といったところです。これらがどの程度までChromebookに置き換えができるか、または置き換えないまでもリモートで使える範囲によっては、Chromebookがメインマシンとして使えるかどうかが決まってきます。

そもそもの話ですが、Chromebook/boxで(現状)絶対にできないことは何かを分かる範囲で列記しましょう。
  • Windows用、Mac用のアプリは「インストール」できない
  • 「デスクトップ」が存在しない
これだけのようです(笑)
とはいえ、これが大問題になるのだったらそもそもChromebookなんて買っちゃダメ、って話ですよね。例えば自分の例で言えばPixelmatorが使えないからChromebookは(だけでなくWindowsも)使えない、とか。いや、代わりの何かを探せばいいんだったらどんなに手間をかけてもやりますよ私。

次回からはこの「絶対できないこと」に対して解決策を提案してみましょう。

2016年3月28日月曜日

ChromeOSを試してみる(その1:導入編)

事あるごとに書いている気もしますが、私のメインマシンはMacです。が、最近になって、仕事がWebブラウザ(Chrome)だけで完結することが多いと感じるようになりました。メールはGmailだし、仕事もWebで受けてるし、業務上Salesforce案件を受けることもあるので使うし。調べ物はGoogleで、本を見つけるのはAmazonだとか。

そんな状態だと、Macはずいぶんオーバースペックだと感じるわけです。そのくせメモリは食うしたまにしか立ち上げないソフトも多いし、と、なんならMacをサブマシンにしてChrome OSをメインにしてもいいではなかろうか、と考えるようになりました。

そうなってくると、どうやって安価にChrome OSのマシンを入手するか、と仕事の合間に考えていたのですが、よく行くリサイクルショップ(ハードオフさんお世話になっております)でちょっと古めのWindowsマシンを買ってOSを入れ替えるのが安直ではあるがお手軽なテストには向いているだろうな、と。ただ、実際のChromebookやChromeboxはSSD搭載が基本で、売りのひとつとなっている高速起動はSSDの採用にも起因しているわけで、古いマシンだと結局改造が必要になり、何だかんだでコストがかかるしなぁ、と物色していると、なぜか一台だけ出物があったんです。Chromebookの。

即購入(笑)

日本では発売されていない、東芝のChromebook2。英語キーボードでしたが、個人的には問題なし。

とは言うものの、その頃の仕事はWindows、しかもExcelマクロのコーティングの仕事がメインになっていて、マシンのテストをしている暇は全くない状況。しばらく放置してありました。それでも、今後のことを考えつついくつかの仕込みはしておきました。

・IMEをGoogle日本語入力に変更。
 それまでは各OSに付属のものWindowsならMS-IME、Macならことえりを使っていました。理由は簡単。不満がなかったからなのですが、いっそのこと共通化してしまえばいいじゃん、と思ったので、Macとメインで使っているWindow(8.1)にインストール。
・Googleリモートデスクトップのインストール
 現状Macから仮想環境への接続はMicrosoftのリモートデスクトップクライアントを使っていましたが、ChromeOSにはそれがなく、他にリモート接続の選択肢がないので、とりあえず入れておきました。
・Googleクラウドプリントの設定
 ChromeOSは家のなかのネットワークにあるプリンターに直接接続できないようで、この設定は印刷したい場合必須。プリンターからの設定です。

時は流れ・・・、と言っても購入から1ヶ月後くらいでしょうか。マクロの案件が一段落したので、Chromebookを少し弄ろうじゃないか、と考えたのですが、メインのMacはiMacで、しかも仕事用机の面積の大半を占めていて、しかもキーボードも大きいのに替えたばかりで、13インチのノートパソコンどころかマウスすら置く場所はない有様。マルチディスプレイにしてあるのでサブディスプレイにChromebookのHDMI端子を繋げてiMacの背後に半開きで置いて、キーボードとマウスを切替器に繋げて入力を切り替えて使えるようにしてみました。

さて、どうなることやら。

追記:Chromebook/Chromeboxは開発者モードなどにはせず、通常の状態で運用するのが目標です。実は開発者モードにすることでいろいろなソフトをインストールすることができ、多少は自由度が高まるのですが、その分セキュリティ面でのリスクや突然動かなくなったりするリスクもないとはいえません。店で「吊るしの」商品を買ってきてそのまま使いたいじゃないですか。Windowsだって基本そうですし。

2016年2月19日金曜日

MacにWindowsキーボードを導入した顛末(その2:キーボード設定編)

以前、Microsoft謹製のキーボード、Microsoft Natural Ergonomic Keyboard 4000をMacにつなげてみた話を書きました。

本当は設定云々以前に、そもそもの購入のきっかけとなった手首の痛みの話を先に書くべきですが、まぁ1週間程度で劇的に良くなるわけでもなく、もっと言えば、エルゴノミックキーボードなんて眉唾だ、という説もあるわけで、この辺はまた後日お伝えしたいと思います。

さて、本題のキーボード設定です。これも前回書いたとおり、Windows用キーボードをMacで使うために、キーマッピングを一部変更する必要があり、そのためのツールとして2種類のアプリを導入します。そのうち、「Seil」はCaps Lockキーや、IME変更用のキーあたりをカスタマイズするもので、設定内容もそれほど多くなく、アプリダウンロードサイトの説明だけで事足りるのですが、もう一つのアプリである「Karabiner」が、いい意味で「厄介」です。カスタマイズを広範囲にできるのです。

では、ざっくりとカスタマイズした内容を説明すると、
・キーボード最下列の修飾キー群をMacキーボードと同じ並びにする
・Macキーボードには存在しない「半角/全角」キーを、IMEの切替用に(普段使わないが)
・リモートデスクトップで使うキーのカスタマイズ
です。そしてこの中で一番「厄介」なのは、リモートデスクトップ用カスタマイズです。

実は、このアプリは、Macのアプリ単位でもキーの配列を変えることができる機能が通常で存在します。また、更にコアなカスタマイズを、設定ファイルを作ることでできるようになったりするのです。非常に便利。

まずはこのサイトを参考に、リモートデスクトップのみで機能するキーマッピングを設定、更に、リモートデスクトップ先でのIME切替をMacキーボードの「英数」「かな」(それぞれWindowsキーの「無変換」「変換」に割り当て済み)に『Windows側で』アサイン、ひとしきりプログラミングをしてみると、ほぼ完璧に普段通りのキーマッピングが再現できました。スゲーよ先人たち。

とは言ったものの、Macと(仮想デスクトップの)Windowsを交互に使い続けること数日、ちょっとした違和感を感じるようになりました。

キーボードショートカットの使い方です。
例えば、今この記事はMacで書いています。文章の編集をしているので、いわゆる「コピペ」の作業が発生するのですが、Macのコピー&ペーストは「Command+c/v」を押すことになります。で、このCommandキーはWindows(リモートデスクトップ)では何にアサインしてあるかというと、「Windowsキー」にアサインしてあるのです。しかも、キーボード上には「Alt」の文字が。

ちょっとややこしいですが、そもそも(キーボード左下の)MacのCommandキーとAltキー(正しくはOption/Altキーですが)の並びがWindowsと逆になっているんです。・・・まぁこればかりはMacとWindowsのキーボードを並べて見てみないとわからない話で、しかも指の感覚というか記憶でなんとかなる話なのでおいておきますが。

話を戻すと、コピーやペーストをするとき、MacではCommandキーと何かを同時に押す、という作業をしますが、Windowsではどうかというと、Ctrlキーを使うわけです。コピーなら「Ctrl+c」です。ちなみにCtrlキーはキーボード最左列真ん中のCaps Lockキーにアサインされています。

要は、MacとWindowsでコピペをするときに指の位置が変わってしまうわけです。

当然、Karabinerにもその問題を解決するための選択項目があります。Command+なんとか、でWindows側でも扱えるようにする項目はあるのですが、まだそれを導入していなかったりします。理由は2つ。
・Windowsキーを修飾キーとして使うことがある
・そもそもMacのCommand+αキーが好きじゃない

コレばかりは手癖の問題もあるので、個人的には(Windowsの)左端のCaps LockキーがCtrl/Commandであり、MacでのControlキーもやはり同じ場所にいてくれるのがベストなんですが。ちなみに、MacのControlキー、ターミナルアプリを使うときに使うんです。Control+cでコマンドブレイクになるので。それだけなんですが。

それともう一つ。これは次回までの宿題なんですが、前回も書いたとおり、このキーボード、プログラマブルキーがいっぱいついてます。コレを使えないかな、と現在画策中です。使えないキーも多いっぽいところまでは調べているのですが、使えたら便利なので、いろいろ試しています。

2016年2月11日木曜日

MacにWindowsキーボードを導入した顛末(その1:キーボード購入編)

そもそもの話だが、普段はMac使いの私。仕事上Windowsを使うにしても、仮想デスクトップを使っているので、やっぱり目の前にいるのはMacなのです。

最近、特に趣味の筋トレをしていると、手首に痛みを覚えるようになりました。そこで、思い当たる理由を考えてみたところ、筋トレ自体には問題がなさそうなのですが(週1〜2回ですし手首に負担をかけるトレーニングメニューもほとんどないので)、毎日の生活で手首に負担をかける行為といえば、次の2つのことがありました。
・寝ている時に手首をひねっていることがある
・Macのキーボードを打つときに負荷がかかっているようだ
寝相の問題はいかんともしがたいのですが、Macに向かっていて、キーボードを叩く時間はおそらく一般の人達に比べても相当長いわけで、そこに原因があるかもと考えました。

私の使っていたキーボードは一般的なApple Keyboardというやつなんですが、結構キーが引っかかることが多く、そのため無駄に力を入れているのでは?という仮説が生まれました。

そこで、中古屋さんでたまたま見つけてしまったのが、
「Microsoft Natural Ergonomic Keyboard 4000」
でした。2,000円で購入。

なんと、このUSBキーボード、基本のキーを入力するだけならMacにケーブルを差すだけで入力ができます。ちなみにここまではなんの設定もしないまま使っていたりします。

ただ、MacとWindowsのキーボードはいわゆる「修飾キー」の配列が微妙に異なっているので、配列の違いをどのように吸収するか、そして、今までずっと悩んでいた、仮想デスクトップでのキーボード配列の勝手な変更をどう解消させるか、ということが次の問題になってきます。

調べてみると、そういう問題を解消してくれるソフトが存在するとのことなので、実際に導入してみることに。
  1. Karabiner(https://pqrs.org/osx/karabiner/index.html.ja)
    これはいわゆるキーボードカスタマイズツールです。OSレベルだけでなく、アプリレベルでも使えるとのこと。ただ、これを使うのはかなり難しいようで、未だにうまくいかない点が多いです。もう少しいじってみてから報告します。
  2. Seil(https://pqrs.org/osx/karabiner/seil.html.ja)
    これは、Macに存在してWindowsに存在しないキーである、「英数」「かな」キーを使えるようにするものです。Macのスペースキーの両隣にあり、Windowsでいうところの「半角/全角」キーの役割があります。
    私は、Macと同じようにしたかったので、スペースキーの両隣にある「無変換」「変換」がそれぞれ「英数」「かな」にアサインしています。
と、ちょっといじるだけでかなり使えるようになります。個人的にはオススメ、なのですが、問題は「修飾キー」の刻印と内容が微妙に違うこと、そして「ホットキー」と言われる、プログラマブルキーが使えないくらいでしょうか。

もう一つ、これは個人的な問題ですが、数字の「6」の場所です。
このエルゴノミックキーボードの大きな特徴は、キーボードの真ん中に空白の空間があることです。ブラインドタッチをする方はわかると思うのですが、右手で打つキーと左手で打つキーの間に大きな空白がある、ということなのですが、この分け方、アルファベットで言えば、T、G、Bの右に空間があるわけです。

まず左手の話をすると、指はA、S、D、Fに置かれ、それぞれの上下にあるキーはそれぞれの指で押されるわけです。そして、GはFを押す指と同じ指(具体的に言うと左手の人差し指)で押します。では、その上にあるキーは、というと、Tと5になるわけです。

では右手はどうかというと、右人差し指はJに置かれます。その上にあるキーはUと7になります。そして、Jの左隣にあるHの上はというと、Yと6になります。が、なぜかこのキーボード、6は左側にいるのです。


これはすごく困る、という問題でもないのですが、ちょっとした瞬間に「あれっ?」とはなります。なぜこうなったのやら、と思います。 

2016年2月10日水曜日

小ネタ:「スマホのアプリを作りたいんですが」という相談について

仕事柄、スマホアプリの作成を相談されることがあるわけです。

それが、業界にある程度詳しい方たちであれば、大体の予算感もわかるし、規模も理解されているわけで、こちらの見積などに対しても「それなりの」反応はしていただけるわけですが、最近はちょっと事情が違ってきているようです。

先日も、個人で仕事をしている方からそんな相談を受けました。全くITとは関係ない業界の方でしたが、一応話を聞いてみると、お客様のスマホにアプリを入れて自社の商品を売りたい、というものでした。しかもオススメ機能なども含めて欲しい、というお話。

そのうち、お話がだんだんとふくらんできたので、

「ちょっと待って下さいな」

と。そして、
・「スマホアプリ」はスマホだけで完結しないものもある(今回の件はそのパターン)
・作るのはいいが、どうやって配布するのか(値段はどうするか、という点も)
・アプリの公開によって収益がどれほど見込めるのか
なんて話をしたうえで、予算感を伝えたところ、

「そんな金額個人商店で出せるわけないじゃないの!」

と言われてしまいました。

意外かもしれませんが、「アプリ」と言っても、ただスマホの画面上にあるモノだけを作るわけではないんです。必要があればクラウドサーバなどへの接続を行ってみたり、お客様の情報を管理しているデータベースとの接続があったりするんですが、そういったのを作るのがプログラマとしての「腕の見せ所」なんです。そして、それが思っている以上に開発の料金に上乗せされるわけです。

そこまでは理解できている方でも、その次の話、「アプリと(商売の)収益」、という話になると今ひとつピンと来ない方が多いです。

例えば今回のお話で言えば、要するにAmazonアプリと同じものを作りたい、と考えているのだと仮定します。ちなみに、Amazonのアプリは無料で提供されています。もちろん、今回の方も「アプリは無料で配布したい」とおっしゃっていたのですが、そのアプリを使ってくれるというお客様は一体どれくらいいるのかを考えてみましょう。

Amazon(日本に限ります)の月間のユーザ数は、およそ5,000万人(2014/12のデータです)。この年の年間売上高が8,300億円ですから、一ヶ月平均690億円。一人あたりの売上は1,400円程度/月になります。

これを個人でやろうとするとどうなるか。お客様の数や販売する品物の種類にもよるのですが、月間ユーザが100人程度で、商品が1ヶ月で消費されるもの、価格は通常店頭で販売している価格が1,000円のものを同じ値段で買うと仮定すると、月間の売上は10万円になります。が、配送料を販売側が持つとすればその分利益が減る事になります。そして、開発費用が仮に100万円だったとすると、およそ1年分のアプリからの売上を持っていかれることになるわけです。

実は、私はいつもこういった相談を受けた際に、一応こういった説明をし、それを前提に見積をすることにしているのですが、やっぱり反応がすごいです。びっくりされて、「やっぱり無理かぁ」で終わることが多いです。やはりそれでも相談に乗って欲しいと思う方が多いというのは、それだけ「スマホのアプリ」が一般的になってきたから、そして、それを便利だと思って使っている方が多いからなのだろうな、と感じています。

私は作るだけでなく、マーケティングも多少かじっているので、どうしても「作りまっせ!」一筋では行かないんですよね・・・。

2016年1月22日金曜日

(小ネタ) MacのOfficeマクロについて:その1(ActiveX)

たまにはプログラムネタを。

最近、Mac版のExcel(2011)でマクロ(VBA)を作っていたんですが、意外なことに、Windows版のVBAでもそのままプログラムが走ることが多いんですね。もっとWindows→Macで書き方がぜんぜん違うのか、と思っていたのですが、そんなこともなくてサクサクと動いてくれていたりするので面食らってしまうくらい。

とはいえ、Windows版では当たり前のようにできていてもMacだとできないこと、というのもあるにはあるんです。そんなのをいくつか紹介していきましょう。

WindowsでできてMacでできないこと、その1。

「ActiveX」は使えない。

「あんたバカかぁ?」とか言われそうですが。だってMacだもん。Windowsじゃないもん。ActiveXなんて使えるわけないじゃんよ。と。

そのとおり。そもそもActiveXはMicrosoftの開発したインターネット関連のコンポーネントなので、Macには(Officeを入れたのにもかかわらず!)入ってないんです。

で、これで何が困るのか、というと・・・。

データベースに繋げないんです。Windows版のマクロで他のデータベースソースに接続する場合、ADOという仕組みを使って接続するのがまぁ一般的というか、それで接続できちゃうんですが、このADO、正式名称が「ActiveX Data Object」、ActiveXを使ったデータベース接続の仕組みだったりするわけです。

それが使えない。データベースに繋げない。データを読めない書けない。困ります。

もちろん、解決策はあるんです。ODBCを使えばいいんです。ま、JDBCでもいいんですが。

どっちでもいいんですが、少なくともODBCのドライバ、Mac版は無償のがないんですよね・・・。もう一つの問題として、ドライバを入れる、という行為をしなくてはいけないんです。WindowsでADOを使えばODBCを使わなくてもデータベースにアクセスできるのにね。

それを言っちゃうと、「FileMakerを使えばいいじゃない」とか言われそうですが(マリー・アントワネットかよ)、Mac版のExcelだけのためにサーバ側のDBとしてFileMakerを選ぶ、というのはあまりにも短絡的すぎます。だったらクライアント側も(MacだけでなくWindowsも)ExcelではなくFileMakerを使う方がどんだけ楽か。

ちなみに、Mac版のExcelの最新版(2016)では、ODBCドライバを入れることなく、MicrosoftのSQLServerと接続ができるようになったようですが、それ以外(OracleとかPostgresとか?)はやっぱりODBCが必要になります。あ、もちろんFileMakerも以前と同様使えますが(笑)

2015年11月27日金曜日

小ネタ:散々な一日

たまにこういう日もあるよね、という、仕事あるあるみたいなもんですが。

朝、妻とテレビを見ていました。ちょっと遅めに起きた私は妻を仕事に送っていく準備をいそいそとしていました。そして、出かける直前、占いのコーナーが始まる直前、妻はニヤニヤとしていました。占いの結果は、妻が一位、私が最下位だったのです。そして、それを妻はすでに知っていた(1時間前に同じ占いをやっており、妻はすでに起きていたのです)ので、ドヤ顔で仕事に向かいました。

さて、妻を送り終え、家に帰って仕事を始めようと準備を始めました。PCは基本付けっぱなしなので、まずメインマシンで軽くメールのチェックをしながら、今日の仕事ではWindowsがどうしても必要になるので仮想環境のWindowsにログインしようとしました。しかし、ログインできません。画面が真っ暗です。

再起動をしたところ、今度は起動しません。真っ青です。PCがではなく私が。

特にデータを格納してあったりするわけではないので、最悪OSの再インストールで対応できるのですが、それでも再インストールには時間がかかります。しかもOSだけでなくアプリも復旧させるのは相当な時間のロスです。

とりあえず仮想環境で起こっている問題を解決しようとあれこれと調べつつやってみたのですが、何一つ解決に結びつく情報と出会うことなく、もちろん何ら状況が進展しないまま半日が過ぎました。

もうどうしようもありません。再インストールに方針を変えることにしたのですが、次に起こったのはメインマシンの不調です。こちらも突然真っ暗になり、動かなくなりました。私ももちろん真っ暗です。

メインマシンはどうやら不安定だったようで、再起動すると元どおり動き始めましたが、今度はネットワークが見つからなくなりました。以前バックアップ用のTime Capsuleが不調になった際に仮復旧させた状態で、本来ならば不安定になるはずの状況でしたが、問題も起こらなかったのでしばらく放置していたのが今更不安定になるとは。

そして、ネットワークの環境を正常な状態に戻し、やっと再インストールに取りかかれる、と作業を開始しようと思ったら、今度は仮想環境サーバのハードウェアに異常(というかガタ)が発生。HDDを接続するコネクタとケーブルが妙に引っ張られていて抜けそうになっていたり、ファンが異常な音を出し始めたり、CDのトレイが出なくなっていたり。力技で「なんとか」して、なんとか再インストールに成功しました。

が、これで結局さらに半日を費やすことになり、今日予定していた仕事は全く手につかなかった(仕事は資料作成だったので、空いた時間で手書きの資料を作りましたが)という何とも惨憺たる状況でした。

仕事のうまくいかない日、というのは結構ありますが、ここまで不運が続くのはなかなかありません。しかもそれなりに急ぎの仕事を抱えている時に限ってこういうのが連チャンで発生するんですよね。しかも占いが最下位だったし。

本当は、バックアップを取ったりとかしておかないと、こういう目にあうんですよね。考えておかなければ、なんてずっと思っていましたが、実際に実行に移さないのが悪いんですよね。落ち着いたらやろうっと。(←こういう態度が良くないんですね)

2015年11月24日火曜日

小ネタ:Office 2016 for Mac 再インストール顛末

唐突ですが、普段Mac使いな人たちが意外に困るんじゃないかと思うこと。

「資料」が開けないことがある

基本的に世の中の「資料」はWindowsで使うことを前提に作られているようです。ちょっとした資料が送られてきても、PDFで来ることは稀、WordだったりExcelだったり。ちなみに、そのPDFもたまに開けない(または開いても印刷ができなかったりする)ことがあります。システムで自動作成されたやつで何度無駄紙を印刷したことか・・・。

まぁ、WordやExcelはMacでは絶対に使えないというわけではなく、インストールしている人も多いはずですし(特に仕事で使うなら必須でしょう)、最悪、iWorkを使うという手もあるので、全くお手上げ、ということにはなりません。

が、すでにOfficeをMacで使っている人は、それが突然使えなくなると困ってしまうわけです。私がそうでした。

ここ数日くらい前から、Officeの全アプリが起動しなくなりました。起動は開始するのですが、オープニングの画面(スプラッシュ)が表示されず、「応答なし」状態になってしまうのです。また、それ以前から、アップデートがちょっとおかしい挙動をするようになりました。アップデータをダウンロードし、かつインストールが終わったにもかかわらず、その後再度最新版の確認をすると、同じアップデートが表示され、延々と繰り返してしまうのです。

こういう時はお得意の「ググってみる」ことから始めますが、意外にも「Officeが起動しない」事象が発生していたらしく、いろいろな解決法が検索に引っかかってきました。

それで、自分の状況と照らし合わせてみると、1箇所だけ、自分の状況だけがおかしい、という点を見つけました。

実は、利便化のために、Officeに限っては「アプリケーション」フォルダから別のフォルダ(実際にはフォルダ直下)にもう一つOffice専用のフォルダを作ってあり、その中にOfficeアプリを全部放り込んでいたのです。これ自体は非常に都合がいいのですが(Dockにフォルダを登録しておけばわざわざアプリケーションフォルダから探さなくていいので)、おそらく、これが原因でアップデートが妙な挙動をしていたのではないかと推測できます。
#こういう時、本来ならエイリアス、Windows的に言えばショートカットを使うんですよね。

とはいえ、それを元に戻したところで起動しないことには変わりがなく、仕方がないので再インストールをすることにしました。そのやり方は思っていた以上に面倒で(基本的に、MacのアプリをアンインストールするのはWindowsに比べるとかなり面倒です)、詳しくはここを参照していただくとして、ざっくり言うと、

  • 「アプリケーション」フォルダからアプリを削除
  • 不可視フォルダであるライブラリフォルダから特定のファイルを削除
  • 再起動後にインストールプログラム起動
と、Windowsのようにアンインストールプログラム一発で削除できるわけではないわけです。

再起動が本当に必要なのかどうかはマユツバですが(私はおまじないレベルだと信じてます)、とりあえず指示通りにやってみました。しかも、これもおまじないと信じてやまないウィルス対策ソフト(我が家はAvastです)の無効化もしてみました。

インストールは無事完了し、一応Wordは起動することがわかりました。その後、アップデートが走り、最新版のOfficeで起動することができたので、問題は解決しました。

Macでも、Windowsのようなアプリの(いわゆる)安全な削除ができるツールを一緒に提供すべきなんだよなぁ、と開発している立場だと思ってしまう、というお話でした。

追記:
Office2016 for Macでの不具合は結構多いみたいです。今回、私は再インストールだけですみましたが、ググってみるとそれだけでは解決しないケースもかなりあるようです。あまり私のケースは参考にならないかもしれませんね。

2015年11月20日金曜日

インターネットラジオの録音に関する考察(その5:進捗状況)つづき01

毎週報告しなくても、と思いますが一応。

実は今週はほとんどコーディングしていなかったので(別のことやってた)、進んでないです。
まずは現時点(11/20)でできたところ。

  • 番組表作成中。
    元となるデータをダウンロードするところまではできました。NHKのデータは3局別のファイルでダウンロードすることになります。radikoは全放送局(もちろん聴取エリア内のみです)が取れます。
    それから、デザインはまだやってないですが、少なくともリスト(JavaFX的にはListView)でやってみて、それから他のパーツを使うなり、いろいろ考えられそうです。
以上。
実は、その後処理になる、データを画面に表示させるところがどうしても実装できないんです。データがあればなんとかなると思ったのが間違いだったですね。世の中そんなに甘くないっす。

ということで、来週以降の予定ですが、
  • 番組表の画面表示。とにかく画面に出そう。
  • 積み残しのうち、デザインと広告あたり。

一人でやるんでのんびりですが。

小ネタ:無料アプリと広告

今日の小ネタはいつもと違い、アプリの収益に関するお話です。とはいえ、これは私が直面している話ではなく、一般的なお話でございます。

無料でアプリを提供する場合にどのように収益化するか、というのは以前のポストでも書いたことがありますが、アプリ内課金、もしくは広告収入、というのが考えられるわけです。というのを前提に。

わたくし事ですが、最近は使っていないスマホのアプリがいくつかあります。数年前、しかもリリースされて間もない頃に、「そうそう、こういうのが欲しかったんよ!」とインストールし、結構使っていたのですが、ライフスタイルの変化とともに、最近では起動することも少なくなっていました。

そのアプリのうちの一つが、テレビCMで流れるようになったのはここ数ヶ月前からでしょうか。職業柄、どうしても「お、この会社、ずいぶん儲かってるんだね」とアタマの片隅で思いながら、いずれにせよテレビCMを見たからといってアプリの起動契機になるわけでもなく、他のテレビCM同様、見過ごしていたわけです。

そして、今日、ふと気がついたことが。そのアプリからのオプトインメールを受信するように設定していた(らしい)のですが、以前よりオプトインメールの来る頻度が高くなったような気がしたのです。今朝、昨日のメールチェックでそのアプリからのメールを削除した記憶があり、週末に向けて夕方にメールチェックをしたところ、そのアプリからのメールが来ていたことで気がついたのです。確かに、この1ヶ月で週に2〜3通、今週は月曜着から金曜日まで毎日届いています。

ちょっとした違和感を覚えました。メールバンバン流してどんだけ広告収入を得ようとしてんのさ、と。でも、すぐにその理由に気づきました。テレビCMです。

アプリの運営会社はもともと、アプリ内にある広告がメインの収入源になっていたと仮定されます(アプリ内課金もありましたが)。でも、アプリがインストールされればされるほど収入が上がる、ということになるため、アプリの認知度を高める必要があるわけで、今までのように口コミだけではユーザー数は頭打ちになってしまう恐れがあったのではないでしょうか。

そこで、大きな認知度アップキャンペーンを行うことにしたのでしょう。そう、テレビCMです。最近はテレビ離れが進んでいるとは言え、テレビを視聴する人はまだまだ多いわけです。当然認知度が上がったでしょう。

ただ、そこにはおそらく大きな落とし穴があったはずです。テレビCMの制作および放送に相当額の広告費が費やされたはずです。そして、仮にアプリがインストールされたことによる売上が上がったとしても、それに見合うだけの利益を上げることができなかったのではないでしょうか。

とすれば、今度は既存ユーザに対してオプトインメールを送ることで、そこからの広告収入を得る、という方法で、なんとか売上(利益)を維持もしくは上昇させようと考えるのは無理からぬ話です。今日気がついたのはある一つのアプリですが、実は同様の理由で削除したアプリも今までに数多くあります。

その方法がダメだ、と否定するつもりは全くなく、利益を上げなければいけない企業の立場としては当然だとは思いますが、無料で使っているユーザー側として、その程度の「不利益」は受け入れなければならない、と、もしその企業が思っているのだとしたら、それはちょっと極論すぎる気はします。

ちなみに今回のアプリを開発した会社(もちろんどこかなんて言いませんよ)、財務状況とか全くわかりませんが、おそらく利益を少しでも前期より上げようとしているんではないかと。そして目指しているのは上場。そんなところでしょう。

それはいいことだと思いますし、素晴らしいことです。が、それによって、ユーザー側に不利益が少しずつ増えていくとしたら、果たしてそれはいいことなんでしょうか。利益を得たいと思うならまずは利益を出してくれる人のことを考えるべきだと思います。

・・・まぁ、会社によっては(今回のアプリの会社もそうかもしれません)大きな「資金源(≠利益源)」はユーザーではなく資本家だったりしますので、そちらをより大切にしてしまうこともあるかもしれませんけどね。


2015年11月12日木曜日

インターネットラジオの録音に関する考察(その5:進捗状況)

なんか業務連絡みたいなポストであることをご容赦ください。

昨日(11/11)時点でできていることを列記します。
  • AFNとNHKは一部の局だけだが再生が可能であることを確認
    (AFN:Local/Japan、NHK:東京エリア)
  • 再生可能な局については録音も可能だと思われるが未テスト
    (出力フォルダを作っていないのでめんどくさい)
  • デザイン作成中。昔のポータブルカセットレコーダーとかサンプラーとかをイメージした、でも今風のデザイン作り中。
  • 開発言語はJava。JavaFXで作る予定。正直すごく楽。XMLさまさまです。
次に考えること/やること
  • NHKの番組表を作成。番組表をXMLで作るのはどうやってやるんだろう?なんとなくわかるんだけど(データを引っ張ってきてXMLを自動生成的な?)。
    ちなみに、AFNは番組表がないのでどうしたもんかと考え中。特にLocal Stationはずっと聞き続けないと番組名わかんなさそうだよなぁ。作りながら聞くにしても絶対聞き流しちゃうだろうし。
  • radiko加盟局の再生・録音機能実装
    問題点は2つ。一つはradiko特有の「認証」の実装。やり方はわかってるんだけどめんどくさい。もう一つはエリア外聴取への対応(プレミアム対応といってもいい)。そもそも自分がプレミアム加入してないし。
  • デザイン(続き)
    そもそもそのデザインでいいのかよ、とは思ってますが。
  • 広告の実装
    そういえばデザイン考えるときに広告の配置を考えてなかったな。ちなみに、広告を貼り付けるだけで儲かるわけではないのだが、他に方法はないので(ないわけではないが自分が嫌なことはしたくないし)。
ざっくりとこんな感じです。

ちなみに、番組表の実装ですが、このポストを書いた後(この行より上は昨日の夕方書いた)、風呂に入っている時になんとなくアイデアが湧いてきました。実装がうまくいった時点でやり方を公開する予定ですが(失敗したら恥ずかしいので・・・)、ヒントとなったネットの記事をリンクしておきます。

テレビ画面はdiv要素でできている!- Hybridcastとテレビの未来 –
(from HTML5 Expert.jp)

記事自体は、デジタルテレビにおけるデータ放送画面がHTMLで構成されている、というものです。データ放送(記事内ではNHKのHybridcastについての言及ですが)を起動すると、内部ではブラウザが起動し、いわゆるWebの画面が表示されているという仕組みだ、とあります。

この記事は番組表実装の方法を考えるときにさらっと読んだのですが、その時はあまりピンとこなくて、ざっと読んですぐに閉じてしまいました。が、昨晩、まさに風呂に入っているときにふと、「とりあえず番組表をHTMLで書いたらどうなるんだろう?」と思いついたわけです。今回開発している環境では画面の構築はXMLを使っています。だとすれば、考え方は同じ方向を向いているわけで、うまくいくかもしれない、と。

確かに、データ放送画面を良く見ると(たまたま朝の情報番組を普段通り見ていたのですが)、上記の記事にあったようにHTMLで実装されていると言われればそのように見えます。ということは、テレビ自体がHTMLブラウザではないか、と仮定できます。テレビの機能画面は全てHTMLで描かれていると。

もちろん、これが「正解」とは思いませんし、私自身それほどコーディングに自信があるわけではないのでもっといい方法があるかもしれません。が、一つの方向性としてはアリなんだろう、とは思います。とりあえず出来るところまでやってみます。

2015年11月6日金曜日

小ネタ:アプリ制作とデザイン

私自身は、自分のことをエンジニアだと思っていて、デザイナーでは決してないと思っています。あくまでもプログラムを作る人で、プログラムのデザインとかあまり関係ない、と昔は思っていました。

そうは言っても作ったプログラムを使ってもらうためには、例えば使いやすさとか、使いたいと思わせるような動きとか、それなりに(実際にはかなり)重要だったりするわけで、どうしてもプログラムの「デザイン」、専門的な言葉を使うならUI/UXとか、そういったことを意識しないと本当はいけないわけです。

では、普通にプログラムをエンジニアが作るとどうなるか?基本的にプログラムの機能を作る人が作るものなので、デザインにはそれほどこだわりがありません。もちろん、ボタンの位置とか(整列していないとかどのボタンが右で左で、的なこと)は意識しますが、ストレートに言えばどんなアプリを作ってもまるで業務用のソフトみたいな(今でいうならふた昔前くらいのデザイン、でしょうか)感じになってしまいます。

私自身、そういったプログラムを作ってきた(そしてそれでよかった時代でありクライアントでした)ので、ある時、上司から「君の作るもののデザイン、ダサすぎるね」と言われた時はショックであり混乱もしました。だって、動くんですよ。必要な機能も盛り込んでいますよ。それなのに、アプリの機能と関係ない部分ですから。

しかし、現在、というより時代の流れでしょうか、アプリはただ動くだけではなく、デザイン面での考慮が必須になりました。ですが、開発をしようとしても、開発環境を普通に揃えた状態では、どうしても昔ながらのダサい画面しか開発できない、という状況に変わりがなかったりします。

もちろん、デザインが素晴らしいアプリの開発ができないわけではなく、それなりの環境を揃えることで実現できるわけです。世の中に優れたデザインのアプリが存在するということがその証拠ですが、ではそれは何か。

私は最近までスマホアプリを開発していたので、Javaを使うことが多いのですが、Javaのみで作ろうとすると、どうしても限界が出てきます。そこでスマホでは(そして調べてみるとPCアプリでも)XMLを使ってデザインをする、という方法があります。これはデザイン面での開発にとっては便利であり、簡単でもあるので、私はやりやすいと思います。

もちろん、開発環境の中で、パーツのデザインを含めて提供するというスタイルもありますが、よく言えばデザインが統一される、悪く言えばダサくなりがちだったりするわけですし、逆に、XMLを使うスタイルでも、ごちゃごちゃしたデザインになりがちなので、それぞれに長短あるのですが、いずれにせよ、機能以外の面でダサいアプリを作ることは、あえてそれを狙うことをしない限り(ネタアプリみたいな感じですかね)、できないししなくていいし、そんな時代になったんだなぁ、と思います。

実は、以前言われた「デザインがダサい」という一言は、今でも心の中に引っかかっています。むしろ、もうそんなことを言われたくない、という気持ちに変化していて、どんなアプリを作るにせよ、多少なりともデザインを気にするようにはしています。どんな簡単なアプリでも、誰かが使うことを考えて作ります。

ざっくりですが、私が考えるデザインの順番は、
・まず見た目。見た目が悪ければ使う気は起こらないはず。
・次に使い勝手。ボタンやらコントロールやらの場所を考える。
というもの。どれだけ使い勝手の良いものでも、見た目が悪いとあまり愛着が湧かないというのは「モノ」を選ぶ際のポイントになってくると思います。確かに世の中には見た目より使い勝手重視と思われるものもたくさんあるにはありますが、その全てが万人に受け入れられているとは思えませんし(しかも受け入れられるためには条件がいくつか必要)、見た目が良ければとりあえず受け入れてくれるわけで、見た目を最初に考えるのが私のスタイルです。

2015年11月3日火曜日

インターネットラジオの録音に関する考察(その4:番組表の詳細設計(仮))

本当ならラジオの番組表は後で作るつもりでいたので、現段階で書くことはなかったはずなのですが、ちょっとデザインを考えているうちにまとまった考えが浮かんだので、仮の設計をしておこうかな、と。

まずこのブログを普通に読んでいる方はおそらく日本人だと思われます。日本語で書いてるし当たり前ですかね。では、そんなあなたに質問。番組表と聞くとどんなイメージをお持ちですか?

おそらく、新聞のラテ欄と同じレイアウトのイメージなのではないかと。画面上にテレビ局が並び、下に行くに従って未来の番組になっていくものです。当たり前といえば当たり前なレイアウトですよね。新聞に限らず、テレビでもラジオ(というかradiko、らじるらじる)でも同様、局が上に来てます。

ということは、このデザイン以外ありえない、ということになりそうですが、実はそうでもないんです。海外のテレビ、しかも多チャンネルな国(アメリカとか中国とか)だと、テレビの番組表は局が横に、時間は左から右へ進んでいく、というのが多いみたいです。CSのチューナーも昔はそんなスタイルだったような記憶があります。

これはなぜか。私自身、それほど海外の事情に詳しいわけではないのでわかりませんが、おそらくは「慣れ」から来ているのではないか、と推測します。

「番組表」の画像検索をしてみると顕著ですが、日本語で「番組表」と検索をすると、基本的に(日本人には)見慣れたスタイルのアレが出てきます。では、英語で「TV Listings」「TV Schedule」と検索するとどうなるか。まぁ多彩なデザインが出てきます。

先ほど書いた、表が日本と逆(局名が左側にある)のもあれば同じのもあったり、古い新聞だと何時からどこのチャンネルで何をやるかが列記されているだけだったりとか、おそらく共通フォーマット的なものが存在しないんでしょう。

だから、日本の場合はおそらく新聞の表現方法がデファクトスタンダードになり(テレビ・ラジオ雑誌もこの表現を踏襲)、デジタル化された現在でもこの表現方法が一般化しているということは言えるでしょう。もちろん、日本人は文字を上から下へと読む習慣があるので、それに倣って造られた表現方法なのだとも考えられますし、そもそも新聞は縦長の紙面なので、それにマッチする表現方法がこれだった、とも考えられます。

逆に、海外ではそう言った新聞などでの番組表の表現方法が確立されておらず、デジタル化された段階で見やすい番組表を模索した結果、横長の画面であるテレビにマッチしたスタイルである、日本とは逆のスタイルになった、または、文字の読む習慣から考えれば右に目線を動かすタイプの方が読みやすかった、という理由があるのかもしれません。

では、私(純粋な日本人です)が作るとしたらどんなデザインになるのか。おそらくですが、どちらも採用しそうです。ユーザーに任せる部分というか。

これには理由があります。
先にちらっと書きましたが、昔のCSチューナーはいわゆる日本式ではない番組表を採用していました。日本製ですが(東芝だったかな?)。理由はわかりませんが、おそらくは、チャンネル数があまりにも莫大なため(そしてこれは現在の海外の事情ともおそらく合致すると思われますが)、「日本式」の番組表では画面に表示されるコンテンツの数があまりにも少なすぎるため、逆にしたのではないか、と思われます。

さて、ネットラジオに話を戻しますが、今回選びたい局は実はかなりの量になります。私自身は現在東京在住なので、それだけでも結構な数の局になる(radikoだけで13局、NHK3局+AFN Tokyoだけとしても)のですが、そこにコミュニティFMを幾つか加えればなかなかのコンテンツ量です。それを「日本式」で見るのが果たして見やすいのかどうか(もちろん、番組表を取得できれば、という条件はあるにせよ、radiko参加局とNHKは確実に取得できるはずなのだから)。

だとすれば、選局可能なチャンネルが少なければ「日本式」でも構わないし、多くて見にくい、となればそれ以外の方法も選択肢があっていい、という考え方はあっていいと思います。

今回は開発の中でもデザインに特化した内容でしたが(にも関わらず絵を一切掲載しないという暴挙に出ましたが)、アプリを作るときにはどうしてもこういうことも考えないといけないよね、と思い、書いてみました。今後も割とこういうデザインネタは多く書くことになるとは思います。

インターネットラジオの録音に関する考察(その3:聴取・録音機能の詳細設計)

前回のポストで、ストリーミング配信ラジオの聴取・録音方法についてまとめました。で、それをもとに詳細設計をする、ということなんですが、これも前回書いた通り、バックグラウンドで必要なソフトを立ち上げるだけでいいわけです。

もうちょっと細かく言うと、
・選局する(聴取・録音するラジオ局を選ぶ)
・聴取の場合は聴取のためのソフトを立ち上げる
 #rtmpdumpだったりffplayだったり
・録音する場合は録音のためのソフトを立ち上げる
 #rtmpdump/ffmpeg

聴取するだけなら実は本当にこれでよく、局を変える時もその都度立ち上げたり終了させたり、というだけでいいんですが、問題は録音です。今聴いている局を今から録音する、というシチュエーションは現状では考えにくく(昔のFMではよくやってましたね。好きな曲が流れるまでずっと待っていて、かかった途端に録音ボタンを押したり、あらかじめ録音ボタンと一時停止ボタンを押しておき、一時停止ボタンを解除する、というアレ。懐かしいなぁ・・・)、予約録音をするのが一般的なのではないか、と思います。

すると、予約のための機構を作らなければならない、ということになります。
予約録音自体は、rtmpdumpでもffmpegでも、開始時刻を指定することができないため、アプリ内で予定時刻になったら(実際にはアプリ起動から録音開始まで若干のタイムラグがあるので開始時刻の数秒前に)起動し、そこから指定された時間録音する、というやり方で実装できそうですが、問題はその開始時刻の指定とタイムラグの調整になります(調整レベルの話は内部でごにょごにょになりそうなのでメインは開始時刻指定ですね)。

そこで、番組表の話が持ち上がってきます。
最近のテレビ(地デジ化された後のテレビ、と言い換えてもいいですが)にあるEPG、いわゆる番組表機能は非常に便利です。今何をやっているかもわかりますし、録画したい番組を選んであれこれできたり。個人的にはあれを作りたいですね。やり方がイマイチ見えてないですが。

番組表ができれば、録音のための開始時間はそこから取得できるわけですし、予約などのやり方も簡単にできるようになるはずです。ただ、これについてはおそらくすぐにリリースはできないんじゃないかな、と。だって、やり方が見えないもの。

もう一つ、予約録音に必要な事があります。PCのスリープ解除にまつわる機能です。普段から電源を入れっぱなし、画面も消えない、という状況はまぁ考えにくいわけで、スリープ解除(及び必要があれば録音作業終了後のスリープ設定)をする必要はありますよね。

とりあえず、今できる事は最低限聴取と録音の機能ですね。あとは開発言語をどうするか、というこちらの都合がありますが、まぁそれはどうでもいいことなので。

開発言語の話で一つ思い出したことがあります。最初の設計段階でスマホアプリでは再生機能のみ、としたのですが、この理由は至って簡単。容量の問題が起こるからです。

録音した音源をスマホからその都度PC側に移動させる、という作業を誰もが行うというのであれば、スマホで録音するのは結構都合のいいことのように思えます。が、普段の生活で意識的にPCへデータを移動させることは普通のユーザーはやらないでしょうし、そもそもPCを持っていないスマホユーザーもいるわけで、ずっとスマホにデータを入れっぱなしにしているということは、間違いなくストレージ容量の不足を招くわけです。

もちろん、クラウドへの移行や外部デバイス(SDカードだったりそういうの)への移動も視野に入れるとしても、それでも容量は無限にはなりえない。だとしたら、スマホでの録音は行わないほうが良い、と考えます。スマホからPC側に録画予約ができる機能が実装できるならいいですが、それって相当難しくない?


インターネットラジオの録音に関する考察(その2:ストリーミング配信方式のまとめ)

前回のポストでは、とりあえずの設計をやってみました。基本的に一人でやることなので(以前も書いた通り、似非アジャイル開発です)、小さい機能を作って最終的に組み立てる、というやり方になる以上、ざっくりと頭の中に完成図があればいいわけです。

で、機能面でのメインとなるのは、

普段自分が聴取するであろうラジオ局を聴取する/録音する

というものです。まぁ当たり前の機能ですね。では、その方法について軽くまとめましょう(というか、自分も久しぶりにこの機能の実装をすることになるので、以前の調査結果をまとめておかないとわけがわからなくなるんです)。

インターネット上で配信されている(かつ私が普段聴取するであろう)ラジオはおおよそ、以下の形式で配信されています。
・Radiko(民放ラジオ各社)・・・RTMP
・らじるらじる・・・RTMP/WMA(WMAは2015年8月末で配信終了)
・AFN・・・要調査(HLS?)
・JCBA・・・RTMP
・CSRA・・・WMA?

ざっくりいうと、配信形式は3種類に分かれます。で、それぞれの方式に対応した聴取・録音の仕組みを作らなければいけない・・・のですが、これらを一から作ることは私にはとてもできません。で、どうするかというと、それぞれの方式に対応した聴取・録音ソフトをあらかじめ取得しておく必要があるわけです。

ググって調べてみると、RTMPに対応するソフトが「rtmpdump」、それ以外であれば「ffmpeg」が必要になり(聴取・録音ソフトでフリーのものはこれを使っていることを公言しているものもあるし、おそらく有償のものでも同様なんでしょうね)、アプリ的にはこれらをバックグラウンドで実行させることで聴取・録音を可能にしている、と考えられます。

ちなみに、この聴取・録音をするためのコマンドラインはとても簡単で、例えば、今ちょうど私が聴いているAFN Tokyoの聴取ならば、
ffplay "http://4613.live.streamtheworld.com/AFNP_TKOAAC" 

また、それを録音するならば(例として10分録音)、
ffmpeg -i "http://4613.live.streamtheworld.com/AFNP_TKOAAC" -t 600  -vn -c:a copy "~/rec.m4a"

と一行コマンドを実行するだけで済むわけです(ffmpegの再生版がffplay)。本当はもうちょっと細かい技が必要になるのですが、それはおいおい紹介するとして(というか私も調べながらの制作を行うので・・・)。

ということで、聴取・録音機能のやり方をまとめることで詳細設計の大枠が出来上がってきました。次回はこの機能について詳細設計をもう少しまとめてみたいと思います。

インターネットラジオの録音に関する考察(その1:開発再開前夜)

今年初めの頃、Mac用のインターネットラジオ録音アプリを作ろうとしていましたが、他にやりたいこともあり、単体の曲だけ選択し録音機能を実装する、というところでいったん開発が停止していました。

ふだんはMac使いではあるものの、開発の都合からWindowsマシンも持っていたりしますし、仮想環境にもWindowsの古いバージョンが入っていたりするので、実際のところ録音にはWindowsマシンで他の人が作っているアプリを使うことで(あえて何とは言いませんが)何とかなっていました。

ただ、今年の9月からだったか、NHKのストリーミング形式が変わったことで、アプリの録音機能が正常に動作しなくなり、NHKの録音(午後4時からやってる気象通報を録ってました)ができなくなってしまいました。まぁアプリのバージョンアップをすれば済む話なのですが、自分で作ることができるのに他人のアプリを使い続けるのもなぁ、なんて思いながら、しかもNHKの録音した音源に関して言えば、今のところあってもなくてもいいものだったので、とりあえず放置プレイをしてあるわけです。

そうは言っても、「録音できないんだったら自分で作ればいいじゃない」というアントワネット型思考(笑)が頭をよぎる以上、作らなければならないのかなぁ、と思っています。

ということで、ちょっと開発に時間を費やしてみたいと思います。

・・・とここまでならいつもの調子なのですが、その前に、作るにあたっての設計や実際のコードのサンプルなどもブログにアップしてみたいと考えていて、今後しばらくは設計やコードをひたすらブログにあげてみようと思います。

で、とりあえずの設計(いわゆる基本設計、全体像、Perspective)をこんな感じにしてみようと思います。
・一応Mac用アプリとして開発を開始。
・スマホ(iPhone/Android)用アプリも作る予定(ただし録音機能は付けない予定)
・余力があればWindows用も作ってみる
・聴取可能な曲は普段AM/FMで聞いているものを網羅(※)
・番組表は新聞ラテ欄的なデザインで
・プレーヤー自体のデザインもそれなりのものにする

まぁ、他にもいろいろと出てくるのでしょうが、最初のバージョンはシンプルな状態で出したいですね。誰かが使ってくれるのならその段階で要望も出てくるのでしょうし。

それから、もう一つこだわりたいのはやはりデザインでしょうか。直感的なデザインは外せません。機能重視はもちろんなのですが、それによってゴチャゴチャしたデザインになるのは個人的には許せないです。シンプルなのがいいです。シンプルで直感的。

ラジオのデザインと言えば、あくまでも個人的には、ですが、昔のラジカセのデザインは嫌いではありません。同世代(40歳代)のオジサンには共感してもらえると思っていますが・・・。が、あれはシンプルとは言い難いですね。どっちかというとゴチャゴチャ。ボタンがいっぱい付いているのがカッコよかったんですけどね、昔は。

ということで、しばらくラジオネタで引っ張ります。次回はコードを幾つか載せてみますのでお楽しみに。

2015年9月30日水曜日

小ネタ:ブログにコードを貼り付ける

ブログを書いていて、とてもやりたいことの一つに、ブログで作成したコードの一部とかを公開することでした。自分でプログラム作成をするときに参考にするサイトでも、コードのところだけ別の枠に囲まれていて、色やら行数やらついていたりして、カッコイイじゃん!俺もやりてーなー!とずっと思ってはいたのですが、なかなかそこまでに至りませんでした。

で、ちょっと手が空いたときに調べてやってみたのですが、最初はよく分からなくてうまくできなかったのですが、きちんと時間をとって調べてみると、意外と簡単だったりしました。ということで、このブログにも仕込んで見ました。

ちなみに、ブログでプログラムコードのところが↓こんな風になるのを、シンタックスハイライトというらしいです。
<!DOCTYPE HTML>
<html>
 <head>
  <title>Online or offline?</title>
  <script>
   function update(online) {
     document.getElementById('status').textContent =
       online ? 'Online' : 'Offline';
   }
  </script>
 </head>
 <body ononline="update(true)"
       onoffline="update(false)"
       onload="update(navigator.onLine)">
  <p>You are: <span id="status">(Unknown)</span></p>
 </body>
</html>
(w3cのサイトからコピペしてきましたごめんなさい)

これはブログに限った話ではなく、コードを色付けしたりして読みやすくする、というのがメインの目的です。まぁ私のブログ文字多めなんで、これにコードを入れたらもっと文字多くなっちゃって大変ですがねぇ。 それはともかく。 使い方は他のサイトを参考にしていただくとして(現時点で一番参考になったのはこのサイト。日本語で説明されていることもありますが、元のサイトのリンクも入れてくれていたのは助かりました。感謝いたします)、導入の要点をまとめておきます。
  1. 下準備としてスクリプトのリンクを追加しておくこと。参考リンクでは<head>セクションの一番最後(もちろん</head>タグの直前ですよ)に追加、とありますが、これは昔ながらのお約束ですが、近頃(少なくとも2015年の時点)では<body>セクションの一番最後(</body>の直前)に仕込むのが流行りらしいです(速度向上とか)。このサイトでは流行りに負けて<body>セクションの最後に記載してみました。
  2. 実際に使う場合、コードを<pre>タグで囲むだけでよいみたいです(参考にしたサイトは情報が古めだったので、実際に元サイトに行ってみるとそう書いてある)。
    使い方例:
    <pre class='brush: ○○; html-script: true;'>
    コードの内容
    </pre>
    
    上記例の「class=brush:○○」のところに使っているコードの名前をここを参考にして記入します。もしhtmlの中のスクリプトだということであればその次の「html-script」項目をTrueにすればよいはずです。
  3. ただし、<pre>タグに囲まれたコードの中で、一部エスケープ文字を使用する必要があります。各言語で異なると思いますが、上記の例で言えば、HTML(XML)の場合は(少なくとも)行頭の「<」はエスケープ文字(「&lt;」)に直しておく必要があります。そうしないと表示が崩れます。 #本当は「>(&gt;)」もやらなきゃいけないみたいですが、 #Bloggerでは行頭を直したら行末は勝手に修正が入ってしまいましたとさ。
ちなみに、これは私が使っているBloggerの場合ですが、おそらく他のブログサイトでも同様でしょう。ちなみに、スクリプトリンクの追加は(Bloggerの場合)テンプレートのHTMLファイルをいじる必要があります。まぁコードを載せようなんて人は「その筋」の人たちでしょうから、元のHTMLファイルを壊す、ということもないと思いますが(笑)。

まだ使い方があまりわかっていませんが(つか元サイトがあまりにも説明少なすぎる気が)色々と調べてみて、わかってきたらまとめて解説してみようかな、と思っています。

2015年9月29日火曜日

古いネットブックへのWindows 10導入顛末

仕事、という内容でもないですが、皆さんの参考になるかと思い、古いネットブックにWindows 10を導入した顛末をお知らせしたいと思います。

結論から言えば、成功しました。そして、かなり使えるらしい(私は使っておらず、使用者である妻の弁)とのことですので、押入れに突っ込んであるネットブックや中古で持ち運びに便利なマシンをお探しの諸兄には福音かもしれません。

ただ、そこに至るまでの道のりは実はすごく長かったです。試行錯誤の結果成功したと言っても過言ではないです。なので、その長かった道のりには触れず、最短でインストール成功する方法をお知らせします。

まず、用意するもの。

  • ネットブック本体(今回はAsusのEEE PC 1000Hをストック状態で用意)
  • メモリを積めるだけ(メーカー公称1GBでしたが2GB積めるらしい)
  • SSD(中古とかの安いので十分)
  • Windowsのメディア(今回はWindows7とWindows10の二つを用意)
基本的に、Windows7はWindows10にするための踏み台みたいな状態です(もとのネットブックはWindowsXPだったので、そもそもはWindows7をインストールするつもりで買ってあった)。

そして、もしネットブックが現役ならば、データのバックアップをしておいてください。基本、クリーンインストールしますので。

手順を簡単に書くと、
  1. Windows7インストールの前段階として、BIOSを最新版にアップデートする
  2. HDDをSSDに交換し、メモリも最大限積めるだけ積む
  3. Windows7をクリーンインストールする
  4. Windows7用のメーカー提供ドライバの最新版をインストールする
  5. Windows Updateを行って最新の状態にしておく(※オプション)
  6. Windows10にアップデート(引き継ぎ なしで行う)
  7. 必要に応じてWindows10用のドライバをインストール
直接Windows10をクリーンインストールでもよかったのですが、今回は後で述べる事情があり、Windows 7を一度インストールしたうえでの作業になっています。

注意点を順を追って説明していきます。
  1. BIOSのアップデート
    基本的に、Windows7に対応しているマシンはWindows10にも対応していると考えてよいです。Windows7より上位のOS対応のBIOSアップデートがあればそれをインストールすればよいですが、私の場合はWindows7版が最新でした。
  2. SSD・メモリ換装
    メモリは、あればあるほどよい、とは言いますが、まずWindows7にする時点で、どんなにメモリを積んでも3GBまでしか認識されないという制限があります(ネットブックでIntel Atomを積んでいるマシンは32bit版しかインストールできないらしいので)。したがって、最大でも4GB(OS側が3GBとして認識)を選ぶ必要があると思います。また、Windows10では32bitでも4GBを認識している、という情報もあるのですが、そもそも32bitOSが4GBのメモリを認識するのか(いわゆる「3GBの壁」の解消がされたのかどうか)わかりません。
    SSDについては、必須ではないです。SSD自体、読み込み速度は相当早く、例えばアプリ起動など、いわゆるサクサク「動く」という点では非常に有効ですが、書き込み速度(データをダウンロードしたりファイルを保存したりという作業に影響)が遅いということもあり、私は躊躇したのですが、HDDを積んでいるネットブックのHDDスペックは基本的に低速(回転数が遅い=読み書き速度が遅い)であり、SSDへの換装により、書き込み速度も向上しました(どんだけ遅いHDDだったんだ、ということにもなりますが・・・)。
  3. Windows 7のクリーンインストール
    HDDを換装したのであればバックアップはあとでなんとかなりますが、そうでなければインストール作業前にバックアップは必須です。クリーンインストールで注意する点は他にありませんのでこんなところで。
  4. Windows 7用ドライバインストール
    これが意外と大事です。少なくともメーカーで提供しているドライバは全部最新のものを入れておいてください。私はグラフィックスドライバを入れていなかったため、このあとのWindows10インストールで失敗しています。
  5. Windows Update適用(オプション)
    実は、私の環境ではこれをしなくてもWindows 10のインストールはできました。というか、Windows Updateがどうしても動かなかったんです。エラー回避方法はいくつかあるので試してみたのですが、どれもうまくいかず、「諦めた」というのが正解かもしれません。これができていれば、もしかするとWindows 10にはしなかったかもしれませんので、よかったのか悪かったのか・・・(これがWindows7経由でWindows10にした理由です)。
  6. Windows 10インストール
    クリーンインストールではなく、アップデート(OS起動中にインストール作業を行う)で行いました。この時、前のOSの情報を引き継がないオプションでインストールしました。こうしないとインストールができませんでした。また、更新プログラムのダウンロード・インストールもこの時点では行わないように選択しました。やはりこちらもうまくインストールできなかったので。
  7. Windows10用ドライバのインストール
    基本的にWindows7の時もそうですが、実はOSで認識したハードウェアのドライバは正常に動いており、わざわざ変える必要もないかもしれません。どちらかというとハードウェアメーカー側で最適化されたドライバと考えています。私はこの作業を一部しか行っていません(タッチパッドと電源管理のドライバだけはいれておきたかったので)。
このためにかけたコスト概算ですが、
  • ネットブック本体:¥15,000
  • OSパッケージ:¥12,000(Windows7 Home 32bit)→Windows 10のDSP版はもう少し高かったです
  • メモリ(2GB/1枚):¥3,000(中古)
  • SSD(128GB):¥8,000(中古)
しめて¥38,000 ナリ。本体をすでに持っているのであれば、最大23,000円で、すでに本体側の改造済ということならOS料金だけで現役マシンになれる、というお話でした。

ちなみに、個人的には古いネットブックではWindows 10の魅力が半減するかなぁ、というのがちょっと使わせてもらった感触です。デスクトップOSとしては今までのWindows(7まで)を踏襲したものなので、可もなく不可もなし、といったところです。また、今回のインストール作業ではクリーンインストールをメインでやっていますので、余計なサービスやアプリが入っておらず、かなり軽快に動作します。
しかし、当たり前の話ですがタブレットモードがなく、さらに画面タッチもできないのは、タブレットモードに慣れている状態の私には退屈というか面倒というか、ちょっと違和感があります。