事実上無料になったKeynote、AppleScript対応は大きく後退

OS Xに続き、iWorkも無料になってしまいました。新しいバージョンはツールパレットがなく、ユーザインタフェースも変更されているなど、久しぶりのアップデートで進化したかなと思ったところです。ですが、残念ながら後退したところがありました。

KeynoteやPagesはそこそこAppleScript対応があったので、プレゼンテーションの自動生成に使えていたのです。以下はKeynote Ver.5.3、つまり1つ前のバージョンの用語辞書です。slideというクラスに、bodyやmasterなどがあり、つまりはスライドの中身をスクリプトで構成できるのです。

スクリーンショット 2013-10-26 10.34.12

ところが最新版のKeynote Ver.6の用語辞書はこんなにさっぱりしてしまっています。slideクラスにはプロパティがなく、結果的にこれだと、自動的なプレゼンくらいしか用途はないというところでしょうか。

スクリーンショット 2013-10-26 10.34.54

幸いというか、iWork 09フォルダにあった古いKeynoteはそのまま残っていたので消さずに使い続ける事になりそうです。

Mavericksでは通知センターをスクリプトから使えるようになった

Mountain Lionで登場した通知センターは賛否ありますが、まあ、慣れてくると別に気にならないというか、逆にシステム側で便利につかえるようにどんどんなってきているので、今となってはなくなると不便な人も多いかもしれません。挙動は以前よりシステム環境設定の「通知」で変更はできますが、10.8では、コマンドラインから通知を出せなかったということがあります。しかしながら、それができるようになりました。スクリプトから通知ができます。

そのためのベースの機能は、AutomatorとApple Scriptでの通知のサポートです。それぞれ、次のようなアクションおよびコマンドが追加されています。display notificationコマンドはStandard Additionsにあるので、常に使えるものです。ご覧のように大量にパラメータがある…と思ったら、次のsayコマンドでした。パラメータは4つですね。

スクリーンショット 2013-10-23 13.44.59

スクリーンショット 2013-10-23 13.46.29

このdisplay notificationコマンドをosascriptコマンドで実行してやれば、コマンドラインから通知が可能です。たとえば、こんな感じです。osascriptコマンドの標準入力にAppleScriptのプログラムを送り込めばOKです。

echo ‘display notification “I am a command-line.”‘|osascript

上記のコマンドで、以下のような通知が出てきます。UTF-8での日本語もOKです。

4

パラメータを付けてみます。

echo ‘display notification “コマンドだ!” with title “Terminal” subtitle “ダークサイド”‘|osascript

5

 

通知センターでの表示は、システム環境設定の「通知」で、「AppleScriptエディタ」に対する設定となります。/bin/shとかいった項目が出るのではないということですね。

スクリーンショット 2013-10-23 13.59.29

ともかく、コマンドから通知を出せるようにできるようになるのはうれしいですね。

Mavericksでエネルギー消費をアクティビティモニタで監視

アクティビティモニタが少しすっきりした画面になっていますが、「エネルギー」というタブが追加されていて、エネルギー消費のインパクトになるものが分かります。簡単に言えば「電池を食うアプリケーション」を燻り出すツールでしょうか。

スクリーンショット 2013-10-23 12.50.36

ここでApp Napの列を見ると、App Napの状態に入っているかどうかを確認できるようです。刻一刻と変化するので、「対応しているか」ということではなく、App Napの状態かどうかを示していることになります。

App NapはAppleのサイトよると、バックグランドにあるアプリケーションのCPU使用をぐっと減らしてバッテリーの消費を伸ばすという仕組みです。パフォーマンスも少しは向上するかもしれませねんが、背後で作業をする場合には普通に作業するので、パフォーマンスの向上はわずかになるでしょう。

Appleのサイトでも唱われているSafariの効率化で、背後に回ったタブもApp Napの対象になるとなっています。つまり、Safariのタブは1つ1つ別のプロセスになっているので、事実上、タブ1つが1つのアプリケーションのようなものと思ってもいいでしょう。それらが、別々のプロセスで見えていて、表示していないページの一部はApp Napが機能します。ただし、全部ではないようです。

スクリーンショット 2013-10-23 12.56.42

 

一方、ChromeもGoogle Chrome Rendererというプロセスがアプリケーションの子プロセスになっているので、ページごとに別々のプロセスが描画を担っているようです。しかし、ChromeのRendererは単独でApp Napには入らず、アプリケーション自体だけが背後に回ったときにApp Napに入るのみです。アプリケーションがApp Napに入り、子プロセスがそうでない場合、子プロセスも省電力動作をするかどうかは判断できないところですが、実行機会はすべてのプロセスが持つのですから、親がApp Napだと子供もApp Napということではないと思います。

となると、やはりSafariの方がChromeよりもエネルギー効率は高いのかもしれませんが、よく考えると、ブラウザの種類に限らず、バッテリーを長持ちさせたいのならブラザの余分なウインドウを閉じる方が効果は高いということでしょう。また、使わないアプリケーションも落とすというのが基本ですね。

アクティビティモニタを見ていると、末尾にグレーのアプリケーションがあります。起動しているものもありますが、起動していないものもあります。App Storeアプリケーションがそうなのですが、これはもしかすると、アプリケーション自体が監視のためのデーモンを動かしていることの印なのかもしれません。また、この一覧には原則としてアプリケーションとその子プロセスが見えています。つまり、デーモンはApp Napとは関係ないという事でしょうか(だからAppか!)。

ヘルプを見ると、「高性能 GPU 必要」という項目もアプリケーションごとに出るようで、複数のグラフィックカードがある場合に、高パフォーマンスGPUを使用する必要があるかどうかを示すようですが、私のMacBook Air 2012ではこの列は出せないようです。「表示」メニューの「表示項目」では選択できません。

開発関連の情報を見る限りは、「App Napを有効にする」みたいなフラグがアプリケーションにあるわけではなく、Cocoa Frameworkを使ったアプリケーションには適用されるようなシステム機能と言えます。バックグランドでなるべく何もしないとか、タイマー処理の間隔を広めに取るなどの対策をすることで、よりApp Napに入りやすくなるということのようです。ただ、手元にある比較的古いアプリほど、グレーになっていたりするので、単にCocoaということではなく、一定以上あたしいフレームワークでビルドしないと、App Nap適用されないのではないでしょうか。

[Mavericks] AppleTVデスクトップ拡張でサウンド切り替えに困る

(追加情報)もっと簡単な方法がありました。末尾に追加しました。

OS X Mavericksで便利になった点にAppleTVにAir Playで画面を送る事ができることです。ミラーリングなら前からできましたが、デスクトップを広げる拡張先として、Air PlayのApple TVを使えることです。拡張ディスプレイを、いわばワイアレス接続できるわけです。外部のディスプレイを追加するためにUSBのアダプタを買ったのですが、このアダプタは使わなくなってしまいました。ちなみに、アダプタのUSBドライバはMavericksでは互換性がないとしてメッセージが出てはじかれているので、使えなくなってしまいました。

いずれにしても、Apple TVをAir Play対応にして、Macとペアリングすると、Apple TVをディスプレイとして利用できます(詳しい方法はきっと多くのサイトで紹介されているでしょうから省略)。メニューバーでAppleTVを選択すれば、少し待つと切り替わります。トラフィックの少ないワイアレスネットワークならそこそこ使えますが、せっかくなので、AppleTVもEthernetでつないでしまいました。表示に関する遅れはほとんど感じませんが、時々、微妙な表示途中の状態がチラっと見えることもあります。

pic2

システム環境設定の「ディスプレイ」を見ると、以下のような感じです。このAppleTVは、3rd Generationつまり現行機種です。外見がまったくそっくりな2nd GenerationのApple TVだと、最大解像度が720pまでだったので、Macのディスプレイとして使うためにAppleTVは買い直しました。とは言え、2nd Gen.の方はリビングで使っています。

pic3

こうしてUSBアダプタを使わずに、ネットワーク接続で「画面が広くなる」ということを標準機能だけで実現できるようになったわけです。ただ、ログインの度にApple TVへの接続を手作業でやらないといけないですが、まあ、それくらいはいいとしましょう。起動の度、つまり、毎朝、Apple TVを選択する事になります。

しかしながら、Air Playの送信先を切り替えるため、画面だけでなく、サウンドの出力先も同じApple TVに切り替わってしまいます。私が持っているいちばん音がいいのは、USB接続している初代のSoundSticksなんですが、音を鳴らしながらApple TVに接続すると、サウンドの出力先はSoundSticksから勝手にApple TVに切り替わります。「勝手」じゃなくて「仕様だ」といわれそうな気もますが不便です。なお、Apple TVからさらにAir Playで別のスピーカーを選択していても、Apple TVのサウンド出力、つまりHDMIケーブルで出力された先のディスプレイ等で音が出てきます。Air Playのカスケードはできないということですね。

そこで、Apple TVに切り替えた後、SoundSticksに切り替えたいわけですが、サウンドの出力先の切り替えはシステム環境設定を使う必要があります。メニューアイコンでの切り替えができません。それで、ちょっと不便だなーと思って、メニューアイコンで出力先を切り替えられないか、フリーソフトをあさって見ました。いっぱいあるのですが、比較的シンプルそうなのはこれらです。

SoundSourceは、Mavericksでは起動しませんでした。また、開発元のサイトでもリストアップされていないので、開発はやめているのかもしれません。Audio Switcherは2010年とやや古いのですが、Marvericksでも起動でき使えています。ただし、署名されていないアプリケーションなので、システム環境設定の「セキュリティ」の設定によっては起動しないかもしれません。いずれもアプリケーションなので、利用するには単にダブルクリックだけです。ログイン時に常に使いたい場合には、システム環境設定の「ユーザとグループ」にあるログイン項目への登録を自分で行います。

起動確認できたのは最初の2つで、左側がSound Switcher、右側はVTAudioSwitchです。Sound Switcherは、入力の切り替えができる点と、Preferencesから起動時に選択する項目を指定できることです。出力先の変更はどちらもできますね。右側のVTAudioSwitchはショートカットが割り当てられていますが、アプリケーションのショートカットと当たるのであまり当てになりません。

pic1

ということで、サウンド切り替えもメニューバーからできるようになり、手作業が必要だとは言え、システム環境設定を呼び出すより手軽です。

純正機能でサウンドの出力先を変更できる

標準の機能でできないと思っていたら、メニューバーにあるサウンドのアイコンをoptionクリックしてできることを教えていただきました(ありがとうございます>Miyuki Imaizumi)。左が通常の状態ですが、optionクリックすると、入出力の選択ができますね。悩む必要がなかった(笑)。

2

Mavericksから搭載されたiBooksのデータはどこに?

OS Xにやっと、標準のePubリーダが搭載されました。PDFも登録できます。iBooksを起動すると、iTunesにあるデータを引継ぐかどうかをたずねるので、引継ぐと、iTunesのライブラリから書籍データは消えます。ただし、デバイスへ同期する書籍の選択は、iTunes上で行います。書籍の購入もiBooksで行います。

スクリーンショット 2013-10-23 2.55.56

別に使い方が難しいわけではないでしょう。ePubの場合、ウインドウは広くなりますが、文字部分の幅は一定のところまでしか広がらないので、大画面に大きく表示できないのがちょっと残念ですが、あまりレイアウトを崩さないようにという意味なのでしょうか。縦方向には長ーくすることはできます。PDFはプレビューで表示しますが、PDFファイルとのリンクが切られたようなウインドウで表示されます。保存をしてみると、保存する先を指定するシートが表示されます。PDFを編集すると複製が作られるので、iBooksにあるものを編集すると、ファイル管理の手間が増えるので、原則として行わない方がいいでしょう。ちょっと重いというか、レスポンスが悪いときもありますが、十分に実用にはなっていると思います。

スクリーンショット 2013-10-23 2.54.21

さて、このiBookのデータはどこにあって、どのように運用すべきなのでしょうか?検索をかけて探したところ、以下のようなパスにありました。「BKAgentService」は、Book Agent Serviceというところでしょうか?

~/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks

つまり、「ライブラリ」の中です。PDFやePubをドラッグ&ドロップすると、ここにコピーされます。iBooksにはiTunesのようにデータフォルダの指定はできないので、事実上、自分のホームに書籍のデータがどんどん増えて行く事になります。見方を変えると、ここのディレクトリにあるコンテンツを見るアプリケーションという作り方もできるんじゃないかと思います。もちろん、iBooksとは異なる機能を持ったアプリケーションが作れます。たとえば、2冊、3冊同時に読めるリーダーなんて欲しいですよね。

この中のディレクトリを見てみると、こんな感じで、ePubファイルはZIP圧縮アーカイブが展開されてディレクトリとして保存されています。そのため、ほぼ全部、元ファイル名は保持されていません。一方、PDFは概ねもとファイルのファイル名を保持してそのままの形で残されています。また、ibooks拡張子のファイルも見られます。iBooks Authorの拡張子は.ibaであり、iBooks Authorから出力するのが.ibooksファイルです。ibooksファイルをダブルクリックすると、iBooksに読み込まれます。

スクリーンショット 2013-10-23 3.00.14

もちろん、このディレクトリはTime Machineでバックアップが取れます。従って基本的なバックアップはTime Machineでいいでしょう。しかしながら、購入したePubやPDFのファイルはここに残せばいいのかというと、結論としては別途バックアップを残した上でiBooksに読み込ませるのがいいと思われます。ePubは展開されていて元の状態にはなっていないので、元のファイルを残しておくのが何かと便利と思われます。もっとも、PDFだけなら同じなので別途残す必要はないかもしれません。だけども、「ライブラリ」の下にあるものは普段のファイル管理の作業では顕在化しないので、存在を忘れてしまう可能性もあります。やはりiBooksに読み込ませた後、どこかにバックアップも取っておくのが安全だと思います。

プログラミング講義の演習でペアプログラミング

けっこう長い年月、大学で文系の学生を中心に初心者向けのプログラミングの講義とExcelを中心としたアプリケーション利用の講義を受け持っている。プログラミングの方は以前は自分の書籍、そして改訂が追いつかなくなってからはその内容を書き換えて作ったテキストで教えている。ずっとJavaを教えているがJava言語を教えるのは学校の方針なので変えられない。ほとんどの学生は、おそらくエンジニアにならないと思うし、ここまでにプログラミングについての何かの講義を受けたことは前提にしていない。プログラマ養成という目的はなく、「世の中にはこういう世界もあるものだ」と思ってくれればいいくらいの講義であり、以前は受講者はすごく少なかった。もう1つ講義を持っていて、そちらはExcelを中心にしているが、数年前まではExcelの講義の方はまだ受講者は多かった。しかし、なぜかちょっとその傾向が変わっている。比較的まじめにJavaの勉強をする学生が増えて来た。情報処理試験を受ける人がその学部でも多いということを別の先生からも聞くが、もしかしたらスマホブームみたいなこともあるのかもしれない。

毎年同じように淡々とやってきたのだが、数年前にExcelの講義よりもJavaの講義を最後まで受ける人の方が多くなってきて、ちょっとやり方を変えるべきかと思うようになってきた。少しレベルを上げて、繰り返し基本をやるのをやめたりとかしてきたが、今年から「ペアプログラミング」を演習に取り入れるようにしようとした。講義は半分は解説しながらプログラムを打ち込んだりして、残りの半分は演習に充てている。去年までは基本的に1人ずつでやっていた演習を今年はペアプログラミングにしようとした。しかし、いきなり最初から人と組むのはどうかと思い当初は1人での演習とした。つまり、ベースになる知識がいくらかでも浸透しないと会話が成り立たないと考えたのである。今日は4回目の講義で、今回の演習でペアプログラミングやってみたのだが、結論を言うと正解だった。学生の表情がきわめて明るく、また、相談しながら何かをやることでの達成感があるのか、「できたー」と声を出す学生は1人や2人ではなかった。記録のため、その状況をブログに残すことにする。

  • 先週までで基本型を説明した。今日は文字列についての章で、+、length、substring、そしてStringBufferのinsert、appendくらいしか教えてない。それらでできるプログラミングとしては基本的なレベルの演習を与えた。
  • ペアプログラミングという言葉を使ったが、アジャイルとは何かみたいな話は一切していない。説明したのは「1台のパソコンを代わる代わる使って演習をやりなさい」という程度、また、適当に打ち込む側を代わることと、横から見ている人は「言葉で茶々を入れる」ということを強調した。問題ごとに代わるペアもあったが、「随時必要に応じて代わる」点を強調しておいたので、主体的に関わる側に随時切り替わるペアもあった。
  • チームをどう作るか迷ったが、講義は学科や学年をまたぐものであって、あまり同一学科の同一学年が集まっておらず、学生同志はほとんど面識のない様子だったので、単純に座席の近い者でペアを組ませた。人数が奇数だったのだが、1名のみTAが茶々入れ役をした。
  • ほぼ全員が、明るい表情で演習を続け、また、お互いに話をすることで、講義にありがちな重苦しい雰囲気は一気に吹っ飛んだ。通常の演習よりもリラックスができたのだと思われる。また、演習問題が出来上がった事は声や表情等に出るのだが、一人でやるよりも達成感があったのではないかと想像できる。また、問題の解釈をディスカッションしたり、うまく行かないポイントを会話するのを聞く事で、どういうところを迷っているのかもある程度は観察できる状態だった。
  • 問題に関する質問がほぼなかった。通常は演習中に、TAが走り回ってサポートしているが、サポートの必要がなかった。つまり、2人で演習にかかれば疑問点は解決できるということのようだ。
  • 終わってから作ったプロジェクトを作業していないPCでログインしている人に渡すように指導をしたが、そこで悩むことの方が多かった。この点についてはあまり指導しないでおいたので、仕方ない面はある。たぶん、次回からUSBメモリが必要だと気付く人もいただろう。また、下手なことをするよりもプログラムをメールで送り合った方が楽という点も気付くペアはいた。いずれにしても、ここは随時指導を加えるポイントである。

そういうわけで、ペアプログラミングってどうだろうかと慎重にスタートしてみたが、たぶん、これは学生も教師もやりやすい手法のようだ。特に、学生同志で、それぞれ上下関係が薄いという場合には問題なくワークしそうだ。学年の違いもまあ、あの年齢になるとそんなに気にならないのだろうか。ペアを今後どのように作るかちょっと悩ましいところもあるが、固定化しないでやるのがいいのか、あるいは固定化させるべきか考えないといけない。だが、いずれにしても、ペアプログラミングによる演習は積極的に取り入れて良さそうだ。

Byte誌を創刊した人が亡くなられたという記事を読み…

PragPubの最新号(Oct 2013)を読んでいたら最後のページに訃報が掲載されていた。Wayne Green、1975年にBytes誌を創刊、いっしょにビジネスをしていた元妻と即トラブって後々の同誌の栄光時代はともに歩んでいないとはいえ、PragPubはMr.Greenの最大の功績としてByteの創刊を挙げている。日本だと、私と同世代を中心に「日経バイト」の読者も多いだろうし、その隣の編集部で私は何年か過ごしただけに関係者とも今でもFacebookでつながっている。日本で発行する遥か前に関わった人ではあるけど、こうして雑誌で紹介されるのは、Byte誌の存在感はすでに廃刊している今も大きいということだ。

日本で日経バイトが発行されたのは80年代、私は高校→大学→就職→転職とめまぐるしい10年だったが、コンピュータ雑誌は情報を得る最も先端的な手段だと皆が思っていた。研究室では当然ながら誰かが買って来た1冊を回し読みをする。みんなお金がないので、特定の雑誌を買っている研究室にわざわざ読みにも行く。そんな研究室で、日経バイト購買担当は自分だった。「日経バイト」を読んでいたら、コンピュータに疎い同級生が「いいの載っているか?」と聞いてくる(そのバイトやない…)。「すごいよー」と言って見せると、ひー!と言いやがった。その日経バイトの翻訳記事でMacintoshはよく掲載されていた。毎日自分が見ているコンピュータのあまりの違いにショックであり、すごく高価だけどアメリカではこんな先を走っているのかと印象付けられた。そして現在がある。

出版や雑誌の存在感が大きな時代は、もはやなつかしいものになった。そんな時代に短いながらも出版社で雑誌を作る仕事ができたことは、得難い経験になった。自分のキャリアのベースはそこにある。雑誌は特にチームプレイであり、「映画を作るような熱狂」(映画を作った事はないので想像だけど)を年がら年中やっていたような高揚感があったことを思い出す。時代は移り、インターネットの発展でメディアの立ち位置は大きく変わったが、Byte誌という言葉を聞くとなんだかワクワク感が戻ってくると同時に、はるか昔のさまざまなことを思い出させてくれる。Mr.Green、享年91歳。