Celeste Engineer

Androidとか自転車とか

宮森の万策シーン

この記事は SHIROBAKO Advent Calendar 2016 - Adventar 17 日目の記事です。

昨年は杉江さんについて*1書きました。今年は作中に出てくる「万策」について書きたいと思います。 かなりネタバレしてますのでご注意下さい。途中でだんだん語彙力の万策もつきてきてしまって申し訳ないさが半端ないです😭。

万策といえば本田さんですが、一年目えくそだすのみゃーもりも万策尽きそうな場面がたくさんあります。

えくそだす4話のごたごたの始まり

3話の原画があがらず瀬川さんに代わりをお願いしたことで、4話のスケジュールがおすところです。 色指定の新川さん、撮影の佐倉さんに注意を受けたところから始まり、徐々に切羽詰った感が出てきます。 この時のドーナツをどーんと行きたくなるくだりと、たろーにミンチッと心のなかでぼやくシーンのわかりみの深さたるや。

遠藤さんへの依頼

瀬川さんが倒れてしまったことで、遠藤さんに代役をお願いするところ。 「甘いものですか!苦いものですか!権力ですか、名声ですか!」と徐々に畳み掛けるところ、ちょっと茶化した感じもありますが緊迫感が垣間見えます。 ここは山田さんが良い感じに場の空気を緩めてくれていますね。

あるぴんのシーンのリテイク

ぎりぎりになって作画の直しが必要になったところで、辺Pに無茶振りされたときには、万策尽きたっぽく焦りつつも冷静にスケジュールを逆算していました。 その後みゃーもりが認識合わせのやり直しから始めようと言い始めたのは、本当に新人かよってくらいうまい提案でした。 ちなみに、「あるぴんはここにいるんだよ!」と監督があつく語っているところ、井口さんのちょっと呆れつつもしょうがないなぁと思っていそうな顔も最高です。

4話納品まで

リテイク作業が始まり、ぎりぎり納品に間に合うかというタイミングで、別の問題が起こります。 みゃーもりは4話と並行で9話も担当していました。4話のリテイクの仕上げと9話の原画確認から様々な作業があることがここで紹介されます。 ここの長い長いセリフだけでも大変さがにじみ出ていますが、木佐さんの原画の進捗が分からず電話をかけるところから、徐々に疲れが見え始めます。 本田さんが畳み掛けるところは、新社会人の経験を振り返ってみると同じようなことがあったなぁと。

山田さんを秘策で起こし、原画が完成。社内をあちこち駆け回るみゃーもり。杉江さんとぶつかりそうになったり、宅配便のお兄さんに掴みかかったり*2、木佐さんへの電話でブチ切れたり、山田さんに「信じらんねぇ」と言われたり。 この切羽詰まった流れをコミカルさも交えつつテンポよく表現しているのはすごいなと思いました。

最後、サーバのトラブルで4話のリテイクデータが集まらないとなってからいよいよ万策が尽きそうになりますが、矢野さんと興津さんのフォローでなんとか乗り越えます。 たろーがぼやいた「トラブルって重なるもんですね」は本当にそうだなと思わずにはいられない名言ですね。たまにいいことを言うたろー。いいキャラしています。

さいごに

新人が万策尽きそうなときに適切なフォローをどんどん進める本田さん、矢野さん、興津さんのチームワークはすごいですね。 「これからよ、これから」と声をかけた本田さん、いい上司感半端ないです。 そして、みゃーもりの豊かな表情にはどんなに見ても飽きないかわいさがあると思います。

*1:■ - Celeste Engineer

*2:宅配便のお兄さんそこ代わってほしい。

持久力と瞬発力を兼ね備えた実用的な筋肉の育て方

この記事は 筋肉 Advent Calendar 2016 - Qiita 17日目の記事です。

1.はじめに

エンジニアにとって筋肉は非常に重要です。曰く「筋肉はすべてを解決してくれる」と。

しかし、筋肉もただつけているだけではウドの大木、無用の長物です。筋肉があるのにそれを使わないのはもったいないというほかありません*1

エンジニアにとって必要な素質に、持久力と瞬発力があります*2。 粘り強くバグと戦い、突発的な外乱要因でも強くまっすぐ立ち続ける持久力、そして困難を鋭く解決する瞬発力は常日頃の鍛錬があってこそ。そしてそれを体全体でバランス良く備えることが重要です。 そこで、今日は持久力と瞬発力を兼ね備えた実用的な筋肉の育て方を紹介します。

2.持久力と瞬発力を必要とする競技を参考にトレーニングを考える

持久力と瞬発力を鍛えるには、それらを必要とする競技での鍛え方にならうのが近道です。 ぱっと想像してみると、水泳・柔道・体操・自転車などいくつかの競技が思い浮かびます。 このなかで、常に外からの力に耐え、いざという時にスッと120%の力を出し、体全体をつかう競技、それは器械体操です。もしかすると、柔道のような格闘技系の競技にも通ずるトレーニングがあるかもしれませんが、筆者自身が器械体操を経験しているので、この記事でも器械体操流の筋トレ方法を述べます。

一旦、ここで器械体操(体操競技)について少し解説します。器械体操とは、男子6種目(ゆか・鞍馬・吊り輪跳馬・平行棒・鉄棒)と女子4種目(跳馬段違い平行棒平均台・ゆか)で各選手が演技を実施し、それぞれの点数の合計を競う競技です。器械体操の点数と言えば以前は10点満点でしたが、現在は上限がありません。採点方法は概ね、実施する演技の出来栄え(Eスコア)と難易度(Dスコア)で決まり、出来栄えは10点からの減点方式、難易度は加点方式です。フィギュアスケートの採点方法に近い部分がありますすね。種目によって多少の違いはありますが、腕や足を不必要に曲げない、着地が乱れない、演技の流れを止めない、動作を止めるときは2秒以上の静止をする、といったことが出来栄えの点数に影響し、実施する技の難しさが難易度の点数に影響します。難易度の高い技を数多く実施すればその分の加点が得られますが、その分実施が難しくなり、少しのミスで出来栄えが損なわれるリスクがある、というのがミソです。

器械体操の選手はどの選手を見ても筋肉隆々ですが、無駄な筋肉はなく、必要最低限の筋肉がついています。選手の筋肉でもっとも重要なのは、自重を支えたり外からかかる力に耐えるための体幹部分の筋肉です。選手のトレーニングには、ジムにあるような器具をつかわないトレーニング、器具をつかったトレーニングそれぞれメニューがあります。この記事では、器具を使わない基礎トレーニングを中心に述べ、番外編として器具を使ったトレーニングにも触れます。

3.腕から肩にかけての鍛え方

器械体操では、肩が重要な役割を担っています。さまざまな技の根幹をなす姿勢に倒立があり、この倒立を美しく持続するために肩を使います。倒立というと腕の力をつかうもののイメージがあると思いますが、実際には肩でバランスをうまくとって*3、肩に体重をのせるようにします*4

肩に体重をのせバランスの取れた倒立をするには、もう一つ重要な姿勢のとり方があります。よく「胸をつる*5」とか「胸をふくむ」といった表現をしますが、胸の前に少し空間を作るように引くことを言います。柔道などの格闘技で構えたときの形ということもできるかもしれません。これをいかにキープし続けるかがポイントで、腕から肩にかけてのトレーニングも基本はこの姿勢を維持することを念頭に置いて実施します*6

3-1.腕立て伏せによるトレーニング

先ほどの「胸をつる」姿勢をとるため、脇はつねにしめて腕を曲げ伸ばしします。手の位置は「肩の真下」「肩の真下より外側」「肩の真下より内側でほぼ重ねる」の3パターンです。 筆者が高校生のときの部活でのメニューは「30回の腕立て→30秒伏せる→20回の腕立て→20秒伏せる→10回の腕立て→10秒伏せる」を1セット、練習前のアップに組み込んでいました。

3-2.倒立によるトレーニング

倒立によるトレーニングにはいくつかのパターンがあります。ここでは2つ紹介します。

ひとつは倒立しながら腕を曲げ伸ばしを行うトレーニングです。 壁に腹を向け、手を壁から少し離した状態で倒立をします。足先を壁につけたらすこし腕を曲げ、そこから腕を伸ばしきるまでに足を自分の真上に移動させ、倒立の姿勢で2秒静止します。その後また足を壁につけ、倒立の姿勢へ戻す、を繰り返すトレーニングです。慣れると壁なしで実施することもできます。

このトレーニングでも、脇はしっかりしめ、胸をつる姿勢をキープします。

もうひとつは、倒立しながら歩行するトレーニングです。 倒立の姿勢が安定してきてから実施しましょう。文字通り、腕を足のように動かして倒立しながら歩きます。慣れると10mや20m歩くこともできます。

4.腹筋・背筋の鍛え方

腹筋・背筋ともに姿勢維持には欠かせませんが、器械体操においては特に宙返りなど体を回転させる力を生むためにも頻繁に使います。姿勢維持には持続力が求められますが、体を回転させるにはコンマ数秒の一瞬のうちにパワーを発揮する必要があります*7

4-1.瞬発力のためのトレーニング

瞬発力のための腹筋のトレーニングはいわゆる V 字腹筋です。背筋に応用することも出来ます。 筆者が高校生のときの部活でのメニューは「30回 V 時腹筋→30秒姿勢を固定→20回 V 時腹筋→20秒姿勢を固定→10回 V 時腹筋→10秒姿勢を固定」を1セット、腹筋と背筋、側筋*8それぞれ練習前のアップに組み込んでいました。姿勢を固定するとは、上体と両足を少し床から浮かせたところで止め続けることを言います。

4-2.姿勢維持のためのトレーニング

宙返りを始めとして体を回転させるとき、腹筋・背筋を姿勢維持につかいます。体が回転しているときに姿勢維持ができないと、回転力が失われたり、最悪回転が止まってしまいます*9

姿勢を維持するには、トレーニングの段階でその姿勢を覚えこめるよう、実際の技の実施にちかい姿勢でトレーニングをすることが大切です。また、演技のなかで体の動きを止めるときには、2秒間の静止が求められるため、できるだけ長く同じ姿勢を続けるトレーニングをすると効果的です。

具体的なトレーニング方法としては腹筋・背筋・側筋ともに、上体と両足を少し浮かせた状態で体を固定し、その状態でシーソー(あるいはゆりかご)のように体を腰付近を中心に動かします。このとき腕はまっすぐ頭の上に伸ばすようにしたり、腹筋・背筋の前に手を置くようにするなどします。V 字腹筋等のトレーニングに慣れてきたら挑戦してみましょう。

5.足腰の鍛え方

器械体操の演技では、すべての種目で着地をとることになります。着地はかならず足を使うので、跳馬や鉄棒のように猛烈な勢いのついた体をピタリと止められるよう、こらえる力が求められます。仮に着地をとりそこねてバランスを崩したとしても、一歩うごくだけに収めるなど、ひたすらこらえる力が求められます。 特に 6 種目のなかでも、ゆかはかなり足を使う種目です。着地も多いですが、宙返りやバク転を連続して実施するので、ジャンプ時の反応の良さも大切です。

5-1.ランニングによる基礎トレーニング

特別難しいことはしません。基礎トレーニングとしてはランニングを活用します。 30分ほどのランニングをすると程よく体があたたまりますが、トレーニングとしては緩急をつけた走り方が重要です。周回コースをランニングする場合であれば、ある一箇所から30〜50mを全力ダッシュで走りつつ、他は自分のペースを守って走る、というメニューを組むとよいでしょう。

5-2.ジャンプ力のトレーニング

ジャンプ力をつけるにはいくつかの方法があります。スクワットがもっとも知られたトレーニングだと思いますが、膝や腰を痛めやすいので正しい姿勢を意識してゆっくりやりましょう。慣れてきたらウェイトを背負うなどしてスクワットをしてみると良いです*10

器械体操の場合、連続してジャンプをするためのトレーニングもあります。と言っても特別器具を使うわけでもなく、そのまま連続ジャンプをするだけです。真上に飛ぶことを心がけつつ、着地をしたら素早く次のジャンプにうつります。ジャンプをする時、両腕を肩の高さまで振り上げると、宙返りの練習っぽくなります。

6.道具を使った鍛え方

身近にある道具を使ってトレーニングをすることも出来ます。ジムにあるような器具を使わなくてもしっかりトレーニングできるのでおすすめです。

6-1.ゴムチューブを使ったトレーニング

ゴムの弾力性を用いて腕や肩を鍛えるトレーニングです。使用するゴムチューブは自転車の破れたチューブを組み合わせたものでもよいですし、スポーツ用品店で売られているゴムチューブでもよいです。 チューブは何かに巻きつけて両手に持って使います。ゴムもそこそこ強いものをつかうので、巻きつけるものは電柱や公園の鉄棒の支柱など、しっかり固定されているものを選びましょう。

チューブの使い方はおおむね 2 種類で、体を巻きつけているものに向けるかその逆かになります。どちらの場合でも、腕は真っすぐ伸ばして動かします。

腕の動かし方は、1.)両腕を脇を締めた状態で前後に動かす、2.)両腕を左右にひらき前後に動かす、3.)両腕を真上に伸ばして前後に動かす、の 3 種類あります。ゴムチューブがすこし伸びている位置を基準に、巻きつけているものに体を向ける場合は腕を引き、背を向けている場合は腕を押すように動かすと効果があります。腕を押すように動かすときは、押し切ったところで胸を開かずつる姿勢になることを意識するとよりよいトレーニングになります。

6-2.プッシュアップバーを使ったトレーニング

器械体操の技に「脚前挙」というものがあります。長座の姿勢で体を腕で支える技です。これをプッシュアップバーを掴みながらじっと静止するだけでもよく効きます。

6-3.ダンベルを使ったトレーニング

側筋のトレーニングにダンベルが便利です。手順としては、1)片手にダンベルを持ち、2)もう片方の手を頭の後ろに添えて、3)ダンベルをもっている方に体を倒したら、4)ゆっくりもとの姿勢に戻す、というものです。腰の位置は常に一定にし、ダンベルが体に当たらないようにするとよく効きます。

あるいは、両手にダンベルを持ち下におろした状態から、腕を左右に開いたり、肩の高さまで前方に突き出したりというトレーニングもあります。

7.番外編:器具を使った鍛え方

なかなか身近なところに器械体操の器具を置いている体育館はありませんが、もし器具に触れる機会があったら是非試してみてください。

7-1.平均台でのトレーニング

平均台は女子選手の種目ですが、トレーニングとしては男女問わず使える器具です。

足を両側に開き、平均台に両手をついて腰を浮かせた状態で平均台を移動します。胸をつる姿勢を維持し続けないとすぐに辛くなってしまいます。できるだけ足を水平に保つときれいな姿勢になります。

7-2.平行棒でのトレーニング

平行棒は、両脇に 2 本の棒を抱え込むようにぶら下がる姿勢と、両腕を真っすぐ伸ばして体を支える姿勢の 2 種類の体勢のとりかたがあります。

両脇に平行棒を抱え込む姿勢は、自然と上腕の下に棒が当たります*11。物理的にどうしても脇が開きがちになるので、脇が開いた状態からグッと閉まった状態にすることを繰り返すと、それだけでトレーニングになります。

両腕を真っすぐ伸ばして体を支える姿勢の場合、肩を中心に体を前後に振り子のように振る動きができます。これをスイングといいますが、スイングしながら腕を曲げ伸ばしするトレーニングがあります。ちょうど体が床に対し垂直になるところで腕を曲げきり、前後に両足が出るところで腕を伸ばしきる要領です。このトレーニングでも、胸を開くような姿勢になるとただひたすら辛いだけなので、胸をつる姿勢を意識します。

7-3.吊り輪でのトレーニング

吊り輪は器械体操の種目の中でもほぼ唯一と言ってもいいほど不安定な種目です。2 つの輪が天井からぶら下がっている様は電車の吊革にも似ていますが、吊革よりも動きに自由度があり、本当にブラブラとぶら下がっているだけなので、吊り輪をつかった力技をする場合は、輪が自由に動き回らないよう押さえつけ安定させる力が求められます*12

吊り輪で脚前挙がピタリと止められるようにするだけでも、かなりのトレーニングになります。力がついてきたら、倒立をしてみるとよいでしょう。倒立がこわいときは、輪をぶら下げているケーブルに足を絡めると多少安定します。

8.おわりに

器械体操流のトレーニングで体幹を鍛えることで、持久力と瞬発力を兼ね備えた実用的な筋肉が鍛えられます。 器械体操の選手の筋肉はみなムキムキマッチョを絵に描いたような感じに見えますが、実はジムにある器具をガンガン使って鍛えたものではなく、自分の体を支え、あらゆる方向からかかる力にたえて制御するために特化したものです。 ですから、過度なトレーニングは逆効果なうえ、体を壊してしまうこともあります。ほどよく筋肉をつけ*13、強い体を作りましょう。

もちろん、筋トレのあとはしっかりストレッチをし、プロテインの摂取を忘れないようにしましょう。

*1:個人の感想です

*2:個人の感想です

*3:私は肩の柔軟性が最悪で、冗談抜きに肩が硬かったので苦労しました

*4:人間が立ったとき、重心が骨盤のあたりにくるというのを逆さまに考える、というイメージが近いでしょうか。

*5:筋肉が痙攣することではありません。

*6:ガンバ! Fly high という漫画で「胸で回転する宙返り」というものが出てきますが、胸で回転する宙返りは「胸をつる」姿勢を身につけるとできるようになります。

*7:体を縮めて体操座りをするように抱え込む姿勢の宙返りを後ろ向きに実施する時には、ジャンプ直後に足を素早く胸の前まで引き上げるために腹筋の瞬発力を使います。

*8:筋肉の名前としては腹斜筋。おなかの横にある筋肉。

*9:筆者も経験がありますが、回転が止まると一瞬世界が止まって見え、気がつくと既に体は落下し始めていて、1秒もしないうちに床に叩きつけられます。

*10:ただしやはり膝や腰を壊しやすいので重すぎるウェイトトレーニングはやめましょう。

*11:当たる部分に体重がかかるので、慣れても痛い。トップ選手は平行棒のうえで宙返りをして腕で受けるので尋常じゃなく痛そう。

*12:初めて吊り輪を体験したときは、力不足で脚前挙をしただけで輪がブルブルと動いてまったく静止できませんでした。

*13:いわゆる細マッチョくらいの付け方でもOK。

田中屋で仕入れたクラフトビールを飲んだよ

Beer Advent Calendar 2016 - Adventarの10日目です。 今回は、目白にある田中屋という酒屋さんで仕入れたクラフトビールを飲む会を催したので、そのレポートをスッとまとめてみようと思います。 一通り飲み終わっていい気分なので適当なことを書いているかもしれません。

宮崎ひでじスタウト

f:id:KeithYokoma:20161211001754j:plain

スタウトというとクリーミーな味わいがあるように思いますが、こちらはクリーミーというよりもスッキリしています。スタウトビールのような水な気がするくらいの軽さだと思います。 うまいぞ。

Prairie Artisan Ales

f:id:KeithYokoma:20161211001801j:plain

独特な風味があります。デリリウムに近い気がしますが、よりフルーティーな感じがしました。 うまいぞ。

Birra 1608

f:id:KeithYokoma:20161211001706j:plain

イタリアのビールです。わりと珍しいようで、Untappdにも情報がありません。グッとくる感じが好きです。 うまいぞ。

Auris 19

f:id:KeithYokoma:20161211001712j:plain

ドイツビールです。しっかりした味ですがクセは強くなく、ビールの苦味がニガテな人でもとっつきやすい気がします。 うまいぞ。

Owa Christmas

f:id:KeithYokoma:20161211001725j:plain

クリスマスビールについては前日の magie_pooh さんが解説しています。 うまいぞ。

デリリウム

f:id:KeithYokoma:20161211001732j:plain

個人的にはおばあちゃんちの匂いのような気もしなくはないですが、とにかくそういう強烈に独特な匂いがあります。味も少し際立っています。ピンクの象さんを見る前に飲み終えてしまいました。 うまいぞ。

IPA

f:id:KeithYokoma:20161211001741j:plain

THE IPA。これぞ IPA という感じの匂いと味です。IPA と書いてありますがどこが作っているのかを忘れてしまって説明ができません。 うまいぞ。

まとめ

田中屋という酒屋さんは初めて行きました。すごいですね、あんなにクラフトビールが大量にあるところは他に知りません。 P.S. クラフトビールを買うついでに、イエーガーマイスターを買いました。

怠惰なる勤勉とエンジニア

この記事は Re:ゼロから始める Advent Calendar 2016 - Adventar 10日目の記事です。若干のネタバレ要素を含んでいますのでご注意ください。

怠惰ですね…

https://i.ytimg.com/vi/owyvwT0paiQ/maxresdefault.jpg

「あなた…怠惰…ですね……」といえば、ペテルギウス・ロマネコンティのセリフで、かなりの頻度で口にしています。 ペテルギウスについての詳しい考察は脳が震える(仮) - BlueberryStreamにありますが、このペテルギウス、怠惰怠惰と言う一方で勤勉さも持ち合わせています。 「愛にぃ…愛に報いなければぁ…」というセリフが象徴的ですが、魔女教信徒としての勤勉さは、彼の言動全てにおいて感じられることでしょう。

プログラマの美徳

http://tama-yura.jp/animetory/img/entries/7d22f228e7f4b94da61097c418823bcb121cdf69/578c4666a75c4/pc/2.jpg

ところで、怠惰といえば七つの大罪のひとつとしてよく知られていますが、プログラマの美徳のうちのひとつでもあります。 プログラマの美徳には三つあり、それぞれ「怠惰」「傲慢」「短気」です。

このうちの「怠惰」とはまさしく、ペテルギウスの「怠惰」と「勤勉」の二律背反な性質のことを言うのだと(個人的に)思います。 プログラマやエンジニアと言った職種は、技術をもって製品やサービスといったものを作ります。 その過程において、何度も同じ作業を繰り返し行う無駄の排除や、誰もが同じ作業を滞りなく実行できるフレームワークの構築といった効率化は非常に重要です。 つまり、怠惰な姿勢とは、繰り返しの無駄にかかる労力を減らすことであり、その労力を減らすための仕組みやフレームワークを作ることに心血を注ぐことが怠惰ゆえの勤勉さと言えます。

翻ってペテルギウスの言動を見てみると、怠惰担当ではあるものの、魔女教信徒を束ねる上では一切の不純も許さない姿勢や抜かりなさは勤勉そのものです。 一切の不純も許さず、良くない兆候を見逃さずその場で解決(殴打)する短気さも、勤勉さに拍車をかけているようにも思います。

おわりに

あまりペテルギウス本人の考察はできませんでしたが、自分自身がエンジニアであるがゆえ、怠惰というとどうしても思い浮かべるプログラマの美徳についてサッと書いてみました。 ペテルギウスの怠惰や勤勉さは、単なる狂気ではないし、むしろ正気にこそ彼のような怠惰や勤勉さが必要なのではないかとすら思いました。

DroidKaigi 2017 のプロポーザルを出した話

今年も DroidKaigi 2017 Call for Speakers の季節がやってきました。 初回から運営に携わってきていますが、プロポーザルの方もやっていくぞ!という強い気持ちで案を出してみました。

何を話そうとしているのか

Android Auto にまつわる話をベースとして、プロセス間通信をする上で大事なことを話したいと思っています。Android Auto と言うとニッチな話ですが、仕組みを理解すると意外に身近な技術で作られていることが分かります。その身近な技術を使いこなすために必要なことをまとめられればと思います。

何を聞いてみたいのか

個人的には、「このフレームワークAPI・ライブラリを組み合わせてこんな面白いことが出来た!」みたいな、ハックな話を聞いてみたいと思っています。 アーキテクチャやプロセスの実践的な話も勿論聞いてみたいし、大事なことだと思っているのですが、こんなことも出来るんだ!というワクワク感のある話も聞いてみたいな、ということを思っています。

いつまでなのか

公式でのアナウンスの通り、11月1日に締め切りが設定されています。もう一週間しか無いぞ!

CollaboTips Vol.2 行ってきた

帰国後最初の勉強会ということで(本当は9月のpotatotipsが最初だったはずだけど…)、ブログまとめ枠で参加してきました。

collabotips.connpass.com

どうまとめたものか考えた結果、ザッとメモを取ったのをそのまま垂れ流そうかと思います。

続きを読む

dex.fm: Hacks in Drivemode というお題でポッドキャストにゲスト参加しました

dex.fm という Android をテーマにしたポッドキャストにゲスト参加し、会社のプロダクトで培われている技術について話をしました。

http://dex.fm/post/151298631133/10-hacks-in-drivemode
dex.fm

今回の話題は、WindowManager に View を書くということと、それに関連したアプリケーションのフレームワーク、省メモリ・省電力、プロセス間通信や複雑なモデルの構成、状態遷移についてです。

いくつか、補足として書いておきたいことがあったのでブログの記事にしておきます。

TransactionTooLargeException

AIDL などプロセス間通信を多用する際にはお目にかかる場面も出てくる例外です。その Javadoc によると、プロセス間通信で使用できるメモリは 1Mb と定められているようです。 この 1Mb というのは、一回の通信で使用できるメモリの上限ではなく、アプリケーションのプロセス全体に割り当てられる、全プロセス間通信で使用できるメモリの上限ということがポイントで、一回のプロセス間通信で巨大なデータをやり取りした場合だけでなく、小さなデータをやり取りする複数のプロセス間通信をドカッと一気にやったりした場合でも、小さなデータの総量が 1Mb を超えたら例外が飛んできます。

プロセス間通信でデータの交換に使う仕組みといえば Parcel です。Intent や Bundle のような、特段プロセス間通信ということを意識しない場所でも使われる Parcel ですので、Intent や Bundle に巨大なデータを詰めて他のアプリに送りつけるということをした場合でもやはり、TransactionTooLargeException が飛びますし、PackageManager でいろんなデータをクエリするときにもやはりデータ量が多すぎると例外が飛んでくるので、アプリの機能がそこそこ豊富になってくると見かけるようになると思います。

このような背景があるため、特に画像データの交換に関しては、出来得る限り Uri など文字情報になおして提供することが推奨となるわけです。

ちなみに、ポッドキャストでは Cursor にも言及しましたが、Cursor に関しては CursorWindowAllocationException というのが別にあるようで、TransactionTooLargeException とは違うものでした。いずれにせよ、あまり巨大なデータを持たせることはお行儀が良くないので、クエリの方法を変えるなどの対策が必要です。

Android Auto

音楽系のアプリがシステムと連携して、ロックスクリーンに再生コントロールを表示したり、アルバムアートを表示したり…ということを実現する API は、Android Auto の登場で随分スッキリと整理され、かつシステムとの連携だけにとどまらない汎用的なフレームワークになりました。どんな API になっているかについては、TechBooster から出ている「アンドロイドアカデミア」に詳しく書いてありますが、Android Auto に至るまでにもいくらかの変遷があります。

もともとは、ICS で導入された RemoteControlClient が最初に登場した音楽系アプリ向けの API です。実態としては、AIDL に基づいてロックスクリーンと音楽系アプリが連携するためにしくみになっています。音楽系アプリが RemoteControlClient を使って再生コントロールの状況や楽曲情報をロックスクリーンに渡すと、ロックスクリーンがいい感じに表示を更新してくれます。

その後 RemoteController という別のクラスが Kitkat で導入されました。これを使うのはシステムや音楽系アプリと連携したい他のアプリです。このクラスが登場するまでは、 RemoteControlClient が内部でやり取りしていた AIDL をパクって借りて来る必要があったのですが(ちなみにこの AIDL を借りてくる話は TechBooster から出ている「AZ異本」に詳しく書きました)、RemoteController を使えばそれをすることなく簡単に音楽系アプリと連携が取れるようになります。ただし少し癖があり、NotificationListenerService で使わないと動かないようです。

簡単にできるといいつつも微妙に使いづらかったり、Android Auto の仕組み上 Android システムではないアプリとの連携が必要な点(Android Auto は "Android Auto" という名前のアプリが中心になっている)があったりした上で、Android Auto の音楽系アプリ向けの API は整備されたんだなぁということが伺えます。 ポッドキャストでも言及したとおり、サポートライブラリにバックポートされているので、使おうと思えばこの仕組を ICS や JB などでも使うことができます。もちろん、音楽系アプリと連携したいアプリの両方が対応しないとダメなんですが。

ちなみに、NotificationListenerService が動いている最中に例外をはいて死ぬと、NotificationListenerService が復活しなくて(==システムの再バインドが走らなくなって)次に端末を再起動するまで通知が受け取れない、という事が稀によくあります。