Home > Latest topics

Latest topics 近況報告

たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。

萌えるふぉくす子さんだば子本制作プロジェクトの動向はもえじら組ブログで。

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

Page 5/237: « 1 2 3 4 5 6 7 8 9 »

会社に所属しながら書いた技術記事の原稿料収入の確定申告 - Mar 17, 2015

この業界、会社に所属しながら実名あるいはペンネームで技術誌に記事を執筆しているという人はそれなりにいると思います。自分も株式会社クリアコードに所属しながらシス管系女子を連載させていただいております。そういう人が確定申告をするときの話を自分の経験に基づいて書いてみます。

そもそも確定申告ってなんなん?つう話なんですけど、給与所得を得ている人間にとっては基本的に、収入源が会社の収入だけだし、年末調整の時期が近づくと「保険の支払いの書類とかもってきてやー」とアナウンスされてそれを持ってって会社に提出すると事務の方がイイ感じに計算して諸々処理してくれるので、あんまり関係ない話のような気がしています。問題は、そういう風に会社が把握してくれてない部分でお金の出入りがあった場合についてです。冒頭に書いたような技術記事を個人で書いている人間の場合、給与所得とは別に収入があるということになるので、その分の所得税やら何やらを納めないといけないのです。そこで出てくるのが確定申告。

聞いた所によると、給与所得以外で年間20万円以上の収入があると確定申告せんといかんのだそうです。僕の場合は原稿料×ページ数の額が20万円を超えていたので、しないといけなかったのですが、ちゃんと理解してなくて今までスルーしてしまっていました。が、このままではいかんと思ってちゃんとやることにしました。ほったらかしにしてると追徴課税とかシャレにならないことになるかもと思うと怖かったからというのもあります。それに、「シス管系女子」連載がついに本として発売されました、なんて大手を振って宣伝し始めたら、「おうおうおめえさんずいぶん羽振りいいみてえじゃねえか? 所得隠してんじゃねえのか? あぁん?」なんて厳しく追及されるんじゃないか、みたいな。

具体的なやり方についてなんですが、世の中には確定申告について解説した本が山ほどありますし、税務署に行って「確定申告したいんですけど……」と言ったら懇切丁寧に教えてもらえるので、そういうのでちゃんと調べるのがいいと思います(が、僕の場合は税務署に話だけ聞きに行ってもピンと来なくてまるっきり身に付かなかったのでした……)。僕は実際には、以下のような手順でやりました。

申告書の作成は以下の通り。

  1. 必要書類を揃える。
    • 会社の源泉徴収票
    • 原稿料の支払い調書
    • 原稿作成に必要で購入した物のレシートとか領収証とか
    • 国境なき医師団等、個人的にした寄付の領収証
  2. e-Taxのページを開いて、確定申告書の作成初めて確定申告される方→「確定申告書作成コーナー」と辿って、「申告書・決算書・収支内訳書等 作成開始」というボタン状のリンクをクリック。
  3. 別ウィンドウ(タブ)で確定申告書作成のためのページが開かれる。提出方法の選択画面になるが、e-Taxを利用するにはICカードリーダー・ライターと電子署名のための証明書が必要になるので、そちらは何も手続きをしていないと利用できない。なので「書面提出」を選択する。
  4. 利用環境のチェックのページの次に、作成する申告書の種類を選ぶページが表示される。青色申告というのをやるには事前の申請が必要だけれどもそんな物はやっていないので、「平成N年分 所得税及び復興特別所得税の確定申告書を作成」というリンクをクリックする。
    • 昨年よりも前の年の分の申告書を作る時は、下の方の「平成N年分の申告書等を作成する」というリンクを辿る。
  5. 「収入が給与1か所のみ(年末調整済み)の方」「左記に該当しない方」「質問に答えて作成」という3つの選択肢が表示されるので、「質問に答えて作成」を選択する。
  6. ウィザード形式で色々聞かれるので、情報を埋めていく。
  7. 最後に印刷用のPDFを保存する画面が出るので、PDFを保存・印刷する。また、入力中のデータを保存できるので、それも保存する。
  8. 3〜7を繰り返して、必要な年の分の申告書を全部作成する。
  9. できた書類を持って、税務署または確定申告に詳しい人に相談して、間違っている所を教えてもらう。
  10. 駄目出しを貰ったら、先の「確定申告書作成コーナー」で「作成再開」というリンクを辿って、7で保存したデータファイルを読み込ませる。するとウィザードの画面に戻るので、訂正箇所を直す。
  11. 7〜10を、不安がなくなるまで繰り返す(面倒なので1回で終わらせましょう……)。

ここでちょっと「源泉徴収」について説明しておく。原稿料を貰う時に、「1ページあたりいくらです」と言われた金額よりもちょっと少ない金額が振り込まれていて、送られてきた支払い調書を見たら「源泉徴収分としていくら引きました」みたいに書いてあると思うけど、これはどういうことなのかという話。

所得税は稼いだお金の額に応じて課されるんだけど、総額に対して何パーセントという形ではなくて、経費がいくらかかりましたとか、医療費にこれくらいかかりましたとか、控除分とされる金額をマイナスした額に対して課税される。でも、そういうのって1年が終わってみるまで結局いくらだったのか分からない。かといって、最後にまとめて税金を払いますということにすると、極端な話、税金を1円も払わないでバックレてしまえる。なのでそうならないように、雇用者や原稿料を支払う側があらかじめ何パーセント分かを仮の税金として引いて、先に税務署に納めておく、これが源泉徴収。その後、1年の最後の最後に諸々の収入や支出が確定した段階で改めて「本当に納めないといけなかった税金は一体いくらなんだ?」というのを計算する、これが年末調整とか確定申告とかの作業なんですね。

それで、源泉徴収されてた分が本来納めるべき税金より多すぎたなら差額が返ってくる(これがいわゆる還付金)し、逆に、本来納めるべき税金より少ない額しか源泉徴収されてなかったなら差額を払わないといけない。この分はその年の期限までに払えばその金額で済むけど、滞納してると、ほったらかせばほったらかすほど利子みたいなものが膨らんでしまう。そういう訳なので、皆さん毎年ちゃんと確定申告しといた方がいいですよ、という話になるのです。

申告書ができたら提出と所得税の納付です。これは以下の通りの手順でやりました。

  1. 印刷された物の中に資料の貼り付け用シートというのがあるので、給与所得の源泉徴収票と、寄付金の領収証を糊付けする。
    • 副収入の支払い調書や、副収入の必要経費を証明する領収証・レシートは、ここには貼り付けないでいいです。これらは提出書類の要件には含まれません。ただし、確定申告書の提出後に税務署が「これ収入少なすぎ。これ経費使いすぎ。おかしい。脱税の恐れあり。」みたいに怪しんだら、申告書に書いた内容は本当に正しいですよという事を証明するためにこれらの書類が必要になってくるので、捨てないで取っておきましょう。
  2. 最寄りの税務署に行く。
  3. 税務署内に確定申告書の提出コーナーがあるので、書類を提出する。
  4. 形式的なチェックの後、提出分・控え分の両方にハンコをもらえたら、提出分はこの時点で回収されるので控え分だけ受け取る。
  5. 税務署内に所得税の納付コーナーがあるので、そこに行って「納付したいんですけど」と言って申告書の控えを見せる。
  6. 職員の方の指示に従ってお金を払って領収証を貰う。

書類の提出も所得税の納付も、郵送とか振り込みとか引き落としとかで済ませられるみたいなんですけど、僕は「ほんとにこれでええんか? ええのんか?」と不安が大きかったので、駄目だったらその場で指摘してもらえる税務署窓口での直接提出・直接納付にしました。

以上のようなやり方でやった結果、僕の場合は平成23年(2011年)は所得税の納税の必要ありでだいたい1割くらいの延滞料込みの納税、平成24年(2012年)は納税も還付も無し、平成25年(2013年)はぶっ壊れた作業用PCの新調やらCintiq Companion Hybridの導入やらで必要経費が多かったので還付、平成26年(2014年)は納税の必要ありだけど割り増し無しの額面通り、という感じでした。

とりあえず、分からないことは税務署の人に聞けば教えてもらえるので、確定申告がどうこうと世の中が忙しくなってる時以外の時期に、税務署まで足を運んでみるといいと思います。税務署怖くないよ。バックレるつもりの無い真面目な納税者には優しいよ。

シス管系女子で取り扱っている解説の妥当性、危険性について - Mar 15, 2015

シス管系女子(正確には「#!シス管系女子 Season3」)の現在発売されている号の日経Linux 2015年4月号掲載分について、hostnameコマンドは与えられた引数でホスト名を設定する物なので、ホスト名を取得するためだけにhostnameコマンドを使うのは、誤操作で問題が起こり得るから危険だという指摘がありました。

別の話として、実際に指摘を見かけたことはまだ無かった気がしますが、過去の回でcrontab -eを紹介するにあたって色々調べ直していた時に、crontab -eは、確認なしでの削除であるcrontab -rとミスタイプしやすいから使ってはいけないという話も見かけました。

どちらの事例も、「その機能が正常に使われている限りにおいては問題ないが、ヒューマンエラーが発生した時のリスクが大きいので、そもそもその機能を使うべきではない」という、安全側に倒した考え方であるように自分は受け取りました。運用という側面から「シス管」を考えた場合には、尤もな指摘だと言えると思います。

hostnameについては、なぜ$HOSTNAMEを参照するようにしなかったのかというと、以下のような所が理由となります。

  • 自分がその方法で覚えてしまっていた。
  • ホスト名を変えるためにhostnameコマンドを使う、ということが普段無いために、そのリスクに無頓着だった。(hostnameコマンドによるホスト名再設定は、再起動したら状態が戻ってしまうことから「使えねー」「役に立たねー」と思ってしまい、それ以後存在自体をすっかり忘れ去ってしまっていた)
  • なんとなく、環境変数の値は誰かが書き換えうるものという認識があり、コマンドの出力を見た方が安定した結果を得られそうに思った。(環境変数でもコマンドの結果でも同じ情報が得られるのであれば、コマンドの方を使うほうが安心、という認識がある)

crontab -eについては、「そんなん間違えへんやろ」と思っている部分が正直大きいです。が、自分がそう言えるのはcrontab -eというコマンド列を日常的に頻繁に利用するわけではないからかもしれないとも思っています。入力する回数が多いとcrontab -rというtypoの出現頻度が現実に問題となり得るレベルにまで高くなってくるものなのだ、と考えると、管理運用を業務とする人ほど敏感になるというのはありうるかも、と思います。

自分がこの連載で紹介する内容を考える時の判断基準としては、

  • オプションの指定が不要なやり方と必要なやり方の両方があって、結果が同じなのであれば、オプションの指定が不要なやり方の方を紹介する。
  • 簡単なやり方と難しいやり方の両方があって、結果が同じなのであれば、簡単なやり方の方を紹介する。
  • 設定が不要なやり方と設定が必要なやり方の両方があって、結果が同じなのであれば、設定が不要なやり方の方を紹介する。(screenではなくtmuxを紹介したのはこれが最大の理由です)
  • 確実なやり方と不確実なやり方の両方があって、結果が同じなのであれば、確実なやり方の方を紹介する。
  • 安全なやり方とリスキーなやり方の両方があって、結果が同じなのであれば、安全なやり方の方を紹介する。

といったいくつかの基準があるのですが、「簡単だけど危険」「安全だけど難しい」のように判断が難しい時にどうするかというのは悩み所です。自分の中で決着が付かなければそもそもその話題は紹介せずに置いておくということもあります。が、多くの場合はcrontab -eのように、リスクを過小評価して利便性の方に舵を切ってしまいがちな気はしています。

ただ、可能な限り「簡単で、設定いらずで、確実で、安全で」という風に懸念点の少ないやり方を紹介していきたいという思いはあります。連載時の内容についての指摘は再録のタイミングで直せるので、全面的な改稿となると無理ですけども、セリフ回しや1コマの描き直し程度で乗り切れそうないい改善提案がもしあれば、Twitterアカウントへのリプライ等で情報を提供していただけると嬉しいです。

  • 今の所、Season2でやったSSHの公開鍵の登録についてssh-copy-idを使ったほうがラクという指摘は頂いており、これは何かの機会に反映したいと思っています。
  • このエントリに書いているhostnameの事については、既にuname -nhostname -sなどの別案を頂いていますが、hostnameコマンド一発で済ませられるやり方に比べると若干面倒さが増す感があるので、「まんがでわかるLinux シス管系女子」での追加コンテンツのような形で「より安全にやりたいならこういうやり方もある」という補足情報を載せる方向で行くのがいいかなあ、と思っています。

総じて、この連載については「初級者レベルの人がちょっとステップアップする」「文字の説明だけ見ても分かりにくい事を、ビジュアライズして説明する」という所にテーマを設定しているので、安全性最重視の解説にはしにくいと思っており、そこの所は本誌の他の記事の方々に期待しております(丸投げ)。

シス管系女子の刊行物の関係まとめ - Mar 07, 2015

「シス管系女子」関係の刊行物が色々あって状況がカオスなので、図でまとめてみました。

シス管系女子の刊行物の関係まとめの図

「まとめ読み」は、日経Linux本誌の付録としてだいたい年に1回ペースで制作されている物です。「まんがでわかるLinux シス管系女子」は、「シス管系女子」第1話から第13話、「#!シス管系女子」第1話(通算第14話)から第11話(通算24話)に加えて描き下ろしを収録した物となっており、作者の主観的にはこれが「初の単行本」という認識です。

各話は「まとめ読み」に再録する段階で一部修正していて、「まんがでわかるLinux」再録の段階でもまた修正しています。そこにさらに描き下ろしが加わっているので、今お買い求め頂ける物ではまんがでわかるLinux シス管系女子が最も内容が充実していておすすめです。「#!シス管系女子 Season2」については、「まんがでわかるLinux」の売れ行きが良ければ、今連載中の「#!シス管系女子 Season3」と合わせてまた本になるんじゃないかなあ……と思います。

Firefox 41以降での、アドオンの署名義務化の影響について - Feb 12, 2015

具体的にアドオンを作る・使う側の人間はどう対処すれば良いのか、というのを自分の理解でまとめてみる。判断のソースは原文のコメント欄での質問と回答で示されている情報です。

AMOでFull Review済みのアドオン
作業フローは変わらない。公開されるファイルが勝手に署名されるようになるだけ。
AMOでPreliminary Review済みのアドオン
作業フローは変わらない。公開されるファイルが勝手に署名されるようになるだけ。
既存アドオンの勝手翻訳版、既存アドオンの勝手改造版などで、公表している・公表しても問題ない物
AMOにアカウントを作り、アドオンのIDを元の物から変更した(アドオンマネージャ上で明確に別のアドオンとして認識できるようにした)上で、XPIをアップロードして、自動検証を(場合によってはそれに加えてPreliminary Review相当の目視レビューも)受け、署名されたXPIを入手する。
AMOに掲載していない自作のアドオンで、公表している・公表しても問題ない物
AMOにアカウントを作り、XPIをアップロードして、自動検証を(場合によってはそれに加えてPreliminary Review相当の目視レビューも)受け、署名されたXPIを入手する。
AMOに掲載していない自作または改造版のアドオンで、公表できない物
現在公表されている範囲の情報では、対処法無し。署名を要求しないようにするオプションも無い。リリース版Firefoxの利用を諦め、開発者向けのノーブランド版、Nightly、あるいは独自ビルド版を使うしかない。
AMOに掲載していない自作または改造版のアドオンで、Preliminary Reviewを通過できない物
現在公表されている範囲の情報では、対処法無し。署名を要求しないようにするオプションも無い。リリース版Firefoxの利用を諦め、開発者向けのノーブランド版、Nightly、あるいは独自ビルド版を使うしかない。
自己署名証明書やベリサイン等で購入したオブジェクト署名証明書を使って署名して頒布しているアドオン
Mozillaの証明書による署名以外は許可されなくなると明言されており、それ以外の方法での署名は無意味になる。取れる対処方法は、公表できるアドオンかどうかによって変わる(上記参照)。
Thunderbird用のアドオン
作業フローは変わらない。Thunderbirdではアドオンの署名は要求されないままとなるので、勝手改造アドオン等も変わりなく使える。(ただし、今後もずっとそうであるかは不明。)
distribution/bundles/以下にインストールしたアドオン
この方法でインストールされたアドオンはアドオンマネージャの管理下に置かれないため、短期的には影響は無いようだが、そもそもこの機能は将来のバージョンで削除する意向だとのこと。よって、この方法でカスタマイズを適用している場合はアドオンとしてのインストールに移行する必要があり、公表できるアドオンかどうかによって対応が変わってくる(詳細は上記を参照)。

現在AMOでのアドオンの公開に際してはPreliminary ReviewとFull Reviewの2段階のレビューがあり、Preliminary Reviewを通過できればサイト上に掲載され、その上でさらにFull Reviewを通過できれば検索結果にヒットしたり一覧に表示されたりするようになる、という感じなんだけど、Preliminary Reviewではセキュリティ上の重大な脅威が無いならとりあえずは通過できる事が多い。しかし、Firefoxのセキュリティ機構をバイパスするためのアドオン、例えばThunderbirdでメールに添付されたWindowsショートカットを直接実行できるようにするアドオンのような物は、どれだけ多くのユーザが切望していても、例え顧客企業で必要とされていても、レビューを通過できない。今回の件の記事のコメント欄でも、署名チェック機構をバイパスするようなアドオンは審査を通過できない(=XPIに署名して貰えない=インストールは許可されない)という事が明言されている

「公表できない物」っていうのは、例えばクリティカルな情報を含んでいるとか、組織内利用専用とか、そういうこと。なぜ公表できるかどうかが焦点になるのかというと、AMOのサイト上で一般向けに公開されないとしても、インターネット上のサービスにパスワードもかけずにファイルをアップロードし、どこの誰かも分からないボランティアのスタッフに自由にソースコードを見られる、という事を許容できるかどうかという話になるから。

企業などの組織内で使うためのアドオンについては「第3の選択肢」を用意するという事になっているようだけれども、具体的な詳細が公表されていないので、現状では最悪のケースも想定しておいた方がいいんじゃないかって気がする。例えば「特別なパートナーシップ契約を結んで、非公開でレビューを受けられるようにする」みたいな話だったとして、Mozillaにとって特別なパートナーシップ契約を結ぶだけのメリットを感じられない規模の組織は、詰んでしまうことになるので。

正道はやはり、クリティカルな情報を含まなくていい形で公開できるアドオンとして開発しておき、クリティカルな情報はMCDなり何なりで後から反映できるようにしておく、という事だとは思うんですけどね。

率直な感想としては、「ウチの製品をユーザがどう使えるかはウチが決めますよ、使い手のあなたたちに使い方を決める権利はありませんよ」「ウチの製品の上で使いたいならそれなりの質の物じゃないと許しませんよ」って言ってるような印象で、tivoizationと似た感じのニオイを感じられてまったくウンザリする話だ、って感じではあります(現状でも、Firefox OS向けのアプリは既にそうだったと記憶してる)。ある程度普及して、「Mozillaという組織の名前を冠した信頼と実績のFirefoxというブランド」が一定の価値を持ち、自分がやろうとしている事のリスクもよくわからないままに致命的な操作をしてしまいかねない層のユーザの数が無視できないレベルに達しており、そしてそれを狙った悪質な攻撃が増加している、という前提に基づくと、やむを得ない判断だと理解はできるんですが。だから怨むべきは、Mozillaではなく、面白半分だったり悪意だったりで人に迷惑かけてる黒アドオン作者の方。

まあ、Firefoxの名前とブランドロゴを外したビルドを使う分には関知しないという抜け道は残してくれているようなので、そこがMozillaの良心だと思ってます。

「シス管系女子」の本のおまけについて - Feb 09, 2015

シス管系女子の本の宣伝も兼ねて。

まんがでわかるLinux シス管系女子 (日経BPパソコンベストムック)

日経BP社 (2015-02-18)
売り上げランキング: 10,129

本の企画が動き出す前、本誌付録の「まとめ読み」を実際に見てみたときから、本編だけだとギュウギュウ詰め感あって読んでて辛いと思ったので、敢えて各話間に必ずおまけという名の緩衝材を入れることは僕の中でずっと決めてた。一般的な漫画単行本でも各話間におまけがあるのでそれを真似た、とか、ページ数が少ないのをごまかすための水増し、とか、そういう性質も無いとは言えないけど、それよりはやはり、読みやすさへの配慮という切実な動機が大きい。

おまけを入れることを提案した後、先方からは「全ページに何かしら役立つ情報を入れたい」という意向を聞いていたんだけれども、上記の通り緩衝材としての役割を強く意識しての提案だったから、「緩衝材が必要だ」とか「キャラクターを好きになってくれた人もいるはずだから絵のコンテンツにも需要はあるはず」とかなんやかやゴネて、最終的に、各話が終わった後の1ページ目には本編の内容に関係する補足情報や豆知識を、2ページ目には内容と関係無いイラストや蔵出しの設定画といった、お役立ちとはほど遠い情報で「ヌキ」を作るというスタイルに落ち着いた。

そこまではよかったんだけど、悩んだのは、その2ページ目の方に何をどこまで入れるのかっていう点で。

途中までは、裏話とかキャラの設定とか思いつく限り色々盛り込もうかって思ってたんだけど、仕上げに近い段階になって「やっぱやめよう」って思って、文字部分をだいぶ削除した。そのとき思い出してたのは、ずっと昔に「るろうに剣心」の単行本を読んで感じてた事。仮に誰が見ても明らかにそうだろうなってバレバレだったとしても、「このキャラのデザインは綾波レイの影響が~」とか、わざわざ言わないで欲しかった。読んでてすごく気持ち悪かった。今にして思えば、あれは読者が知りたいであろう事・見たいであろう物を読者向けのサービスとして提供していたのではなく、作者自身が語りたくてしょうがなかった事をあの場所で発露していたという事なんだろう。商品であるはずの物の中に垂れ流されていた自意識に、僕は「ウッ」てなってたんだと思う。自分自身が、人から認められたい欲の強い自意識過剰なタイプの、相手が興味なさげにしてるにも関わらず自分の喋りたい事をベラベラと一方的にまくし立ててしまうタイプの人間だという事を考えると、同族嫌悪のような物だったのかもしれない。(なので、そういうのは商品の中ではなくこういう所で垂れ流しておきます(垂れ流す事自体をやめるという選択肢が無いあたりが救いようのないポイントである))

正直、最終的にコンテンツとして入ってる物の中にはまだまだ、読者が見たかった物ではなく僕が見せたかっただけの物があると思う。見せたかったっていうか、むしろ、これしか見せられる物が無いんですみたいな。全部を描き下ろしで埋めるのは無理だったので、大変申し訳ないけれどもそこはどうかご容赦頂ければ幸いです……次の本は出るかどうかも含めて未知数だけど、2年目以降で衣装の着回しがほとんどになって新規に衣装の設定を起こしてないというのもあって蔵出しできる素材が圧倒的に少ないので、描き下ろしが増えるんじゃないかと思う。思うっていうか、多分そうしないと成立しない。最近はフキダシに入れてる顔アイコン的なやつを使い回すようにしてて、労力を削減した代わりに、絵を描くモードに頭を切り換えるまでのウォームアップができていない気がするので、ウォームアップがてらイラストを描くようにして少しでも描き溜めて、次に備えておきたく思う次第です。

シス管系女子が本になります!(ようやく) - Feb 02, 2015

日経Linux誌にて連載4年目に突入した「シス管系女子」ですが、本が出ます!(やっと) (表紙) 表紙はこんな感じで、収録されているのは無印「シス管系女子」1から13話と「#!シス管系女子」1から11話、描き下ろしのプロローグに、各話間のおまけイラストなどが加わってだいたい200ページ弱くらいになってます。

(※「シス管系女子」ってなんやねん?という方は、ITPro 記者の眼の記事(担当編集記者の方による紹介)をご覧下さいませ。)

まんがでわかるLinux シス管系女子 (日経BPパソコンベストムック)

日経BP社 (2015-02-18)
売り上げランキング: 10,129

この通り、Amazonでもすでに予約可能になってます。2月18日(今月)発売予定。また、まだサイト上には登録されていないようですが、ほぼ同時にKindle版も出ます(Kindleの方がちょっと安くなるらしいです)。 本屋さんでは、技術書のコーナーか日経Linux本誌がある技術雑誌のコーナーかのどちらかに置かれるものと思われます。

「書籍」ではなく「ムック」ということで微妙なラインではありますが、これも一応「単著」とは言えるでしょうか。「単著も無いくせに」なんて煽りが流行った頃もありましたが、その時はまさか自分の最初の単著がマンガとは思いもしませんでした……

続きを表示する ...

予想の範囲内に収まってしまった感がある「楽園追放」 - Jan 04, 2015

年が明けてから、ベイマックスを見た次の日(1日で2本ハシゴするのはちょっと体力的に不安があったんです……)に楽園追放も見ました。

事前に仕入れていた情報では、フル3DCGの映画(いわゆる3D映画ではなく、人が人物を手描きしないトゥーンレンダリングのアニメという意味の)で、SFで、主人公のアンジェラの声が釘宮理恵で、3DCGによる生尻描写に妙に力が入っていて素晴らしいらしい、と。なんやそれ。

ほんで感想なんですけど、そこそこ面白かったです。でも突き抜けた感じの印象はなかった。「まあまあ、かな?」ほんとこれ。

いや、決して悪い出来ではないと思うんですよ。むしろよくできたアニメ。でも、期待していたほどの「今まで見た事の無かったすんげえ物を見ちまった」感が無かったっていうか。想定の範囲内に収まってしまったなあ感というか。「そうそう、俺が見たかったのはこれだったんだよ!」を外していたというか。

これは多分、見たタイミングも悪かった。手放しに大絶賛できたベイマックスの直後だったので、どうしても比べてしまって……(莫大なコストのかかった映像と比較して、っていう事だけじゃなく、ディズニーフォーマットの鉄板のシナリオと比べて、っていう意味で) あと、見たっていう人の評判が非常に良かったので期待しすぎたってのもありそう。

まあなんだかんだ言いつつ、限定版のブルーレイ注文したくらいには気に入ってるんですけどね。

どこかで見たなあ……なネタ大集合

思いつくだけでもざっと挙げてみると……

  • 砂の惑星(本作では地球)を這い回る大量のサンドワーム→トライガンとか
  • データ化された人類→ゼーガペイン順列都市ディアスポラとか
  • データ化された人類とそうじゃない人類との対立、アバターとしての体を使ったコミュニケーション→これもディアスポラにあった
  • バイクスタイルで乗るメカ→ゼーガペインコードギアスとか
  • 人類に忘れ去られてもなお頑張る健気な人工知能→HOTELの支配人とか
  • 人と同じように思い悩み、人類の歴史の記憶を持つのであれば、人工知能でも「人類の末裔」を名乗っていいんじゃないか→HOTELの支配人、A.I.のデイビッドとか
  • 数々の妨害を乗り越えて、俺達はロケットを飛ばすんだ!→王立宇宙軍 オネアミスの翼とか

などなど、類例は多いんですよね。いや、別にこれらの特定の作品が参考にされたということではなく、これらの作品もまた他のルーツからの引用だったり孫引きだったりするのかもしれなくて、ともかく、今ではむしろ陳腐化してしまったと言えるようなネタだということで。

無論、「ありがちネタ」ばっかりの作品でも、思わず大絶賛したくなったような物はたくさんある。なのに、僕にとっての「楽園追放」は、なぜそうではなかったのか。そこが問題で。

多分、個々のガジェットや設定が「どっかで見たなあ」だったから、じゃあなくて、全体的に「どっかで見たなあ」ばかりに感じられてしまって、「楽園追放」で初めて見たと思えるものを見いだせなかったから、なんじゃないかと思う。「そうそう、俺が見たかったのはこれだったんだよ!」っていうのは、もっと詳しく言うと、「そうそう、俺はこれが見たかったんだけど誰も今までやってくれなかったんだよ! それをやってくれてありがとう! やっとこれで、今まで見たくても見れなかった物を見れたよ!」っていうことなんですよね。発想の転換なのか、予算が付いたのか、技術的ブレークスルーがあったのか、理由は何でもいいんですけど。

作品全体をまとめる一本通った筋というか、本質的なその作品ならではの何か(それがオリジナリティと言われる物なんだろう)があって、それを補強する材料として各種のガジェットや設定がある、という見方をした時に、補強材がどっかで見たようなものの寄せ集めでもそれは全然構わないと思うんですよ。その作品ならではの芯材があれば、「どっかで見たような要素」であっても「おおお、こういう見方ができるのか!」という新しい感動を生み出すから。でもそういう芯材が無い限り、「どっかで見たような要素」は「どっかで見たような要素」の域を出ない。

今まで、僕自身が好きだった作品に対して、他の人が「中身が無い」「空っぽだ」と評しているという場面が何度かあって、不思議に思ってたんですよね。「中身が無いだって? こんなに詰まってるじゃないか!」って。でも、今なら分かる。それはその作品を見る人の持つバックグラウンドによって生じる見え方の違いなんだ、と。古典や名作をたくさん見てきた人達が見た時に「この要素はアレと同じ、こっちの要素はアレと同じ。で、この作品ならではの物はどこにあるの?」と感じてしまう、というのを端的に言い表した言葉が、「中身が無い」という評価だったんだなあ、と。

僕自身そんなに熱心にたくさんSFを読んだり見たりしてる方ではないと思ってるし、映画だってそうしょっちゅう見てるわけでもない、漫画だって読んでる方ではあると思うけどその範囲はごく狭い、そんな視野の狭い僕ですら「あ、これはアレで見たやつだ」「これもアレで見たやつだ」と感じてしまった。それが、僕が本作を心の底から「面白かった!」と思うことができない理由なんじゃないかと思う。

設定だけじゃなく制作面でも、「ハイクオリティなトゥーンレンダリングで美少女キャラが電脳&物理バトル」というのは前年に蒼き鋼のアルペジオで散々見てしまったんですよね。あっちには生尻はほとんど出てこなかったけど。

もちろん、楽園追放の映像が僕の見たことのある既存のSFアニメに比べて高品質なのは間違いないです。お金も手間もかかってると思う。順当に進歩してる事を感じられる(アルペジオ見てなかったら、もっと感動してたかもしれない)。設定も、定番の設定を安直に使ってるわけじゃなく、この作品なりのひねりが加わってると思ったし。

でも残念ながら、僕が見たかったのは「前の作品に比べて良くなってるね。じゃあ前の作品に代わって暫定一位だね。本棚の一番いいところに置いておこう。次にもっと良くできた物が来たら、その位置は明け渡してもらうけどね。」っていう温度の物じゃなくて、「なんだこれ!! 前の作品とか他の作品とかどうでもええわ!! ようわからんけどこの作品単体が大好きになってもうたわ!! お気に入り作品の棚に突っ込んどくわ!!」っていう物だったんですね。ナンバーワンよりオンリーワンな魅力を求めてる。そういう意味で、本作はオンリーワンな物としてのパンチがちょっと弱かったと思うのです。

強いて言うなら「フル3DCGでここまでやれてる」っていうのがこの作品ならではのポイントでしょうか。だとしたら、仮にこれがフル3DCGじゃなかったら、僕は見てみようと思っただろうか。そこでYESって言えないかもしれないなあっていうのが、僕の率直な感想なんですよね。それに、それはあくまで「ナンバーワン」の方なので、いずれは追い越される運命にあるわけで。

ディンゴのキャラクター描写に漂うご都合感

見ていて人物達の個性が掴めないなあと感じてしまう箇所があったのも、僕の中で本作の評価がいまいち高まらない理由の1つな気がします。特にディンゴ。

  • 出会い頭のアンジェラを私欲のために利用するほどのしたたかで飄々としたキャラクターなのかと思えば、彼女の体調を気遣って作戦を変更しようとするほどの律儀さを見せたりもする。
  • 岩山に登ってサンドワームを狙撃していたくせに、高所恐怖症だと嘯いたりもする。
  • 敵を本当に出し抜くためには……とかなんとか言っておきながら、無策で敵の前に身を晒したりもする。

シナリオの都合がいいように、その場その場で言う事考える事がコロコロ変わってるというか、作者の操り人形にされてるというか、そんな感じが否めなかった。いや、本当に思ってる・考えてる事と行動が一致していない、嘘をついている、敢えてそういう人物像を演じているだけで実はそういう人物ではない、っていう演出なのかもしれないんだけど。そしてそういう演出であるという事を僕が読み取れてないだけなのかもしれないんだけど。

この感覚に近い物を最近味わったなあと思ったら、あれですよ、アナと雪の女王のハンス王子。あの唐突感。それまで誠実な王子様だったのに、シナリオの都合上悪役が必要になった途端に、豹変して悪人になるっていう。元々のシナリオではエルサが悪の魔女の役回りだったのが、「Let It Go」の歌があまりに良かったからってんでシナリオを変更して姉妹の愛の物語にすることになって(←ここまでの経緯は制作者のインタビューで公式に語られてたので事実なんだろう)、それで悪役不在になっちゃったから適当な人物を代わりに悪役にしちゃいました、みたいな感じ。

「何かを演じている人」を描写するのって基本的に、鬼門っていうか難題っていうか、チャレンジングな事だと思うんですよね。「あ、この人はほんとはこうは思ってないんだな」とか「あ、この人はこう思ってるんだな」みたいなのが視聴者に伝わってないと、シナリオライター的には仮面を外して正体を現しただけのつもりが、正体も仮面も何もないただの操り人形だという風に見えてしまう。「実は、何々でした」っていうのは、丁寧な伏線無しに安直に使うと痛い目を見る。

同じ虚淵脚本のまどマギでキュゥべえがそういう豹変を見せてたけど、あっちがそう不自然に感じられなかったのは、キュウべえが一見すると可愛らしいマスコットキャラ風でありながら、アニメーションの中では妙に無表情で不気味な存在として描かれていたから、豹変した時にも「やっぱりね」と自然に受け入れられたんじゃないかと思う。

……こうも立て続けにこんな感想を抱いてしまうと、逆にやっぱり僕の方が話や空気を読めてなさ過ぎるんじゃないか?って不安になってくる。こんなに金と手間がかかった作品で、僕ごときがこんな風に思ってしまうような程の大穴が、残ったままでリリースされるわけ無いんじゃないのか。実はハンスもディンゴもちゃんと「嘘をついてる」ことを臭わせる伏線が張られていて、僕がそれを見落としていただけなんじゃないか。誰にでも分かる明々白々な伏線を、僕が読み取れていなかっただけなんじゃないか。僕は自分で思っている以上に、読解力も注意力も無い人間なんじゃないのか。どうなんでしょうか、実際の所は。

後で見かけた情報によると、諸々の都合から本来やりたかった尺よりもだいぶ短い尺でやらざるを得なかったそうなので、僕が抱いたような違和感は、本来の尺があれば解消されていたのかもしれませんね。

板野サーカスとかメカ描写とか

人によっては「紛い物じゃないホンモノの板野サーカスや!」みたいなのもあるのかもしれないんだけど、正直、僕はこの種の映像表現については「他の人がやってるのでも十分格好良く見えるんだけどなあ」って思ってるので、あんまりそこは有り難がれなかった。行きすぎると、過去を美化しすぎて新しい物を認められない老人って事になっちゃうし。いや、本作のバトルが格好良かったし見応えあったのは間違いないんですけどね。

クライマックスで出てくる新型メカ、よく見るとディティールが違うのは分かるんだけど、基本的にずっと激しく動いてるからというのもあって、これはあんまり違いがよくわからなかった。話の内容(設定)的に、新型と旧型をビジュアルや性能ではっきり分けると変だよねってのはあるし、現実的で妥当なラインだとは思うんだけども。

細かい所だけど、新型で降下中のバトルでの、コクピットが無人なのにペダルとかだけ動いてるっていう描写、あれはとても好き。ゼーガペインで「実際はこうなんだよな」って思ってたのが、いい感じに映像化されてたと思った。コクピット内に仮想アンジェラを投影するという表現の仕方もあるだろうっていうか一昔前ならそう描写されてたかもなって思うんだけど、ここは敢えての無人描写で正解でしょう。肉体をただのアバターの一形態としか思ってないっていう、データ人類らしさがよく現れてると思った。

あと、絶体絶命のピンチに駆け付ける救援だったり、タイムリミットが迫る中で何分間だけ凌ぎきれっていうミッションだったりっていう状況自体、定番だけどやっぱ燃えますよね。あのいまいち外連味の無いアーハンがあれだけ格好良く見えるっていうのは、そういう状況があるからって部分もあると思う。

まとめ

これも誰かが言ってたと思うけど、「目新しい物は無いけど、無難によくできてて、そこそこ面白い。今の日本のアニメの技術力を表したマイルストーンとして価値がある。」っていうのが、今の所は僕の中でもしっくりくる落とし所ですね。蒼き鋼のアルペジオの視聴動機と同じで、マイルストーンを見るために映画館に行こうと思った、っていうのはやっぱりありますから。その意味では、ちゃんと良い物見れたなあって思ってます。

それに、ただの技術デモンストレーションのプロモーション映像ではなく、キャラクター達はキャラクターとして作画的にも演技的にも魅力的に成立しているし(「アンジェラの尻」ってのはそれを端的に言い表してる)、テーマ性もストーリーも演出もちゃんとあって、普通に映画として見れる、そういうラインはちゃんと満たしてる。昔の「DoGA CGAコンテスト」で見られたような、ロボットものパロディを「CGでやりました」っていう事こそがその作品の価値で、キャラクターがカクカクしてるとかデザインがダサイとかシナリオが無いに等しいとかそういう点にはどうか目を瞑ってください、みたいなのとはもう全然違う。そうでなきゃ、キャラ描写がどうとかシナリオがどうとか僕も言いませんもの。

冒頭にも書いたけど、ベイマックス直後の鑑賞での感想ということで、それに引きずられて冷静に見れてない部分はありそうなので、ディスク届いて再視聴したらまた何か書くかもしれません。

万人が楽しめるであろうハートフルヒーローアニメ「ベイマックス」 - Jan 04, 2015

最初はあんまり興味なかったんですよ、ベイマックス。少年とロボットの心の触れ合い的な、いわゆる普通のハートフルアニメなんだろうなと思ってたから。WALL-Eもまだ見てないし、これもそのうち見る機会もあろう……くらいの感じで。

でも、たまたま行った銀座三越でベイマックス展みたいなのやってて、そこに実物大?ベイマックスの風船人形もあったんだけど、それよりもグッズ販売にあったオモチャのアーマーアップ・ベイマックス見て「え、何このオレンジのやつ。ベイマックスのライバルか何か?」と思って、検索したら元々ベイマックスの原作がマーベルヒーローの「Big Hero 6」というやつだということを初めて知って、「え、ディズニーでマーベルヒーロー!? どうなってんの?!」と、俄然興味が湧いてきまして。

年末が多忙すぎて見に行けなかったんだけど、年が明けてからやっと見に行きました。3D吹き替え。

で、感想なんですが、いやー、掛け値なしにとても面白かったです。「万人が楽しめるハートフルヒーローアニメ」って感じ? マーベルヒーローから暴力描写を抜いて可愛らしさをミックスするとああなるのか。ほんと安心して見てられる。ブルーレイ出たら買うんじゃないかな。

子供とその面倒を見るロボが事件を解決というフォーマット自体はよくある話の作り方だし(ドラえもんとか)、そのフォーマットの上で展開されるのはこれまた定番の「力を手に入れる→誤った選択をする→状況が悪化する→正しい選択をする→問題が解決する」っていうハリウッド映画の黄金パターン(自分がぱっと思いつくやつだと、アメイジングじゃないスパイダーマンの「スパイダーパワーを手に入れる→調子こいてたら悪漢におじさんを殺される→正義に目覚める」って話の流れはまさにこれ)。そこに色々なフレーバーを足して定番中のド定番を丁寧に作った良作。横綱相撲っていう評価は非常に的確な表現だと思います。

ケアロボット・ベイマックス

何をおいてもまずとにかく、ベイマックスが卑怯な程にカワイイ。歩く度にきゅむきゅむ音が鳴る(ラピュタの園丁ロボットみたいにわざわざ鳴らしてるんじゃなくて、風船ボディだから音が出るという描写)とか、優しい声だとか、真面目で言う事は杓子定規なんだけどそれでもヒロの言う事には逆らえず、ヒロの事をあの手この手でケアしようとする所とか。お尻が邪魔で本棚を崩してしまったり、空気漏れを自分でセロハンテープで塞いだり、パンチもキックもプニプニでまるで効果が無かったり、アーマーアップした後でも町の上空の機械の上で座ってる時に脚をゆらゆらさせたり、仕草もいちいちカワイイ。

しかし、ただのカワイイだけのキャラでもないんですよね。感情表現は限りなく薄くて、基本的には人をケアするというプログラムに忠実なだけだから、ケアプログラムを抜かれると途端に無慈悲な戦闘マシンに変わってしまう。その辺が、日本のロボット感と西洋のロボット感の差なのかもしれない。でも、ポータルを前に立ち止まる様子や脱出のシークエンス等は、まるでパーソナリティを持っているかのようにすら見えて、それがまたドラマチックさを強調してる気がする。受け手がそこに勝手に感情を見出してしまうというか。

そういえば、劇中では「あなたの健康を守ります」としか言ってないじゃないか、CMの「心とカラダを守ります」ってのは感動系映画に見せようとした恣意的な訳だ、なんて声もよく見かけました。確かに劇中のなんてことのない一言を大げさに切り取りすぎとは言えるかもだけど、これは案外「ケア」ってことの本質を突いてる切り取り方だと思うんですよね。ケアされる方も、常に悪態つかれてたり嫌そうな顔されてたりしたら嫌じゃないすか。それはいいケアの仕方ではないですよね。ベイマックスは見た目も喋りも動きも全て、人に警戒心や不信感を持たせないように設計されている。パンフレットには「実際の介護分野のロボットを参考にした」的な事が書かれてたし。ディズニー侮れない。

ヒロ

そんなベイマックスは、主役の片割れではあるんだけど、ヒロの現状を映し出す鏡でもあるんですよね。ヒロが未熟な間は未熟な振る舞いを見せるし、ヒロが怒りに駆られた時は無慈悲な破壊マシーンになるし、ヒロが成長したら彼の背中を押す親のようになる。そういう意味で主人公はやはり、ヒロなんですよね。

第一印象はちょっと傲慢な少年なんだけど、自分の知らなかった物や事に触れた時にちゃんと受け入れる素直さもある、聡明なキャラクターとして描かれている。安直な天才少年キャラだと、自分の計算結果を過信して頑迷なイメージがある(そして、その頑迷さを打ち砕く事だけで1つのエピソードになりうる)と思うんだけど、ヒロはそうじゃないという所に、僕はより聡明さを感じさせられました。

科学者達

でもヒロがそういうキャラクターに見えるのは、彼の周りにいる仲間達もまた同様に聡明な人達だからこそなのかもしれない。ヒーロー戦隊の他のみんなは同じ研究室のメンバーでそれぞれが得意分野を持つ科学者だし。フレッドも、本人は知識がないにせよ科学は好きで、分からない物を分からないと認めはするけど軽んじはしない。それってかなり「できた」人の振る舞いだと思うんですよね。

そう、この作品では全編通して、科学者に対するリスペクトが溢れてる感じがあるんですよね。いや、まあリスペクトに溢れてるってのは言い過ぎかも知れないんだけど、でも少なくとも、よくある典型的な「頭はいいけど実戦ではからっきし駄目」「知識はあるし頭の回転も速いけど傲慢」みたいな描かれ方はされてない。一人の天才科学者が人格的にも高潔で……っていうのでもなくて、(優秀な学生達というフィルタリングはなされているにせよ、)普通に科学の徒をやってる人達が、ボサボサ頭にヨレヨレのネルシャツという感じのテンプレートにはまっていない「普通の人達」として描かれていて、自分の持っている力をヒーロー能力として活用するっていうスタイル。それが僕にはとても新鮮に感じられた。

そういう意味で、研究好きな人とか科学好きな人とかで「どうせ俺らは主役にはなれないんだ」みたいな鬱屈した思いを抱えてる人にとっては、鬱憤を晴らしてくれる話かもしれない。だいたい、研究者とか科学者とかでキャラが立ってるキャラクターって、いても全キャラの中では二軍止まりって印象が僕にはあるけど、それが一軍、それもチームで第一線ですよ。これを痛快に思わずにいられますかってもんです。

映像のこととか

3D上映だと空を猛スピードで飛ぶシーンとか臨場感満点で、それだけでも僕としては「映画館で見る価値あったな」と思えました。自宅で気軽にHD映像を視聴できる昨今であっても、視界を覆うような大スクリーンでいい音響で映像を見るというのはそれだけでもうエンターテインメントなので、見るならやっぱり良い物を見たいじゃないですか。

あと、ゴチャゴチャした町並みの感じがCGアニメーションで描かれているという様子そのものも、僕は面白かったです。サンフランシスコと東京の両方をミックスした仮想の未来都市の風景は、それ単体でビジュアルとして見応えがある。帝国少年みたいなイラストや、精巧なミニチュアを鑑賞するような感覚に近いかも。

アバターの時にも思ったけど、モノクロ映像がカラー映像にグレードアップするように、ジェットコースター・ムービーとしての映画において「3D」は明らかに「2D」よりも上のグレードなんだと思います。すべての映画が3Dになるのかどうかは分からないけど、少なくとも、より高いグレードの没入感や爽快感を得るなら3Dだよね、っていうのは言えると思う。本作もブルーレイ出たら買うだろうと思ってるんだけど、そうなるとやはり3Dが見れる再生環境も欲しいなあって思ってしまいます。

まとめ

とりあえず、ディズニー映画にもヒーローものにも抵抗がない人は、見ておいて損はないと思います。ということで。

Firefoxアドオンのe10s(マルチプロセス)対応の方針について得られた知見 - Nov 13, 2014

Firefoxのマルチプロセス設計への移行がいよいよ目前に迫っている。

Firefoxにおけるマルチプロセス化のための仕組みそのものはElectrolysis、略してe10sと呼ばれており、Firefox 4の頃から既に入っていて、Firefox Hacks Rebootedでも詳しく解説してたんだけど、ブラウザのUIを動かすプロセスとコンテンツ領域のプロセスを分けるというのはFirefoxではかなりの大ごとだった。一時は「こんなん無理!」っつって計画が凍結されてたほどだったと記憶してる。

e10s移行が困難だった理由は、多分、Firefoxというアプリケーションそのものの設計にあったのだと思う。FirefoxというWebブラウザは、「GeckoというHTML・XMLレンダリングエンジンの上で動作するJavaScript製のローカルWebアプリケーション」といった感じの設計になっている。なのでコンテンツ領域内の操作のためのコードとUI部分の操作のためのコードが非常に似通っていて、シームレスに連携しやすかった、否、「連携しやすすぎた」と言える。あまりにシームレスに連携できたせいで、ブラウザのUIに関わるコードとコンテンツ領域内の操作に関わるコードが渾然一体の密結合になってしまい、それが「UI部分とコンテンツ領域内との間はテキストメッセージだけを非同期に通信しあう」というe10sベースの設計への移行を阻んでいた、という事なのではないか……と僕は思っている。

どういう理由があったのかは知らないけど、最近のバージョンのFirefoxではe10sベースの設計への本格的な以降のための準備が着々と進められている。上記のような密結合だった部分が「UI領域専用」「コンテンツ領域専用」「両方で共通」といった感じに分離されてきているし、同期処理前提だった部分が非同期処理前提に改められている。 セッション保存の仕組み(ページ内のテキストボックスへの入力内容を保存する所とか)、リンクのクリック操作のハンドリング、その他多数の部分が大幅に書き直されている。アドオンから見た時のAPI的な互換性は可能な限り残すようにしてあるようで、その努力の様子が非常に興味深い。

で、アドオン側での対応をどう進めるかなんだけど、実際にいくつかのアドオンをe10s対応に改修してみて、アドオンの性質によって典型的なパターンがあるようだという事が分かった。

  1. UI領域内だけで処理が完結するアドオンの場合: 特に何もしなくて良い。browsercontentWindowcontentDocumentに一切触れず、コンテンツ領域内からBubblingしてくるイベントも捕捉しないタイプのアドオンは、何も考えなくてもそのままe10sで動く。
  2. UI領域内で発生するイベントをトリガーとして、コンテンツ領域内で何らかの処理を行う(処理の結果は利用しない)アドオンの場合: アドオンの実装を、「UI領域からコンテンツ領域へ、処理スタートの指示のメッセージを送る」「コンテンツ領域で指示のメッセージを受け取って、実際の処理を行う」という2段階に分け、実装の一部をコンテンツ領域側に読み込ませるコードの中に移動する必要がある。 マルチプルタブハンドラの場合、「選択したタブをファイルとして保存する」機能について、ページをファイルとして保存する処理をコンテンツ領域側に移動し、UI領域からのメッセージをトリガーとして実行するためのコードを追加した。
  3. コンテンツ領域内で発生するイベントをトリガーとして、コンテンツ領域内で何らかの処理を行うアドオンの場合: アドオンの実装を、コンテンツ領域側に読み込ませるコードの中に移動して、そこで処理を完結させるようにする必要がある。
  4. コンテンツ領域内で発生するイベントをトリガーとして、UI領域側で何らかの処理を行うアドオンの場合: コンテンツ領域側にコードを読み込ませて、コンテンツ領域内で発生したイベントをUI領域に通知してやる必要がある。 ツリー型タブの場合、タブバーを自動で隠す機能において、コンテンツ領域上でのマウスの移動を検知するために、マウスのボタン操作や移動で発生したイベントをUI領域に通知するコードを追加した。 生のイベントオブジェクトやDOMノードは渡せなくなるので、文字列として渡せる情報だけでもきちんと動くようにする工夫が要る。
  5. UI領域内で発生するイベントをトリガーとして、コンテンツ領域内で何か処理を行い、その結果を受けてさらにUI領域側で何らかの処理を行うアドオンの場合: これが一番厄介なパターン。 例えば今までだったらWebページ中のリンクを収集する操作は同期処理で var linkURIs = Array.map(gBrowser.contentDocument.links, function(aLink) { return aLink.href; }); と書けたけれども、こういう事ができなくなる。 UI領域とコンテンツ領域の境界をまたぐ時に非同期処理を挟まないといけないので、処理を「UI領域からコンテンツ領域へ、リンクを収集する指示のメッセージを送る」「コンテンツ領域で指示のメッセージを受け取って、リンクを収集し、UI領域へ結果を報告するメッセージを送る」「UI領域で報告のメッセージを受け取って、次の処理を行う」という3つの段階に分けなくてはならない。 マルチプルタブハンドラの場合、「選択したタブの情報をクリップボードにコピーする」という機能のために、タブ(で開いているページ)の情報からクリップボードにコピーするための文字列を得る処理をコンテンツ領域側に移動した上で、UI領域からコンテンツ領域へ・コンテンツ領域からUI領域への橋渡しを行うためのコードを追加し、前後の処理をPromiseで繋ぐようにした。

上記の5パターンの最初の方の物ほど実装が容易で、後の方の物ほど実装が面倒になる(その上、メッセージの往復を待たないといけないのでオーバーヘッドも大きくなる)。 特に深い意味もなく後の方のパターンで実装していた機能は、どうにかして前の方のパターンで実装できないか検討した方がいい(Firefox本体の設計変更も、おそらくそういう風に進められたのではないかと思う)。 実際に、情報化タブではWebページのサムネイル画像を取得する処理について、元々はUI領域で「サムネイルが必要だ」となったタイミングでその都度同期処理していたのだけれども、まずサムネイル取得の処理はコンテンツ領域に移し、処理が走るタイミングについて、コンテンツ領域側で発生したイベントをトリガーとしてサムネイル画像をUI領域側にpushで送りつけるように改めた。 これは上のリストで言うと、5番目のパターンから4番目のパターンに設計変更した、ということになる。

それでもどうしても5番目のパターンで実装しないといけないケースというのはあって、前後の処理とどうやって繋ぐか(同期処理だった物をどう非同期化するか)というのが問題になる。 自分の場合は、こういう時はPromiseを使うのがいいと思ってる(以前ならJSDeferredを使ってたんだけど、Mozilla Add-onsのレビューが通らないため、最近になってPromise.jsmのES6 Promise互換APIを使うようになった)。 ツリー型タブでも、コンテンツ領域内にプラグイン(Flashなど)で描画されている領域があるかどうかを調べるための処理で、このパターンが残っている。 Promiseを使うコードはUI領域側のブリッジにまとめてあり、こんな感じになってる。

sendAsyncCommand : function CB_sendAsyncCommand(aCommandType, aCommandParams)
{
    var manager = this.mTab.linkedBrowser.messageManager;
    manager.sendAsyncMessage(this.MESSAGE_TYPE, {
        command : aCommandType,
        params  : aCommandParams || {}
    });
},
checkPluginAreaExistence : function CB_checkPluginAreaExistence()
{
    return new Promise((function(aResolve, aReject) {
        var id = Date.now() + '-' + Math.floor(Math.random() * 65000);
        this.sendAsyncCommand(this.COMMAND_REQUEST_PLUGIN_AREA_EXISTENCE, {
            id : id
        });
        return this.checkPluginAreaExistenceResolvers[id] = aResolve;
    }).bind(this));
},
handleMessage : function CB_handleMessage(aMessage)
{
    // dump(JSON.stringify(aMessage.json)+'\n');
    switch (aMessage.json.command)
    {
        ...
        case this.COMMAND_REPORT_PLUGIN_AREA_EXISTENCE:
            var id = aMessage.json.id;
            if (id in this.checkPluginAreaExistenceResolvers) {
                let resolver = this.checkPluginAreaExistenceResolvers[id];
                delete this.checkPluginAreaExistenceResolvers[id];
                resolver(aMessage.json.existence);
            }
            return;
    }
},
  • checkPluginAreaExistenceメソッドは、その実行を示すユニークなidを伴ってコンテンツ領域に指示のメッセージを送ると同時に、新たに生成したPromiseのリゾルバ関数を、idと対応付けて保持する。メソッドの戻り値はPromiseとする。
  • コンテンツ領域側では、指示のメッセージを受け取って処理を行い、結果のメッセージをid付きでUI領域に送り返す。
  • 送り返されてきたメッセージをUI領域側で捕捉したら、idに基づいて、保持していたリゾルバ関数の中から対応する物を見付け、送り返されてきたメッセージに含まれていた情報を渡す形で実行する。

という風にする事で、checkPluginAreaExistenceメソッドをthenableなメソッドとして他の処理の中に無理なく組み込める(次のコールバックには、コンテンツ領域側での処理で得られた結果が渡る)ようになってる。 UI領域→コンテンツ領域→UI領域 と境界を2回以上またぐ処理を実装する時は、多少の差異はあれどだいたいこんな感じになるんじゃないだろうか。

必要かどうかで言うと、このパターンでPromiseは必須ではなくて、Promiseのリゾルバ関数を保持・実行する代わりに、単にcheckPluginAreaExistenceメソッドでコールバック関数を受け取って、それを保持・実行するようにしてもいいんだけど。 非同期の処理同士を何度も書き連ねる時のコールバック地獄は見たくない(今はそういう連携をする必要がないとしても、今後いつ必要になるとも限らない)ので、僕は自分で書く非同期処理は、インターフェースとしては基本的にPromiseを使う方向で統一するように考えてる。

Page 5/237: « 1 2 3 4 5 6 7 8 9 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード