投稿者: opa

  • iTunes用スクリプト

    iTunes用スクリプト

    本日の成果:iTunes用のスクリプトをいくつか作った

      私は音楽データはアルバム毎にサーバの特定のフォルダに入れて管理しています。さらにiPhoneとかも使っている関係上、iTunesも使わざるを得ないのですが、iTunesはiTunesで独自のライブラリ管理方式を採っているので、下手すると二重管理になってしまいます。CD買ってきてエンコードしてサーバに放り込んでも、それだけではiTunesひいてはiPhoneでは聴けないのです。

      そこでなるべく省力化するべく、(MacなのでAppleScriptで)自動でその辺をやってくれるスクリプトを作ることにしたのですが、これがまた大変でした・・・。

      まずはエンコードしてサーバに放り込んだあとの作業を自動化しよう。ということで、指定フォルダ内をサーチして、iTunesにまだ登録されていない曲だけを登録するスクリプトを作ってみたよ。
      単におおもとになるフォルダをドラッグ & ドロップで登録してやればいいのかもしれないけど、登録したいフォルダがいくつかあって、毎回忘れずに登録するのが面倒なのと、ついでに登録日のプレイリストを作って登録するということもやりたかったので頑張ってゴリゴリひとつひとつの処理を書いてみたよ。

      しかし結論としてはAppleScriptの文法と動きのクセに翻弄されてえらい苦労することになった。うーんこの言語、きっと登場当時はオブジェクト指向ぽくて複数オブジェクトの一括操作ができたりもして大変革新的に見えたのでしょうが、私が今回やってみた感想としてはいくつか違和感を感じる点もありました。
      例えば文法を英語的なものにした結果(それどころか昔は日本語風に書くこともできたらしいですね)、逆に他の言語に比べて何やってるか判り辛くなってると思います。複数単語でひとつのキーワードだったりして、どれが変数でどれがクラス名やプロパティでどれがキーワードなのかが判りづらいです。CやLISPみたいに記号だらけなのもアレですがAppleScriptは記号少なすぎだと思います。構文解析とか一体どうやってやってるんだろう・・・。構文木というより意味木みたいなものを構築しているのかしらん。でも、理解しやすいようにと英語っぽくする試みの失敗例を私は知っています。COBOLといいます(笑)。英語っぽいけど英語じゃないCOBOLという言語の文法を結局新たに憶える必要がありました。

      あと、参照の取り扱いにクセがあります。例えば、リストの要素を一つ一つ処理するためにrepeat withでループさせた場合、ループ1回毎にリストの要素がひとつづつ渡されるわけですが、例えばXという名前のA,B,C…という要素を持つリストでループを組んだとしますと、その時の渡され方が「XというリストのN番目の要素」という渡され方のようなのです。そのものずばり「Aへの参照」とか「Bへの参照」などではなく。そしてそれを実際に参照したときに、XというリストのN番目の要素を探しにいってその結果を返してきます。でこのループが10000回目ぐらいになると、Xというリストの10000番目の要素を律儀に探しに行っているのか、目に見えて遅くなります。わざわざリストに特化した文法を使うメリットがあまりなく効率的でないように思えます。それだけではありません。例えば3回目のループ(Cのループ)の途中でリストからBを削除したとします。さて「Cのループ」と言いましたが今注目しているのは実は「C」ではなくて「Xの3番目の要素」なのでその瞬間からループ変数はCではなくDを指すことになります。なんかホントにそんな仕様でいいんですかJobsさんと言いたくなるような動きで、実際私もこれで一晩ハマりました。

      処理速度にも悩まされました。とりあえずインタプリタであることを差し引いても全体的に遅いです。メモリも食います。特に、扱うリストのサイズが増えるとN^2オーダー(体感)で時間がかかります。また、上で述べたとおりオブジェクトへの参照の持ち方が特殊なこともあってか、書き方のちょっとした違いにより処理速度が大きく変わるのです。一旦ワーク変数に代入したら速くなったり、キャストすると速くなったり。えてしてスマートで簡潔な表記より、冗長な判りづらい表記の方が速かったりするのがストレスが溜まります。それからこれは環境依存なのだと思うのですが、OS付属のスクリプトエディタから実行すると、メモリが開放されません。いきおい、デバッグ作業で何度も実行するうちに、どんどんメモリを消費して、スワップ始めて、動作速度が亀のようになります。ところが、アプリケーション形式にして実行したり、(スクリプトエディタではなく)iTunesから実行したら普通のメモリ消費量で動きます。この件でも私はスクリプトの書き方の問題だと思ってなんとかならないかと無駄に高速化や省メモリ化を試みたりして一晩無駄に費やしましたよ。

      で、とりあえず一撃で未登録の曲ファイルを追加できるようにはなりました。なりましたのですが、ひとつ問題点が。というのは、いったんiTunesに登録した後で、ファイル名を変更したとかでiTunesから実体が参照できなくなっている曲。これが二重に追加されてしまいます。そこで、そのような、ファイルの実体が参照できなくなっている曲を探して削除候補のプレイリストに纏めるスクリプトを書こうとしたのですが、なんだかiTunesの仕様上、実体が参照できなくて「(!)マーク」がついてる曲は、プレイリストに入れることができないようで、仕方ないので一覧表示して確認したうえで削除することにしました。(削除だけはできる)

      ファイルの実体が見つからないデータがあると、削除するか尋ねる

      削除成功

      念の為もう一度実行すると、今度は紛失ファイルはない

      そしてもうひとつ。私はiTunesのプレイリスト機能はあまり使っていませんでした。ひとつづつ自分で作るのが面倒だったからです。今回、折角なのでついでに、アーティスト別/アルバム別にプレイリストを自動的に生成してくれるスクリプトを作ってみることにしました。ま、なんというか、それならプレイリストを作るまでもなく、画面右上の検索欄で検索すればほとんど同じことはできる話ではあるのですが、リストから選ぶ方式のほうがちょっとだけ簡単かなと。

      で、その結果、前述のとおり処理速度の遅さなどに泣かされる結果となったのですが、なんとか我慢できる速度にはなりました。それでも8千トラックを処理するのに数時間かかります・・・。アルバム別とはいっても、違うアーティストの同名アルバムが同じプレイリストに入ってしまっては嫌なので、その辺のチェックでさらに負荷かかってます・・・。

    アーティスト別
    アルバム別
    登録日別 (ついでに対応)
  • DiskRing

    DiskRing

    本日の成果:DiskRingでMac miniのHDDの整理をした

      そんなにデータを溜め込んでいた憶えもないのに、Mac miniのHDDの空き容量が少なくなっていたので、ディスクの整理をしたよ。どこを整理したらいいか調べるために、DiskRingというツールを使ったよ。


      他にもDaisyDiskなんてのもあって、こっちの方が動きも機能も良さそうだったのだけど、これは売り物でした。そうそう何度も使うツールでもないだろうと思うので、単純にフリーの方を使ってみました。
      で、結論としては全然ツール使って調査するまでもなく、ゴミ箱フォルダの中に作業用にコピーした仮想マシンが大量に残っていただけだったのでした・・・。orz

  • プリンタにカバーをかけた

    プリンタにカバーをかけた

    本日の成果 : プリンタが埃をかぶらないようにカバーをかけた

    といってもプリンタがかぶる埃がカバーに積もるだけの話ですが。まぁカバーなら外して水で丸洗いできるし。
    しかしこれどう見ても横からホコリ入りますね。切るサイズ間違ってますね。とほほ・・・

  • 滑り止めシートを敷いた

    本日の成果 : PS3の上面がツルツルで曲面で上に載せたあらゆる物がツルツルコロコロ落ちるのでよくある滑り止めシートを切って敷いた

  • ダンボールを纏めた

    本日の成果 : 明日の回収日に備えてダンボールを纏めた

  • もっと読む

    本日の成果:もっと読む を覚えた

     

      Bloggerでの「もっと読む」機能の使い方を覚えたよ。

     

      さっそく過去のエントリも含めて使ってみたよ。

     

      あとついでにブログのデザインもちょっと変更してみたよ。

  • 間違えた

    間違えた

    本日の成果:間違えた

    コレを買うつもりが、

    間違えてコレを買っちゃったよ!!

    いくらなんでもこんなに似せなくてもいいと思うんですが・・・(^_^;。しかも、欲しかったのは初心者向けの手取り足取りタイプの入門書なのに対し、間違えて買った方は経験者向けのTips、裏技集みたいな位置づけの本らしく、読者層が全然違います(笑)。
    あ、ひょっとしてアレですか? Appleだかどこかのデザインガイドに従った結果モロに被っちゃったとかですか? (笑)

  • キンドルが来んどる

    キンドルが来んどる

    本日の成果:キンドルが来んどる

      キンドル買ってみた。

    べ、べつにiPadに対抗したわけじゃないんだから!

      すっごい久しぶりにamazon.com(amazon.co.jpではない)で注文したのだけど、海を越えて来るというから1ト月ぐらいかかるかと思ったら意外と早く1週間くらいで届いたよ。きっと世界中にバカスカ売れてて日本にも毎日飛行機で送っているに違いない。箱を開いて本体を取り出すとディスプレイ部には最初から「つなぎかたと充電のしかた」が表示されていて(電子ペーパーなので表示させっぱなしでも電池を食わないらしい)、充電するともう発注したときのamazon.comアカウントと紐付けまでされていて、即Kindle Storeで買い物できる。3G回線対応モデルなら無線LANに接続する必要すらない。しかも現状、通信費はamazon持ち。ひー、なんという太っ腹。オイラ英語は苦手だからKindle Storeなんかほとんど使いそうもないのに。

      とりあえずテキストファイルやら青空キンドルで変換した青空文庫とかを数十冊分入れてみたよ。エクスプローラ使ってコピーするだけで完了だ(その後コレクションに分類するのは面倒だけど)。電車の中でiPad使っている人はたまに見かけるけど、Kindle使ってる人はまだ見たことないので、これ見よがしに使ってみようと思います(あほ)。

      iPadと比べて格段に軽いので、片手で持って、というか手のひらの上に乗せる感じで、親指でページめくりボタンをポチポチ押すことでまったくストレスありません。滑って落っことしそうな感じもない。素晴らしい。
      そのうえ、簡単なwebブラウザも内蔵していて、ちょっと試した限りではGoogleとかGmailとかDropboxとかにログインして参照することはできた。正直びっくり。でも日本語の入力はさすがに無理みたい。対策としてJavaScriptでFEP相当の処理をするという大技もあるらしいけど、僕はそれだったらiPhone取り出したほうが早いかな。

      ページをめくるたびに、一瞬暗転するのは、仕方ないんだろうけどいただけない。多分、電子ペーパーの原理上、一旦真っ黒にしてから改めて新しいページの内容を描画しないと、前のページの内容が微妙に残ってしまうからだろうと思うのだけど、このせいで、本のページをめくる感覚というより、次のスライドに切り替える感覚が、すごくする。その度にちょっと、脳がびっくりする感じ。
      あとはやっぱり、解像度もっと高くなってほしいです。解像度フェチなので。たぶん白黒で3000DPIぐらいになるまではずっと言い続けると思いますが、輪郭がぼやけていると気になるのですよ!!

  • iPhone 4 ICカード化計画その3

    iPhone 4 ICカード化計画その3

    本日の成果:iPhone 4 ICカード化計画その3

      前々回と前回のつづき。

      前回まででICカード(Edy,Suica,PASMO等)のハンドリングは劇的に改善されたのですが、裏側を見るとここにICカードが入れてあることが丸見えで、なんだかダサかったので、目隠しに挑戦しました。最初は何も考えずにプラモデル用の黒い塗料を塗ってみたのですが、超ムラになっちゃった上に乾いた次の瞬間からカパカパと剥がれてしまいました。失敗。
      きちんと下地処理してスプレーで塗るという案も考えましたが、下地処理とか今までやったことないし下地剤も持ってないので、手持ちの黒いフィルムをカードの大きさに切って貼り付けてみました。自動車の窓ガラスに目隠しに貼るやつ。気泡が盛大に入ってしまい抜くのが大変でした・・・

      半透明の奴だからカード番号とかが見えてしまうのではないかとも思いましたが、もともと濃いタイプのフィルムだったこともあり、結果的にはほとんど見えません。よかったよかった。

    とりあえず完成形
  • iPhone 4 ICカード化計画その2

    iPhone 4 ICカード化計画その2

    本日の成果:iPhone 4 ICカード化計画その2

      前回のつづき。

      ケースをもういろいろ試行錯誤した結果4~5個は買ってる私のところへ、例のアンテナ問題のおかげで、さらに今度は純正バンパーが届きました。いや勿論頼んだのは自分なんですが。

      せっかく貰ったことだし、モノはいいので(今まで買ったガワは皆部品点数1点とシンプルだったのに、純正バンパーは何ですかコレ。部品点数10コぐらいあるんじゃないかしら。ちゃんと剛の部分と柔の部分とで素材変えてる・・・)、有効利用する方法はないかと考えるわけですよ。私としては、もうICカードがついてない状態に戻るのは論外だし、かといってバンパーは裏面はiPhone 4の素のまま、むき出しにするタイプだから、ICカードを挟めないし・・・と思ってしばらく放置していたのですが、ふと思いつきました。バンパーでは裏側が覆われていないからICカードを挟めないのなら、裏側を何かで覆って、それでICカードを挟んでやればよくないかしら?

      では、やってみます。

      これが届いたバンパー。ギネスのグラスに入ってるのは麦茶。(本題と関係なし)

      で、この裏側をどうしようかということで、今回挑戦するのが真空成型

      ICカードをそのまま使うと、熱でダメになる可能性もあるような気がしたので、バーコードのみとかあまり使っていない同サイズのカードを、

      iPhoneの裏にテープで貼りつけて、これを型にして真空成型で裏ガワを作ってやろうという魂胆です! 真空成型って初めてやるのでドキドキだ。

      軽く調べてみたところ、趣味用真空成型器のようなものも市販されているようですが、こだわらなければ百均ショップで材料買ってきて自作もできるらしい。今後も何度も使うものとは思えないので迷わず百均で材料買ってきました。まずはタッパーにアタリを付けて、

      テキトーに穴開けて切り抜いて、

      あとはカッターで予定の寸法まで広げます。ていうか要は穴開けたかっただけですね。写真3枚も貼って説明するまでもなかったですね。

      この穴にこのように掃除機のノズルを突っ込んで吸引すればいいかなーという皮算用です。

      金網というかパンチングメタルというか、実際は台所用の水きりトレイなんですが、上に被せてテープでとめて、真空成型器いっちょあがり。(^_^;

      続いて材料です。これまた百均で買ったテキトーな大きさの木枠に材料を固定します。百均すごいな何でもあるな。
      写真では0.2mm厚のプラ板が写ってますが、これは失敗しました。どうもタミヤの0.2mmの透明プラ板は製造時に引き伸ばしているらしく、暖めて柔らかくした瞬間に縮んで破れてしまったのです。塩ビとかPETとかだとうまくいきました。ポリカーボネートもよさそう。試していませんが。

      成型中。じゅるじゅる(吸う音)

      調子にのっていっぱい作った(あほ)。写真上が塩ビ、下がPETです。微妙に色が違う気がする。

      あとはこれをちょうどいい大きさにハサミで切って、ICカードと一緒にバンパーでiPhone 4に固定します。切り口が多少汚くてもバンパーによって隠されるので、ハサミで適当でOK。そのままだと、ICカードのカード番号が丸見えだったので、目隠しに余ってたアップルシールを貼りました。全部は隠れていませんが・・・。
      内側から黒く塗装してもいいかもしれません。その場合はカメラの穴だけはマスキングする必要がありますね。

    完成した様子