Meblog

このブログ記事は個人の見解であり、所属する組織の公式見解ではありません

Emoji Reading

Emoji is once again not so good for Unicode… | Sorting it all Out, v2!

leetってのは初めて聞いたけど、アルファベットを他のASCII文字で代替して書く、一種のネットスラング文化のようだ

'leet'という単語も'1337'で書き換えられる。

日本でもIDとかハンドルネームで散見するものの、やはりアルファベットの文化圏でないために、あまり広まらなかったようだ。

          • -

件の記事では、過去事例の引き合いとしてleetを出しつつ絵文字のdescriptionが不完全なために、読み上げがうまく機能しないことに言及している。

しかし、この問題はleetとは少し性質が異なると思う。leetは単なる文字の別表記にすぎないからだ。leetを解読してみれば、単一の英単語になり、文章に単射可能である。これに対し表意文字である絵文字は単一の文章に単射可能でない。このため、意味に幅がある絵文字は文脈に無視して文字情報や音声情報に変換すると、どうしても違和感がでてしまう。

この問題はleetよりも顔文字に類似していると思う。画像データか文字データか、という違いよりも
表音文字表意文字かの違いがかなり大きいように思う。

この問題を解決するには、文脈による意味の変化と、活用・品詞の変換が必要に思う。
しかし、この解決法だけでは明らかに不十分だ。

完全な解決をみるには、個人間での絵文字へ印象の差をうめなければならない。印象によって、変換の結果がことなる可能性があるからだ。
個人差とまではいかないまでも、文化間では明らかに顔文字への認識に差があるだろう。
個人的にはこれは文脈による問題よりも難しいように思う。

満員電車

最近研修があり、スーツを着込んで電車で一時間半かけ通勤した。2日間の研修なんだけどね。

なんともまぁ悪夢というか。
よく世のサラリーマンは毎朝コレに耐えてるなあというか。

        • -

僕は普段私服で会社にかよっている。しかも歩いて20分のところにあるので、徒歩通勤だ。
定時出勤なので、8:50の始業時間に出勤してないといけないんだけど、通勤ラッシュというものを体験したことがない。

さかのぼって、学生時代も電車通学していなかった。
ラッキーなことに実家とキャンパスが近く、十分に自転車通学できる範囲だったのだ。

電車通勤すら経験の無い自分が、スーツを着て早起きをして電車通学するなんて、なかなかない機会だったのだけれど、これがなんとも21世紀とは思えない体験だった。

朝、通勤時間を考慮し、1時間早くおきる。

そして、約100分間の通勤時間。
世間の平均からしてみれば、大して長い通勤時間ではないと思うんだけど。実際体験してみると、これがなかなか大変なことだ。

長い乗り換えに、満員電車。
通勤時間なので、給料なんて出ていないが、一日の中で一番疲れる時間の一つだと思う。

会社について始業するころには、もう疲れている、
一刻も早く仕事は終わりたいが、帰りの満員電車のことを考えると憂鬱になってくる。

    • -

この延々とつづく電車通勤という儀式は、サラリーマン特有のものだけど、実は意味なんてなものだ。

ましてや、満員電車なんてのは、21世紀になって久しいのに、未だ解決解決できない信じがたい労苦である。

  • -

この情報化社会においては、技術的にはリモートワークも可能であるし、フレックス勤務だって
かなり市民権を得ているように思う。

リモートワークやフレックス勤務などで、技術的にも制度的にも、満員電車にのる必要性なんてどこにもない。

それにこれらを効率的に導入すれば通勤時間を抑えられ、会社だって広大なオフィスを用意しなくてすむ。
そうすれば、賃料も抑えられ、割りといいことづくめだ。

この改善が全く進まないのは、上層部のリテラシの低さと、日本の「我慢すればいい」という美意識のせいだろうと思う。

長々と書いたけど、実はこのあたりを詳しく掘り下げる気はない。。
(論じる能力もないし、今まで嫌というほどくりかえされた議論だからだ。)

過去の事例を鑑みると「フレックスを導入するとやっぱり効率が下がった」とか、「リモートワークなんて制御不能だった」なんて反例は容易に見つけることができる。

しかし、この現状は、人のストレス度合いとしても、業務の効率化という観点からしても、決して最適解ではないと思う。
これから打破すべき現状だし、解決していかなければならない問題だと思っている。

PSPと私

今更PSPタクティクスオウガなどプレイしてみる。

PSPを手に入れたのは最近だから今のタイミングで仕方ないのだ…

 

PSPは最近なんとなく手持ち無沙汰でゲームしたくなる事があり、中古品を手に入れた。

本体は箱なしだったけど、かなり状態のいいやつを手に入れた。6500円くらい。

初期のものは、遊んでいるうちにディスクが飛び出してくるというウワサを聞いたから、避けた。携帯ゲーム機のくせにディスクを読む音がするのが、すごく違和感がある..

 

ところで、これむずいなあ。普通にキャラクターががしがし死んでいく。
スーパーファミコン版とくらべると、死ぬのが3回までゆるされていたり、履歴を辿って前の手番から始められたりして、かなり簡単になってはいると思うんだけど。それでもまだ難しい。

------

どうも電車の中や外食してる間など、公共機関で携帯ゲームをするのは気が引ける。オトナだし。
周りを見てみると、割りと平気でPSPやらDSやら大人も楽しんでいるのがわかる。
よく見る光景ではあるのだけど、自分の中ではまだまだ違和感がある。
もしかしたら、気にしていないのは彼らプレイヤー自身だけなのであって、知らず知らず奇異な目で見られてるのではないか、と思うのだ。
そんな中、PSPを颯爽と持ち出してプレイする勇気がわかないのだ。

 

しかし、既にスマホゲームはかなりの市民権を得てるように思う。
たぶんこの大きな違いは、スマホの場合はゲームに特化したデバイスでなく、ぱっと見ではゲームをしているのか、まとめサイトをみているのか、メールみてるのかわからないからだろう。

-----

あんまり電車乗らないから、関係ないっちゃ関係ないんだけどね。
たまたま出張で電車乗る機会があったってこと

無題はやめようかな

いろいろためしためし

    • -

なんとも自堕落な生活を送りがちなので、英会話教室など検討し、おためしコースを申し込んでいる。
とはいえ、特に英語を本気で学ぶ気はなく、なんというか、とりあえずの暇つぶしになればいっか、程度のもので。
いよいよ社内でTOEIC受けないと、ってなったときに対応しようかと。

これでも、そのうち、TOEICじゃなくて、そのうちTOEFLとかIELTSとかに切り替わっていくのかしら。。
すると、また考えないといけないな。

    • -

先日買おうかどうか迷った本
(タイトル忘れた。。)

なんか古いんだけど、結局ブートローダとかの仕組みって変わらないから、買う価値もありそうだけど。
この手の本って高いし、読破するのも結構しんどいから、買うのに結構決心がいるんだ。
どうせ暇なんだし、とりあえず買ってから考えるのもありだな。

Amazon.co.jp: Embedded Android: Karim Yaghmour: 洋書
やっぱ買うならおらO'REILLYかな、という気もするが、英語か。
ドヤ顔するにはちょうどいいけどな

あるいは
Amazon.co.jp: 基礎から学ぶ 組み込みAndroid: 坂本 俊之, 出村 成和, 渡邊 昌之: 本
このあたりかな。

無題

ちょっと見た目かえた。
twitterとかのリンク先はまだ設定していない。どうすっかね。
本当はアーカイブページにリンク貼りたいけど、はてなにはそういう機能ないのかね。
一気に参照したいんだけどな。

      • -

retconという単語がある。

Retroactive continuity - Wikipedia, the free encyclopedia

Retroactive-continuityの略らしいんだけど、意味がよくわからない。"遡及関連"...?なんだかわからない。

英和には乗ってなかったんだけど、要するに今までのストーリーを何らかの後付で覆すことのようだ。"大どんでん返し"か。この日本語より狭義にはなるイメージだけど。

この単語を調べるにあたり、困ったのがWikitionaryやWikipediaで出てきたretconの例。いろいろなフィクションが紹介されているんだけど、どれもあんまり知らないストーリーだ。これじゃ理解できない..

無題

もっと情報の粒度を落として色々書き残そう。もともとそういう目的で始めたんだった。
「無題」ってはそういう日記的なものってことで。なんで素直にタイトルを「日記」としないかというと、なんとなく馬鹿っぽいから。

やっぱ見た目とかもっと手を入れたほうがいいかもなあ。

            • -

DNSについて

しきりに.tokyoを宣伝しているのを見かけるようになった。
.tokyo 東京のドメイン誕生。一般登録開始 380円|お名前.com

それにしてもDNSの業者っていまいちブラックボックスでよくわからない。
要するに固定IPアドレスを取得できたら、それをひもづけるドメインを取得して、そのドメインDNSサーバーに登録する。そんで、名前が要求されたら、そのIPアドレスを返す。もし、要求されたサーバーが当該のドメインを持っていなかったら、上位のサーバーに問い合わせる。で、DNSのルックアップテーブルを更新するってのが、だいたいの流れだと思うんだけど、これだと結局どうやってドメインを登録するのかがわからない。自分でDNSサーバーに登録しにいくのかな、みたいな。

結局はっきりとまだ答えは得れていないんだけど、結局承認する組織があって、そこが業者指定して、登録ができるってわけね。

wikipediaたち
ICANN - Wikipedia
日本ネットワークインフォメーションセンター - Wikipedia


日本語バージョンがねえ..時間があったら読もう。
ICANN


よく教科書なんかに「インターネットは誰のものでもない」なんて書かれてるけど、まあ結局そうはいかないよねってとこか。DNSしかり、HTMLとか広く流布してるフォーマットだって利権は多く絡むわけで、放置ってわけにもいかないしね。

            • -

職場で記事拾って読んだりするんだけど、結局全部読み切れなかったり、リンク失ったりで問題ありなんだよなあ。ここに書くことで少しでもアウトプットできればいいんだけど。あ、誰かの役に立つってわけでなくね。

Important Behavior Changes

Android 5.0 APIs | Android DevelopersのImportant Behavior Changesを全文訳しました。誤訳、ツッコミ、入れるべき訳註あれば教えて下さい。

      • -

Important Behavior Changes (重要な動作変更)

すでにリリース済みのAndroidアプリがある場合、Android5.0による影響があるかもしれません。注意をお願いします。

新しいAndroid Runtime(ART)に対するテストを行っていない場合

4.4では試験的にAndroid Runtime(ART)を導入しました。4.4ではARTは代替の機能であり、デフォルトではDalvicが使われていました。Android5.0ではARTがデフォルトのランタイムになります。

ARTの新機能の概要を見るにはIntroducing ARTを参照してください。主な変更点としては次のようなものがあります。

ARTへの乗り換えでは、ほとんどのアンドロイドアプリは変更の必要はありません。しかし一方で、Dalvicでは動いていたものがARTでは動作しない、という技術も存在します。最重要な課題についてはVerifying App Behavior on the Android Runtime (ART)を参照してください。特に中止すべき事項として以下が挙げられます。

  • C/C++コードを用いるためのJNIを用いている場合
  • 非標準のツール(難読化などの)を用いている場合
  • compacting GCと相容れない技術を使っている場合(現在、ARTではCompactingGCは実装していないが、Android Open Source Projectで進行中です)

通知を用いている場合

通知をAndroid5.0のアカウントに変更することに注意してください。Android 5.0 に対応する通知のデザインについて詳しく知りたい場合にはhttp://developer.android.com/design/patterns/notifications.html:notifications design guideを参照すること

マテリアルデザインスタイル

マテリアルデザインを適用しているため、通知は白背景(もしくは薄い色)の上に濃い文字で描かれます。

音とバイブレーション

Ringtone, MediaPlayer, Vibratorクラスを用いて音やバイブを扱っている場合には、このコードを削除し、システムがpriorityモードで正しく通知できるようにしてください。もしくはNotification.Builderメソッドを用いて、音やサウンドを追加するようにしてください。

RINGER_MODE_SILENTを設定すると、新しいpriorityモードが設定されます。端末のPriorityモードを元のままにしておきたい場合は、RINGER_MODE_NORMALかRINGER_MODE_VIBRATEを設定するようにしてください。

今まではAndroidはSTREAM_MUSICをタブレット端末のボリュームコントロールにおけるマスタとして用いてきました。Android 5.0では、マスタボリュームはフォンでもタブレットでも統一され、STREAM_RINGかSTREAM_NOTIFICATIONでコントロールするようになりました。

ロックスクリーン上の通知

Android 5.0のデフォルトでは、通知はユーザのロックスクリーンに出現するようになりました。ユーザは機密情報が表示されるのを防ぐかどうかを選ぶことができ、これを選択した場合には、システムは自動的に通知上のテキストを修正します。この通知をカスタマイズするにはsetPublicVersion()を使います。

メディアプレイバック

プレイバックステータスを表示したり、コントロールを渡す通知を実装していた場合、RemoteViews.RemoteViewをカスタムするのではなく、Notification.MediaStyleテンプレートを使うことを検討してください。どちらの実装方法を選んだとしても通知のvisibilityをVISIBILITY_PUBLICに設定してください。これはロックスクリーンからのアクセスを可能にします。また、Andrid5.0の初期の時点で既に、RemoeControlClientではもうロックスクリーン上に表示しないことに留意してください。詳しくは「RemoteControlClientを使っている場合」を参照してください。

ヘッドアップ 通知

通知はデバイスが(デバイスがロックされておらず、スクリーンがON状態である)アクティブのとき、小さなフロートウインドウの中に表示することができます(ヘッドアップ通知と呼ばれています)。ヘッドアップ通知は、今までの通知のコンパクトにしたものに似ていますが、アクションボタンを表示できる点が異なります。ユーザはヘッドアップ通知上のボタンを押すことによって、対応するアプリを起動することなく、通知に反応したり、無視したりすることができます。

どのようなときにヘッドアップ通知が出るか、その条件を以下に上げてみます。

  • ユーザのアクティビティがフルスクリーン(fullScreenIntent)のとき
  • 通知の優先度が高く、通知音やバイブを用いているとき

既に今までのアプリにこのような使用場面があったとき、ヘッドアップ通知が正しく出ることを確認して下さい。

RemoteControlClient を用いている場合

RemoteControlClientは非推奨となりました。その代わりにMediaSession APIが使用可能となります。

Android5.0のロックスクリーンはMediaSessionやRemoteControlClientの遠隔操作UIを表示しません。その代わりにロックスクリーンの通知を介したplaybackコントロールが使用可能です。これはアンロック状態とロック状態で一貫性のあるUIを提供するよう、playbackではメディアボタンを表示する以上のコントロールが与えられます。

これを実現すべく、Android5.0ではNotification.MediaStyleテンプレートを新たに導入します。Notification.MeiaStyleはアプリのメディアプレイバック通知に埋め込まれたボタンにNotification.Builder.addAction()によって追加した通知アクションを変換します。システムに通知が現在再生中のメディアを制御するということを知らせるためには、セッショントークンをsetSession()メソッドに渡します。

通知をロックスクリーンに表示しても(ロックスクリーンのセキュリティがかかっていなくても)問題ないことを確認し、通知のvisibilityをVISIBLY_PUBLICに設定してください。詳しくは「ロックスクリーン通知」を参照してください。

getRecentTasks()を用いている場合

Android5.0の「起動履歴のドキュメントとアクティビティ並列表示」機能のイントロダクションにもあるように、ActivityManage.getRecentTasks()メソッドはプライバシー強化のため非推奨となりました。後方互換のため、このメソッドはデータのサブセットを返します。また、このサプセットは呼び出し元の自タスクやHomeなどのタスクを含んでいます。もしこのメソッドが自分の自分のタスクを返してしまう場合、getApTask()をお使いください。

NDKを用いている場合

Android5.0は64-bit systemをサポートしています。64-bit拡張はアドレス空間とパフォーマンスを広げる一方、既存の32-bitシステムも完全サポートします。64-bitのサポートは暗号化のためのOpenSSLのパフォーマンスも向上させています。また、このリリースは新たなnative media のNDK APIOpenGL ES 3.1のネイティブもサポートしています。

Android5,0で提供される64-bitサポートを用いるには、NDK Revision 10cをNDKページからダウンロード、インストールしてください。NDKの重要な変更やバグフィクスの状況についてはリリースノートを参照してください。

Serviceにbindしている場合

Context.bindService()メソッドは明示的インテントを必要としました。暗黙的インテントを受け取った場合にはExceptionを投げます。アプリのセキュリティのため、サービスをスタートするときやバインドするときには明示的インテントを使用するようにしてください。そしてサービスのインテントフィルターは宣言しないようにしてください。