2014-12-31

2014 年度の記事数は 100 本

当ブログの 2014 年度の記事数は 100 本だった。本記事が 100 本目となる (サイドバーのスクリーンショット; この記事を書いている途中なので記事数は 99 になっている)。

2014-blog-post

2005 年からブログを始めた。9 年間ブログを続けて、最も記事数が少なかったのは 2010 年度の 139 本だった。2014 年度は更に少ない 100 本。何とか年 3 桁を維持できた。

2014 年のビッグイベントを一つ挙げるなら、4/1 のChatWork 社への転職だった。その前後は極端に記事が少なくなっている。9 月。引越をして通勤時間が減った。生活に余裕が出来始めた。ブログの記事数も増えた。

2015 年はブログ記事数 200 本を目指したい。2015 年もどうぞよろしく。

半分の労力でコーヒー豆を挽ける ROK Coffee Grinder を注文してみた

Indiegogo で未来的で面白そうなコーヒ・グラインダー (コーヒー・ミル) が出ていたので注文してみた。英国は ROK の Coffee Grinder。正確には、「注文」ではなく「出資」ということになるんだけど、出資金額を十分に越えているのでほぼ注文と同じと考えていいと思う。

動画はこちら。

コーヒー・ミルが欲しくって

最近、コーヒーにハマり始めた。今までは実家に帰った時にドリップ式のコーヒーを頂くか、会社のコーヒーメーカーで作ったコーヒーを頂くか... 近所の喫茶店でコーヒーを飲むのがせきの山だったんだけど、フレンチ・プレス式のコーヒー・メーカーを入手してから家でもコーヒーを飲むようになった。コーヒー豆は近所のコーヒー・ショップでひいてもらってる。コーヒー豆によって、コーヒーも味が違うと「実感」できて、もう一歩ふみこみたくなった。

そう。コーヒー豆を自宅でひきたくなった。

コーヒー・ミルには手動と電動がある。

心は手動のコーヒー・ミルに動いていた。持ってると恰好よさそうだし、コーヒーを挽く作業が楽しそうだし、何より大学院時代、手挽きのコーヒー・ミルで豆をひいてもらっていた時のあの香りと時間の記憶がぼくの心をくすぐる。

一方で手動は大変だと聞く。

1 杯分挽くだけでも、百回近く回さないといけない。2 週間もすると、疲れてしまう人が続出する。数杯分を挽くためのものじゃない。etc.

結局、みんな電動ミルに移ってゆくんですよ、と。

モトがものぐさな自分のこと。手挽きミルを続けられる自信はない。コーヒー店で豆を挽いてもらって、特別な時だけ手挽きミルを使う。もしくは、手挽きミルと電動ミルの二つを用意しようか。悩んでた。

そこで出会ったのが ROK Coffee Grinder。

ダブル・エスプレッソ分の豆を挽くのに普通 130-190 回転必要なところ 62 回転で挽けてしまうという。時間にして約 30 秒。これなら、ぼくにも使い続けられそう!!

豆の粗さも、エスプレッソ用の極細挽きから、フレンチ・プレス用の粗挽きまで調節可能。ぼくが見た限り電動ミルは粗さを調節するのが苦手そうだし、手挽きもエスプレッソ用の極細挽きに対応している機種は少ないっぽい。

そんなわけで、清水の舞台から飛びおりる気持ちで「出資」してみた (出資は 2015-01-05 まで受け付けている)。発送は 2015 年 5 月。出資価格 $199。日本への輸送代金 $20。計 $219。5 月が楽しみ。

マイナビの Miracast の説明が分かりやすい

エプソンのスマートグラス MOVERIO が Android ベースで、Miracast を使って手持ちの Android タブレットから動画を転送・再生することができる.... という記事を書いた。

この記事で、Miracast を簡単に説明したけれども、詳しい規格の話はしなかった。話が脇道にそれるし、ぼくもよく理解していなかったから。

サイトを検索していたら、Wikipedia よりも分かりやすく詳しい解説をマイナビで見つけた。紹介したい。

引用

参考になった部分を引用してみる。オッと思ったら、是非、元記事を読まれたし。

android 4.2からサポートされた「ワイヤレスディスプレイ」こと、Miracastは、無線LANを使って、画面をMiracstデバイスに転送する技術

塩田紳二のアンドロイドなう (48) android 4.2からサポートされた「ワイヤレスディスプレイ」 | マイナビニュース より引用

これまで、似たようなものとしてインテルが提唱していたWireless Display(Intel WiDi)があったが、現在では、WiDiは、Miracast技術の一部となり、どちらもMiracastと呼ぶことができ

塩田紳二のアンドロイドなう (48) android 4.2からサポートされた「ワイヤレスディスプレイ」 | マイナビニュース より引用

Miracastを名乗るには、無線LANとWi-Fiの関係と同じく、Wi-Fiアライアンスでの認証が必要なため、単に「ワイヤレスディスプレイ」といった表記にしているところも少なくない。

塩田紳二のアンドロイドなう (48) android 4.2からサポートされた「ワイヤレスディスプレイ」 | マイナビニュース より引用

Miracastは、Windows 8.1でも正式対応となったため、仕様としての成熟や実装経験の蓄積などが急速に行われると思われる。

塩田紳二のアンドロイドなう (48) android 4.2からサポートされた「ワイヤレスディスプレイ」 | マイナビニュース より引用

Miracastは、無線LANによる伝送にWi-Fi Directを使う。Wi-Fi Directは、無線LANデバイスが1対1で行う通信方式で、デバイスの検出やWPA2による認証、暗号化といった技術を含む。

塩田紳二のアンドロイドなう (48) android 4.2からサポートされた「ワイヤレスディスプレイ」 | マイナビニュース より引用

前述のように、Miracastは、いまのところ、任意の機器の組み合わせでは、必ずしもうまく動くとは限らない。

塩田紳二のアンドロイドなう (48) android 4.2からサポートされた「ワイヤレスディスプレイ」 | マイナビニュース より引用

2014-12-26

Pioneer BD-120 のファームウェア・アップデートをした

Pioneer の BD プレーヤー BD-120 のファームウェアをアップデートした。理由は BD の再生に不具合が出たため。BD-120 はもう現役機ではないけど、後述のような不具合が出て BD プレーヤーが動かなくなった場合はファームウェア・アップデートで直るかもしれない。一度試してみて欲しい。

不具合

昨夜、マイケル・ジャクソンの Blu-ray「THIS IS IT」をかけようとしたら再生されなかった。

不具合としてはこんな感じ:

  • BD を入れたら読み込まれず、トレイが出てくる
  • 上手く読み込みに成功しても、時間が「00:00:00」のままで先に進まない
  • 「停止」ののち「再生」で BD のスタート画面まで辿り着くも、入力を受け付けない (以下の項目はリモコン/BD プレーヤー本体の両方で試した)
    • 確定キーを押しても再生が始まらない
    • 再生・停止ボタンが効かない
    • 矢印キーが効かない
    • トレイの取り出しが効かない
    • BD プレーヤーの ON/OFF が効かない

ただし、DVD を入れた場合は問題なく動作する。手元にある BD は一枚だけしかないので他の BD がどうかは分からない。ただ、以前、他の BD 再生は上手く行った記憶があるので、BD に依って「動く」場合と「動かない」場合があるように思う。

仕方がないので、電源コードを抜き、強制的に電源 OFF。電源コードを再び挿して、電源を ON にし、起動中にトレイ・ボタンを押して BD プレーヤー内の BD を取り出した。

説明書にある「故障かも・・・」のページを読んで関係しそうなことを全てチェックするもダメ。BD-120 の場合、電源ボタンを長押しすることで「リセット」をかけることができるけど、症状は改善しなかった。説明書には、電源コードを抜いて、後に再び挿す、という手順も書いてあったけど、これも効果なし。

「読み込み失敗」でトレイが出てくるというのは、どちらかというとソフトウェアよりハードウェアの故障を疑いたくなる (もしかしたら、ハードも壊れてるのかもしれなけど)。とりあえず、ファームウェアをアップデート以後、この症状も出なくなった。

あとがき 〜 ファームウェア・アップデートについて

各メーカーのサポートか製品ページから最新のファームウェアを入手してインストールする。詳しくは説明書参照! 説明書が見つからなくても、最近なら、メーカーのサイトに説明書の PDF 版が置いてあるので困ることはないはず。

Pioneer の場合、ファームウェアが .EXE 方式で固められていた! これは Windows しか想定していない。Linux までサポートしろとは言わないけれど、Mac ユーザーはどうすればいいのか!!! 幸い Windows XP な古い機体が残っていたので事なきを得たけど... 素直に zip で固めておいて欲しいなぁ。。。

筆王2003からはがきデザインキット2015へ連絡帳をインポートする

起動が亀の様な歩みで進み、Google Chrome の起動には数分待たされ、アプリを数個起ち上げていると常にディスク・スワップしまくる、Windows XP 搭載の PC で毎年、年賀状を作るのが辛くなってきた。はがき作成アプリも、12 年前から最新へと移行するのはかなり厳しい。

なんとか連絡帳データは CSV 形式でインポートすることができたけど、一筋縄じゃいかなかったので変換用スクリプトを書いた (EmacsLisp で)。一応、Gist に上げておいたので紹介する。

筆王で出力した CSV ファイルを Emacs で開き、リージョンを指定して M-x fudeo2hagaki-design-convert-addressbook を実行する。

データは次の順にならんでいることを前提にしてある。

  1. 名前 (姓と名は空白区切り)
  2. ふりがな (姓と名は空白区切り)
  3. 郵便番号
  4. 住所 1
  5. 住所 2
  6. 住所 3
  7. 会社名
  8. 部署名
  9. 役職
  10. 連名 1
  11. 連名 2
  12. 連名 3

使用上の注意。

筆王 2003 の CSV は Shift_JIS で出力されるので utf-8 に事前に変換すること。Shift_JIS の機種依存文字がある場合は変換に失敗するので、予め消すか代替文字に置き換えること。

「名前」と「ふりがな」は姓と名が空白で区切られていること。区切られていないと、カラム数が足りなくなる。

「住所 1」は都道府県名を含むこと。ないと、カラム数が 1 つ足りなくなる。

いくらか手作業で修正が必要になることもあるかと思うけど、一回だけの作業なのでそこまでスクリプトを作り込んでない。ま、参考程度にどうぞ。

はがきデザイン 2015 のインポート機能

今年は年賀状を郵便局のはがきデザインキット2015 で作ろうと思っている。初めてのトライなので、今まで使ってた年賀ソフトから住所録情報をインポートしないといけない。

はがきデザインは CSV 形式でのインポートに対応している。ヘルプを表示させると、次の説明が現れる:

import-address

取り込み可能なデータは、「姓・名 (漢字・ふりがな)、郵便番号 (自宅・会社)、住所 (自宅・会社)、会社名、部署、役職のみ」。

この説明、読むだけだといまいち判然としない。姓と名は 1 カラムなのか 2 カラムなのか? 住所は 1 カラムなのか等々。で、2015 年版の CSV インポ一ト機能を実際に使ってみた。

姓に 1 カラム、名に 1 カラム。住所は 4 カラム分用意されている。また、上記説明にはない「連名」なども追加できることが分かった。ここに、はがきデザインキット2015 でインポートできる項目を書き出しておく。一項目一カラム。省略化 (全ての項目を用意する必要はない)。

  • 氏名(姓)
  • 氏名(名)
  • フリガナ(姓)
  • フリガナ(名)
  • リスト表示用氏名
  • リスト表示用フリガナ
  • 郵便番号(自宅欄)
  • 自宅住所(都道府県)
  • 自宅住所(市区町村)
  • 自宅住所(番地等)
  • 自宅住所(建物名)
  • 会社名(会社欄)
  • 部署名1(会社欄)
  • 役職(会社欄)
  • 郵便番号(会社欄)
  • 会社住所(都道府県)
  • 会社住所(市区町村)
  • 会社住所(番地等)
  • 会社住所(建物名)
  • 敬称
  • 連名1(姓:自宅欄)
  • 連名1(名:自宅欄)
  • 連名1(姓名:自宅欄)
  • 連名1(敬称:自宅欄)
  • 連名2(姓:自宅欄)
  • 連名2(名:自宅欄)
  • 連名2(姓名:自宅欄)
  • 連名2(敬称:自宅欄)
  • 連名3(姓:自宅欄)
  • 連名3(名:自宅欄)
  • 連名3(姓名:自宅欄)
  • 連名3(敬称:自宅欄)
  • 連名4(姓:会社欄)
  • 連名4(名:会社欄)
  • 連名4(姓名:会社欄)
  • 連名4(敬称:会社欄)
  • 連名5(姓:会社欄)
  • 連名5(名:会社欄)
  • 連名5(姓名:会社欄)
  • 連名5(敬称:会社欄)
  • 連名6(姓:会社欄)
  • 連名6(名:会社欄)
  • 連名6(姓名:会社欄)
  • 連名6(敬称:会社欄)
  • カテゴリ
  • 送受履歴

来年度版がどうなるか知らないけど、2015 年度版はこれだけのインポート機能を備えている。旧姓が取り込めないのは残念かな。

もし、インポート作業をする人がいたら参考にしてもらえれば幸い。

2014-12-22

Yosemite 10.10.1 で日本語キーボードが消えた

MacBook Air (Yosemite, OSX 10.10.1) で日本語を入力しようとしたら、英語キーボードが切り替えられない。システム環境設定から「キーボード > 入力ソース」を選択すると、「日本語」が見当たらない。CJK (日本語・中国語・韓国語) 関連の入力ソースがことごとく消えている。

input-source

(スクリーンショットじゃ分からないかな...)

困った。日本語入力できないんで、日本語で検索できないのも辛い (iPad で検索はできたけど)。英語で検索をかけても、同じトラブルにハマってた人は見つけたけど、解決策が見当たらない。

でも、何とか戻った。やり方を書いておく。

直し方

すごくシンプルだった。

これだけ。入力ソースを見ると、Google 日本語入力の他に Yosemite 本来の日本語入力も出現した。

input-source-ja

Duet が怪しい?

この問題にぶつかった時、Facebook に困ったと書いた。そしたら、友達から情報が寄せられた。それに寄ると、Duet Display をインストールした人に同様の現象が現れたという。そういえば、ぼくもインストールしたばっかり。

しかも、Duet をアンインストールしたら ATOK も消えたとか (ぼくは ATOK をインストールしてないけど、注意しとこ)。

Duet が原因なのか分からないけど、再び同じ現象が起きたら Duet をアンインストールしてみる!!

ESET Security Pro を Yosemite 用にアップデートした

Mac (Yosemite) を使っていたら、こんなメッセージが出てきて作業を中断されることしきり。困った (スクリーンショットは撮り忘れ)。

/tmp/esets.sock に接続できません: 該当するファイルまたはディレクトリがありません

解決策

近くで同じようなことで困ってた人がいたので、解決策を教えてもらった。なんと、ESET は Yosemite 以前と以後でアプリが別になっているとのこと! 古い ESET をアンインストールして、新しい ESET をインストールする必要がある。

下記サイトから、Yosemite 用の ESET をダウンロードする。

eset

インストール時の注意点を一つ。ESET はアンインストールに専用のアンインストーラーを使う。アンインストーラーはインストーラーに含まれている。古いインストーラーなんて持ってなくても大丈夫。ぼくも持ってない。アンインストーラーは新しい ESET のインストーラーの中に含まれているので、それを使えばいい。

手順は次の通り:

  1. Yosemite 用 ESET をダウンロード
  2. inst_ecspv6_6_yosemite.dmg を起動
  3. インストーラーをダウンロード
  4. インストーラーを起動 (アンインストーラーが表示される)

    eset-installer

  5. アンインストーラーを実行 (旧 ESET をアンインストールしたら)
  6. インストーラーを実行

後はアクティベーションを行なえば OK。これで ESET が Yosemite で不具合なく動くようになる。ハー、良かった。

2014-12-20

Duet Display を MacBook Air で使ってみた

Apple の元社員らが作ったという、iPad/iPhone を Mac の外部ディスプレイに出来るという Duet Display を使ってみた。

MacBook Air 11 インチ (Yosemite) に、iPad Air 2 を Lightning ケーブルでつないで、さあ起動。

Duet Display besides MacBook Air

使い方

使い方は簡単。最初に一手間だけ (対応マシンは OSX 10.9 以降の Mac)。まずは準備。

  1. App Store からアプリをインストール
  2. Mac から本家サイトを開いてドライバーをインストール
  3. Mac を再起動

これで準備終了。

iPad を Mac の外部ディスプレイとして認識させてみる。

  1. iPad で Duet Display アプリを開く
  2. Mac に Lightning ケーブルを繋ぐ

これだけ!

使い勝手

最初、iPad にブラウザーを表示させた時、フォントが滲んでいると思った。少しショボーンとなった。フト思いついて、Duet Display の設定を開いてみた。

Resolution が Regular, Frame Rate が 30 FPS になっていた。一番バッテリーを喰わない (代わりに品質を犠牲にする) 設定。

Resolution を Retina, Frame Rate を 60 FPS に変更してみた。するとフォントがクッキリ表示されて、ディスプレイ品質が向上した。

ブラウザーを表示する分には、美しく、アニメーションもかなり早い動きまでついてくる。

とは言え、完璧とは言えない。

色調の変化には (静止画でも) 追いついてなくて、ブロックノイズが見える。文字の周りや写真のような複雑な色彩にノイズが見えるのは少し残念。ブラウザーのサイズを変更する時、わずかなタイムラグがある。Youtube を再生すると、コマ落ちをあまり感じさせないのは見事。でも、コマ落ちがないわけじゃなく、速い動きにはついてゆけない。MacBook Air のファンが全開で回転し始める。

重い処理を iPad 上で表示するのは非効率的。ただし、Twitter やチャットなどを外部ディスプレイに「押し出し」てメイン作業を MacBook で行なうのであればかなりアリ!

あとがき

iPad を Mac の外部ディスプレイとして使うアプリは今までもあった。ぼくは Air Display を使っていた。過去形になっちゃうのは、やっぱりレスポンスが遅いこと。外部ディスプレイとしての品質が気になったから。

既存外部ディスプレイ・アプリの共通点は「無線」で行なうことにあったけど、Duet Display は「有線」を使う。その分、ディスプレイ品質は「実用」レベルに高い。けれど、専用の外部ディスプレイほどの品質には達していない。

大きな外部ディスプレイを使って「作業」をするなら、iPad で代用するのはまだ厳しい。でも、サブ・ディスプレイとして使うのであれば、iPad x Duet Display は試す価値あり。

Emacs 初心者向け入門書 (英語/電子書籍 only) 予約受付中

ブログ Mastering Emacs の作者 Mickey Petersen 氏が初心者向け Emacs の入門書を作成している。本のための書き下ろしで、ブログ記事を集めたものではないとのこと。販売は電子書籍 (ePub/PDF) 版のみとし、紙媒体化は今のところ考えていない。値段は未定。現在メール・アドレスを登録することで、20% オフの先行権が確得できる。

発売予定は 2015/02。2014-12-20 現在で (計画している 200 ページのうち) 100 ページを書き終えているとのこと。同書は初心者向けだけど、Emacs のパワーユーザーも読めるもの、らしい。

ぼくは、この書籍のメール登録を行なった。2015/02 に発売されたらまたレビューを書くつもり。お楽しみに。

2014-12-19

Github に人間の証明を求められたら...

先月 (11/27 の夜中だったと思う)、Github にログインして驚いた。なんと Github に、ぼくが「人間ではない」とみなされてしまった!! その時のスクリーンショットはこちら。

github-not-human-warning

One of our mostly harmless robots seems to think you are not a human.

Because of that, it's hidden your profile from the public. If you really are human, please contact support to have your profile reinstated. We promise we won't require DNA proof of your humanity.

(訳: 安宅による) 我々のロボットが、貴方を人間ではないとみなしています。

そのため、貴方の (Github の) プロフィールは非公開となりました。もし、貴方が人間であるなら、どうぞサポートへコンタクトを取ってください。貴方のプロフィールは元に戻るでしょう。DNA 判定を要求なぞしません。お約束します。

DNA proof を要求しない件は、Github 流のジョークかな。悪くないジョークだけど、真夜中に Guthub アカウントが (事実上) 停止してしまうのは、下手なジョークより心が凍る。

このメッセージが出たあと Google Chrome をシークレット・モードにして https://github.com/ataka/ を覗いてみたところ、404 Not Found が表示されてた。ぼくが公開してるプログラム全てが非公開になっていた。

github-hide-my-profile

ヤバイ!

人間の証明

「人間の証明」をするために、ぼくがやったことは一つ。メールを書いたこと。それもかなり拙い英文だった。

メッセージの中の「contact support」という文字がサポートへのリンクになっている。これをクリックすると、メール・フォームが開く。タイトルに「Hi, I'm human」と入れ、本文には「あなたのロボットが私を人間ではないというので、このメールを書いた。私は人間です。プロフィール・ページを元に戻してください。」という内容の英文を書いて送信した。

今思うと、かなりひどい文章 (日本語としてもね) だけど通じたらしい。2 日後、ぼくの Github ページは元に戻った (4/29 2:10 AM に元に戻したとのメールが届いてた)。

言い訳をさせてもらうと、その時、本当に眠くて文章を推敲することが出来なかった。ただ、Github に何かテキストを送らねば、と思っていた次第。翌日、改めて「Github のロボットがぼくのアカウントを停止してしまったけど、アカウント停止を解除して欲しい。私が人間であることを証明して欲しいということで、メールを昨日送った。具体的にどうすれば良いのか教えて欲しい。こちらにはすぐに対応する準備がある」旨、追加で英文を送った。でも、そのメールはスルーされたらしく、「Hi, I'm human」のメールに対して返信があった。

実際、「証明」とは人間らしいテキストをフォームから送信できれば十分らしい。あとは、担当者が Github ページを見て、ロボットが作成したものかどうかを「人間の目」で確認し、OK なら解除となる模様。

人間の証明など、どうすればいいのか? 英文でどう書けばいいのか? および腰になって、頭をひねる必要はない。十全を期そうとして時間を費やす必要もない。ただ、Github にアクションすること。これが Github への「人間の証明」になる。

同じように Github から人間の証明を求められて、困るようなことになったら、この記事を思い出してもらえれば幸い。

ChatWork の意見・要望フォーラム

ChatWork に意見・要望フォーラムができている。

chatwork forum

意見や要望を出せるのは当然として、投稿済の意見・要望を閲覧 & 投票することができる。例えば、スクリーン・ショットを見ると「メッセージの書き込みとファイル送信を一度にする」という要望がホット・アイデアのトップに来ている。投票数は 172。ホット・アイデアの 2 位は 93 票で「プログラムのソースコードを挿入したい」というもの。

一番最初に意見・要望を書くのは敷居が高いかもしれない。

さらりと眺めて、好みな要望があれば一票「投票」しておくだけなら、手間もかからないし、他の人がどんな要望を持っているのか分かるので面白いと思う。時間があればどうぞ。

あとがき

最近、この手の「投票」機能付きの要望フォーラムが増え始めた。ぼくの知るところでは、feedly が同様の要望フォーラムを開いている。

要望の見える化は、使ってるユーザーとしてもどんな機能が望まれているか (→ 望まれてる率が高いほど、採用される率が高そうな期待が持てる) という意味で、また自分がコメントを追記してアイデアを更にブラッシュ・アップさせられるという意味で、良いものと思う。

2014-12-14

EPSON BT-200AV と BD プレーヤーで BD/DVD を楽しむ

エプソンからスマートグラス MOVERIO BT-200AV をモニターで借りている (see. clmemo@aka: EPSON のスマートグラス MOVERIO ブロガー・ミーティングに参加した)。前回の記事で Android の画面を Miracast で転送して MOVERIO BT-200 に映し出すやり方を紹介した。YouTube やニコニコ動画が楽しめる。

今回は、オーディオも豪華にして映画を楽しんでみたい。

EPSON MOVERIO BT-200AV

前回は EPSON MOVERIO BT-200 でやれることだけを書いた。今回は BT-200AV (今、モニターで借りているモノ) を使ってやれることを書く。

BT-200 と BT-200AV の違いは何か。スマートグラス本体に違いはない。違いは付属品にある。BT-200AV には Wireless Mirroring Adapter EHDMC10 という機器が付く。

Wireless Mirroring Adapter EHDMC10

EHDMC10 を使うと HDMI からの入力を MOVERIO BT-200 へ Miracast 転送することができる! (MOVERIO BT-200 の画面を HDMI 出力することもできるけど、その話はしない)。

背面を見てみよう。

HDMI の 入力 (INPUT) と出力 (OUTPUT)、リセット・ボタン、そして電源給供用の Micro USB 端子がある。今回使うのは、電源給供の Micro USB と HDMI INPUT だけ。

写真を撮るのに、傾ける台が欲しかったので BT-200 を下に敷いた。何か、コレ、エンタープライズ号みたいね。ウン、スター・トレックが見たくなった。というわけで、観る映画は「スター・トレック」に決定。

接続

では BD/DVD を楽しむ用意をしよう。BD プレーヤー Marantz BD8002 から HDMI で映像を、デジタル出力で音声を分岐させる。図にするとこんな感じ。

Primare I30, Stellavox PW1 はアンプ。Bösendorfer VC2 はスピーカー。これで映像はスマートグラス、音声はオーディオという図式が完成。

Marantz BD8002 から HDMI ケーブルを伸ばして、EHDMC10 の HDMI INPUT に挿し込む。電源を入れて準備 OK。

設定

設定方法は、前記事をなぞってしまうけど、改めて書いておく。

  1. MOVERIO BT-200 で MOVERIO Mirror アプリを起動
  2. MOVERIO Mirror アプリで「Source」を選択
  3. 「接続機器」を選択
  4. 「Wi-Fi Direct」にチェックを入れる
  5. バックボタンで「接続機器」の画面へ戻る
  6. BD プレーヤーを ON にする
  7. EHDMC10 の「Wireless/Pass-Thru」ボタンを押す
  8. 「Wireless Ready」ランプの点滅が点灯になったら準備 OK
  9. EHDMC10 の「Wireless Connect」ボタンを押す
  10. 「Link」ランプの点滅が点灯になったら準備 OK
  11. BT-200 側に接続のポップアップが現れるので「OK」を選択
  12. BD プレーヤーの画面が映る (まで待つ)

鑑賞

ではスター・トレックを BD プレーヤーで再生してみる (ぼくが持ってるのは残念なことに DVD 版。う〜ん、BD 版を買えば良かった)。

部屋を暗くして寝っころがって見る。横幅 100 cm くらいだったから、16:9 のディスプレイでいうと 45 インチ。うちの部屋に置くには厳しいサイズ。それが目の前に写し出される。イイネ。

オープニングは息つくひまがない。宇宙がきれい。外壁が割けて、人が外に放り出されるシーンの光の明滅とか美しい。ああ、ラスト近く。エンタープライズ号が雲の中から木星をバックに浮き上がるシーンは何とも言えない。このシーン大好き。

BD や DVD の「緻密さ=美しさ」ではなく、ひと昔前の映画館の美しさって感じ。

映像のスムーズさだけど、これはちょっとカクつく。無線だから仕方ないのかなぁ? 動きが早いシーンだけでカクつくわけじゃない。動きが遅いシーンでもカクつく。動きが早いシーンだからといっても、カクつかない時はカクつかない。法則性が見つけられない。頻度はソコソコ。

気になるかと聞かれると... ウーン。「スター・トレック」は何度も見ているので、カクつかれてもあんまし気にならないけど、初めて見る映画で (特に重要な場面で) カクつきがあったら嫌かも。

あとがき

オーディオと連携させて、MOVERIO BT-200AV を使ってみた。大画面 x 高音質を楽しむ方法。ぼくは BD プレーヤーしか持っていないので試せなかったけど、AV アンプを持っていれば Apple TV や Chromecast を使って Hulu といったコンテンツも「大画面 x 高音質」な再生が可能。

プロジェクターや巨大テレビがなくとも、大画面が楽しめるのは心踊る。

2014-12-13

Nexus 7 (2013) + Android 5.0 (Lollipop) + EPSON BT-200 で Miracast を楽しむ

エプソンからスマートグラス BT-200 をモニターで借りている。

イベント終了ののち、帰宅して一番最初に試したのは Nexus 7 (2013) の画面を MOVERIO BT-200 にミラーリングすることだった。タブレットの画面を TV に表示する機能では、Apple (iPhone や iPad から) の AirPlay や Google Chromecast が有名。

Google Chromecast ( クロームキャスト )  Wi-Fi経由 テレビ接続 ストリーミング / HDMI / 802.11b/g/n / 1080p ) GA3A00035A16

MOVERIO BT-200 は Miracast という方式をサポートしている。AirPlay や Chromecast の名前に隠れがちだけど、これ、Apple や Google の独自規格ではなく、Wi-Fi Alliance によって策定された、ちゃんとした国際規格。

iPhone, iPad は Miracast 規格に対応していないけど、Android はバージョン 4 系から Miracast に対応していた。ぼくがこの記事で Nexus 7 の後ろに (2013) と入れてるのには理由がある。というのも、Nexus 7 (2012) は Miracast に対応していない!! ぼくの記憶では、Nexus 7 (2012) が日本で発売された頃、Android も最新 OS が同時にリリースされて、それが Miracast 対応していると聞き嬉んだ。ところが、Nexus 7 (2012) が Miracast 対応してなくて臍を噛んだ覚えがある (see. clmemo@aka: Miracast 対応アダプタ PTV3000 〜 Android でも AirPlay みたいなことがしたい)。

Nexus 7 (2013) は Miracast 対応していたのだけど、今度は Miracast を使って画面を映し出す「送り出し先」に興味を覚えなくなってしまった。

そこで現れたのが、EPSON MOVERIO BT-200。

Nexus 7 (2013) も MOVERIO BT-200 も Miracast 対応している。これは楽しむしかないじゃない!!

設定

Nexus 7 (2013) x Lollipop は Wi-Fi と Bluetooth を ON にしておく。

MOVERIO BT-200 を起動したら、アプリ一覧から「MOVERIO Mirror」アプリを開く。

W-Fi Direct の操作を開始します。これによりWi-Fi クライアント/アクセスポイントの操作が OFF になります。

と出てくるので「OK」。

MOVERIO Mirro アプリが起動するので「Source」を選択。

続けて「接続機器」を選択。すると、Android の設定画面へ遷移する。

ここで「接続とネットワーク > その他」から「Wi-Fi Direct」の項目を出して、チェックを入れる。この時、「Wi-Fi Direct」の下に MOVERIO BT-200 の ID が表示されるので覚えておく。

最後に MOVERIO の手元スイッチで「バックボタン」を押す。「接続機器」が「接続されていません」と表示されているはず。

次は Nexus 7 (2013) の設定。設定画面を開いて、「ディスプレイ > 画面のキャスト」を選択。「ワイヤレスディスプレイ」として、先ほどの MOVERIO BT-200 の ID が見えるかな?

これを選択すると、MOVERIO 側で Nexus 7 (2013) から画面共有したいというリクエストがあったとポップアップが現れるので「OK」と答える。十数秒待つと MOVERIO BT-200 に Nexus 7 (2013) の画面が現れる!! ヤッタネ。

Miracast を使って YouTube を見る!

手元の Nexus 7 (2013) の画面が表示されている。MOVERIO には YouTube アプリが入っていなかった (ブラウザーから youtube.com より動画を見ることは可能)。Nexus 7 (2013) の YouTube アプリから視聴履歴を見る。手元のタブレットで操作できるので、使い勝手がいい。やはり使い慣れてる分、操作が思う様に進む。動画の再生が始まったら、タブレットを置いて MOVERIO BT-200 に集中。

遠くの壁を見たり、ひっくり返って天井を見ると、より大画面が楽しめる。

タブレットを操作中、MOVERIO BT-200 を付けていても気にならない。透過式の面目躍如といったところか。ちょっとした作業なら、MOVERIO BT-200 を付けたままでも「映ってる画面が気にならない」というか、「気にしないで済む」。これは大きい。タブレットの操作が終わったら、画面が見やすい方向に顔を向けて、意識を「タブレット」から「スマートグラス」に切り替えるだけ。いちいちスマートグラスを着けたり外したりといった手間はいらない。

Nexus 7 (2013) からはニコニコ動画アプリでニコニコ動画を見たり、Nexus 7 (2013) に入っている動画を Nexus 7 (2013) に入れている動画再生アプリで再生することもできる。

操作性

MOVERIO BT-200 の操作性は「スマートグラス」という分野では「考えられている」と思った。タップパッドを使って PC のマウスを操作する感覚で Android 実機である MOVERIO BT-200 を操作する。アイデアは良い。

残念な点を言えば、「タップパッドで PC を操作する」ことより「タブレットを直接手で操作する」方が使いやすいこと。

では、他にやりようがあったのかと言われると何も思い浮かばない。

というわけで、手元の Android スマホやタブレットが Miracast に対応しているなら、(最初のセッティングに一手間かけるけど) ぜひ使い勝手の良さを試して欲しい。MOVERIO BT-200 がより楽しくなることを保証する。これは面白いよ。

画質

画質はそんなに高くない。今、出回っているスマホやタブレットは Retina ディスプレイを先駆けとした高解像度が主力。

Full HD 動画を 20 インチそこそこの小さなディスプレイで見ている「目」には、大画面で映し出された低解像度な画面が粗く感じる。

これは大画面を楽しむか、高画質を楽しむか、の割り切りになってくると思う。もう一つ言えば、さっき MOVERIO BT-200 をかけたままタブレットを操作した、と書いた通り、デュアル・ディスプレイの新しい形として掴えるのも面白い。

なお、Miracast で飛ばした動画はほんの少しだけどカクついた。これは無線環境に寄る所も大きい。Wi-Fi ルーターを買い換えたいと思っているし、MOVERIO の無線技術もまだまだスペック的に向上の余地があると思うので今後に期待したいところ。

最後に...

大画面で動画を見るなら、音楽はオーディオで聴きたい... と思ったけど、そうは問屋がおろさなかった。つまり、Android の動画を Miracast で MOVERIO BT-200 へ、音声を Bluetooth でオーディオにつなごうと目論んだ。でも、Nexus 7 (2013) は Miracast と Bluetooth の両方を扱うことは出来ないみたい。両方繋ごうとしたら、片方の接続が切れちゃった。残念。

2014-12-10

Android 用 ChatWork アプリ、新バージョンがリリース

先日、私的プロジェクトで ChatWorkEmacs クライアントを開発・紹介した (see also. clmemo@aka: ChatWork に入社しました)。

今日 (2014-12-10, Wed) は公式プロジェクトのお話。

チャットワークの Android アプリがメジャー・バージョンアップした。開発プロジェクト名 The Shard。バージョンは 3.0。

これは Titanium で作られていた前プロジェクトを、(Android 本格の開発言語である) Java で書き直したもの。メリットとして、次の様な事柄が上げられる:

  • 最新 Android OS への追従コスト削減
  • Android 用に提供されているライブラリーの利用
  • iOS アプリと分離することによる新機能追加・バグ修正の独立・開発サイクル短縮

ChatWork for Android 3.0 ウォークスルー

新しい ChatWork アプリは Material Design を採用して UI 構築されている。

簡単に新しくなった ChatWork アプリをウォークスルーしてみる。

まずはチャットルーム一覧。虫めがねマークをタップすると、チャット名をインクリメンタル検索できる。スクリーンショットでは「chat」と入力した。すると、会社名に「chat」が入ってる人達のチャットルームが表示された。ルームの検索が楽にできる。

ChatWork 3.0.3

左上のアイコンをタップすると、サイドバーが現れる。サイドバーの中身は、チャット・タスク・コンタクトそして設定。

Sidebar

一足先に「設定」を見てみる。うん、バージョンは 3.0.3。最新版! ちなみに「ChatWork について」をタップすると、アプリで使っているオープンソース・ライブラリーのライセンス一覧が表示される。気づいてた?

Settings

チャットからルームを選択するとタイムラインが表示される。表示が前バージョンより高速化されたはず。初回だけ読み込みが遅い時があるかもしれない。その時は、バック・ボタンで戻って再表示。う〜ん、コレ、再現性があるのかないのかよく分からなくて困ってる。

Timeline

ちなみに、チャットのタイムラインで画面を右にスワイプすると、その「チャットルーム」のタスク、そしてその「チャットルーム」のファイルを見ることができる。

自分に振られたタスクを全部見る場合は、サイドバーを開いて「タスク」を選択。おっと、この画面はぼくの個人アカウントなんで未完了タスクは一つだけ。

Task

という感じで、新しくなった ChatWork アプリをウォークスルーしてみた。

ぼくは、iOS アプリの開発を進めていて、この Android アプリについてはバグ出しテスターな役割くらいしか関わっていない。でも、自分の Nexus 7 で会社のチャットを見たりするために Android アプリは使ってた。いわゆる、ドッグフードを食べる (自社サービスを使う) ってやつだけど、日に日に使い勝手が良くなっていったのを実感した。

新バージョンの ChatWork for Android 3.0 (The Shard) を楽しんで頂けたら幸い。

Android 5.0 のマルチ・アカウントで Google Play ストア以外のアプリがインストールできない

タイトルに書いてある通り。Android 5.0 (正確には 5.0.1) にアップデートしてから、「所有者」以外のアカウントで「提供元が Google Play ストア以外のアプリのインストール」ができなくなった (Nexus 7 2013)。

「設定 > ユーザー設定 > セキュリティ」を選ぶと、「提供元不明のアプリ」という設定項目があって、これをオンにすると、Play ストア以外からアプリをインストールできる。ところが、所有者以外のアカウントで、この項目を見るとグレイアウトしてしまって、選択そのものができない。

ぼくは個人アカウントを「所有者」にして、会社のアカウントを追加している。会社のアカウントで、テスト用のアプリを入れたりしてるんだけど、これで「Play ストア以外のアプリ」をインストールできないのはつらいなぁ。Play ストアへ申請する前のアプリ検証をやるのが目的なんだからさ。

どこか設定し忘れているのかな? それとも、所有者以外はこのオプションを ON に出来ないのかな? 追加アカウントを「所有者」とほぼ同等の権限にするとか出来ないのかしらん。

Android 5.0 は昨日から使い始めたばかりで、よく分からない。分からないなりに調べてみたけど、検索にこの手の情報が引っかからない。Android 4.4 の頃は出来た。そういう情報は沢山転がってるんだけど、それは分かってるんだよね。問題は Android 5.0 (Lollipop) でどうなのか? ってこと。

誰か情報をお持ちでしたら、教えください。

Android 5.0.1 Lollipop が Nexus 7 (2013) にやってきた

2014-12-09 の夜、ようやくぼくの Nexus 7 (2013) にも Android 5.0 (Lollipop) がやってきた。

バージョン番号は既に 5.0.1 だったけど!!

Android 5.0 has come!

アップデートに 30 分くらい... かな? お風呂に入ってる間にアップデートが終わってた。

デザインがスッキリしてて良いね。今まで、一部のアプリが Material Design 化されてたけど、OS 全体が Material Design 化するとスマートさが際立つ。

Android 5.0.1

バック、ホーム、アプリ一覧ボタンが三角・丸・四角ボタンに変更されたのを見て、Android 5.0 だなぁと感概深い。

今日から Android 5.0 で遊んでいきたい!!

2014-12-09

git で merge 用のブランチを作る利点

master ブランチから大きく fork したトピック・ブランチを master へマージする時のお話。

小さな変更 (数日分) ならまだしも、数週間・数か月近くブランチが分岐したままだと、merge はどこかで conflict する。そこで力技に走っている人を見かけたので、アドバイスした。

merge 専用のブランチを作りなさいよ。

$ git branch
* big-change
  master

例えばこんな風に bag-change branch がある場合、直接、merge は行なわない (トラブルが起きないなら、直接 merge しても構わないと思うけど)。

$ git checkout master
$ git merge big-change

代わりに一回 merge 用の branch を作ってそこで conflict 解消の作業を進める。

$ git checkout master
$ git checkout -b merge-big-change
$ git merge big-change

こうしておけば、merge-big-change branch で取り返しの付かない失敗をしてもブランチを削除すればいいだけだし、master ブランチも big-change ブランチも綺麗なままなので、修正を加えることもできる。

一番好ましくないのは、conflict を起こして、その間 master も big-change ブランチもコンパイルが通らない (もしくはテストが通らない) 状況が続くこと。

意外と、こうやって「作業」を分割して、リスクを下げることに無頓着な人がいるのでエントリーにしてみた。まあ、それだけ git という VCS というか、ワークフローが磨かれて、泥臭い作業に直面する機会が減ったということなのかもしれない。

2014-12-08

空白を含む引数を bash script に渡す

空白混じりの引数を受け取る、bash script の書き方。先日までは引数の「渡し方」を書いてたけど、今回は空白混じりの引数を「渡される側」について。

例えば bash script が 2 つあったとする: a.sh と b.sh

a.sh は b.sh を呼び出す。

#! /bin/bash

token=foo
name="Ludwig van Beethoven"

bash b.sh $taken $name

b.sh は引数を受け取って処理を行なう。例えば、こんなコード

#! /bin/bash

option='-foo -bar'
token=$1
name=$2

some-command $option $token $name

この時、変数 name には二番目の引数が入る。a.sh で渡す「二番目」の引数は "Ludvig van Beethoven" なので、変数 name にもその値が入っていることを期待したくなるけど、実は "Ludvig" という値しか入っていない。引数 "Ludvig van Beethoven" は空白で分割されて 3 つの引数になってしまう。

今回の b.sh の例だと、$3, $4 に "van" と "Beethoven" が入る。

これは嬉しいくない。そこで、変数 $* を使う。すると、空白を含む引数をひと固まりに扱うことができる。引数が 2 つある (今回の様な) 場合なら、shift を使うとスマートにコードが書ける。

#! /bin/bash

option='-foo -bar'
token=$1
shift
name=$*

some-command $option $token "$name"

some-command に渡す引数は一応 "" で囲んでおく方が安全。

あとがき

shell は「空白」を引数の区切りにするので、ハマりやすい。というか、実際にハマりまくったので、メモとして残しておく。

2014-12-05

空白を含む path を bash 変数にして cd する

昨日の続き。

path に空白が含まれていることがある。純粋な Unix 系のディレクトリー構成では見られないけど、Windows や Mac だとタマに... 有名な所では Windows の Program Files とか、Mac の ~/Library/Application Support/ とか。

コマンドライン派の人間が好んで「空白を含む」ディレクトリーを作ることはないので、他人のソースを扱う時や、開発環境が元からそういう仕様だったりして悩まされるかな。

これも、.bashrc に変数として保存できれば楽なんだけど事は楽に進まない。

foodir="/path/to/dir with space"

上の様に「dir with space」という空白入りのディレクトリーに移動したいとする。

そこで変数を使って cd しようとするとエラーになる。

$ cd $foodir
bash: cd: dir: No such file or directory

dir というディレクトリーはないと怒られた。実は変数が渡される時、bash shell によってスペースが「引数の区切り」になってしまっている。この場合、$foodir/path/to/dir with space に展開された後、cd コマンドに /path/to/dirwithspace の 3 つの引数が渡されてしまっている。本当は一つの引数として渡したいのに...

解決策は泥臭いけど、変数を " で囲む。

$ cd "$foodir"

コマンドラインから空白入り path へ移動するのは面倒なので、少し面倒でも助かる。

shell script を作ってる時でも、同じトラブルは起きる。むしろ、shell script でハマる時の方が重症かもね。

2014-12-04

dir path を bash 変数に入れて、dir alias にしている

bash の変数に Directory Path を設定して、cd コマンドでの移動に役立ててる。

例えば、こんな感じ

$ cat .bashrc | grep blog
blog="$HOME/Documents/blog/"

で、コマンドラインからは次のように使う。

$ cd $blog

ぼくはコマンドラインから git コマンドを直接叩くことも多いので、この手の変数を用意している。移動が楽になって便利。特にプログラム・ソースを深い階層に置いていても、移動が一発なので助かってる。

Mac で Emacs.app をターミナルから開く

先日、Mac 用に Emacs をコンパイルした。それは今、/Application/Emacs.app に置いてある。

今まで Emacs.app を起動するのに Finder から Emacs.app を選択していたのだけど、CUI が好きなぼくは面倒になってしまった。で、.bashrc に次のコードを入れて Terminal から起動できるようにした。

alias emacs='open /Applications/Emacs.app'

これでターミナルから emacs で起動できるようになった。快適。

2014-12-03

Advent Calendar 2014 一覧があった!!

2014 年の Advent Calendar 一覧を作っている記事を教えてもらった!

Advent Calendar の説明もちゃんと載ってる:

一般的なAdvent Calendarは,12月25日のクリスマスを楽しみに待つために,12月1日から24日までのカレンダーの日付それぞれの部分が扉になっており,1日ずつその日の日付の部分を開くと天使や動物の絵などが見えるという仕組みになっている

(中略)

これに発想をえて,技術系Advent Calendarでは基本的に,12月1日から25日までの25日間,特定のプログラミング言語縛りなどの緩やかなルールで,毎日別の人 (略) が自分のblogにて記事を書くという形式になっている

本日12月1日より,プログラマ有志による2014年の技術系Advent Calendarが各所ではじまる:インフォメーション|gihyo.jp … 技術評論社 より引用

昨日、ぼく自身、初の Advent Calendar 記事を書いた。

これは会社がやってる Advent Calendar の 2 日目の記事。連作の中で記事を書くのって、自分のブログで書くのと違って緊張する。

閑話休題。

この Advent Calendar のまとめ (?) を見ると本当に多種多様な Advent Calendar が乱立している、と思わされる。これでも、きっと、このリストからもれてる Advent Calendar もあると思うし... まあ、すごいね。

個人的には Emacs Advent Calendar 2014 - Qiita が気になってる。

あ、ぼくの勤務してる会社の Advent Calendar ChatWork Advent Calendar 2014 - Adventar も掲載されてた。嬉しいなぁ。

2014-12-02

ChatWork for Emacs リリース

chatwork.el —— いわゆる ChatWork for Emacs —— を作った。ソースは github にある。今、サポートしている機能は、ルームを選択してメッセージを送信するだけ。

MELPA に登録したので、Emacs の package システムからインストールできる。

背景

過去記事にも書いたけど、2014 年 4 月、ChatWork 株式会社に入社した。同社の主力サービス チャットワーク は会社向けのチャット・サービス (もちろん、個人での利用しても問題ない)。チャット機能にタスク管理をひもづけているのが特徴。一人 5 GB のファイル・ストレージ機能やビデオ通話機能といった機能がある。

IT 企業で働く楽しみの一つに「ドッグフードを食べる」ことが挙げられる。これは、自社サービスを自分たち自身で日常的に使うことを指す。一つ反例を挙げるなら、ぼくはケンウッドという音響メーカーに入社したけれど、就業中に音楽を聴きながら作業することはできなかったし、ケンウッドのアンプやスピーカーを買って使うこともなかった。一方、ChatWork 社では、自社サービス・チャットワークを使って日常的に業務を行なっている。

さて、ぼくは Emacs エディター愛用者。当ブログのタグ・クラウドを見れば、5 番目に多く書いているのが Emacs 関連の記事なことが分かる。このブログ記事も Emacs で書いているし、多くのプログラムを Emacs でコーディングしている。昔は Android のソースコードも Emacs で書いていた。流石に iOS アプリは XCode で書いているけれども... ともかく Emacs から離れられない。

ぼくが会社でチャットワークを使う時は、Emacs でテキストを書いてから、それをチャットワークの入力フォームへコピーしている。なんで、Emacs から直接チャットワークにメッセージを送れないんだろう?

誰もやらないなら、自分でやるしかないじゃない!!

そんなわけで、週末を使って chatwork.el を書いた。ChatWork 社内で ChatWork Advent Calendar 2014 をやることが決まったので、そのネタにもなると思った... りはしないよ!?

Advent Calendar の記事では少し優しめに chatwork.el の説明を書いた。YouTube に 40 秒のデモ・ムービーもアップして、Advent Calendar 記事の中に貼り付けたりもした。初めて ChatWork という名前を聞いた方は、上記記事も併せて読んで頂ければ嬉しい。

インストールと使い方

インストール

インストールの手順を書いておく

  1. チャットワーク・アカウントを作成する
  2. ChatWork API トークンを発行する
  3. 発行した API トークンをコピーする
  4. Emacs の package システムで chatwork パッケージをインストールする
  5. .emacs.d/init.el に以下の一行を追加する
(setq chatwork-token "YOUR CHATWORK API TOKEN")

準備完了。

使い方

用意しているコマンドは 2 つだけ。

M-x chatwork-send-message はミニバッファーからメッセージを入力後、送信先たるルームを選択する。

M-x chatwork-send-message-in-region は予めリージョンで囲んだテキストをメッセージとしてルームに送信する。ルームの選択方法は chatwork-send-message と同じ。

あとがき

久しぶりに EmacsLisp でパッケージを作った。url.el で外部プログラムを呼び出さず HTTP メソッドを叩いたり、レスポンスの JSON コードを json.el を使って解析した。ネット系の組み込み EmacsLisp パッケージを使うのは初めてで、色々とまどった。

MELPA に自分で登録するのも今回初めて自分でやってみた (clmemoblgrep が MELPA に入っているけど、あれは他の方がやって下さった (感謝!))。

url.el, json.el, MELPA の登録については、後日記事を書きたい。自分の得た知識を定着させるために。

chatwork.el については、やりたいことが山積している。メッセージを作成するメジャー・モードを作りたい。タスクの登録を行ないたい。ファイルの送信をサポートしたい。少しずつ進化させていくつもりなので、温かい目で見守って頂ければありがたい。