2014年11月8日土曜日

Android : AlertDialog のタイトル下の線(Divider)の色を変更する


このエントリーをはてなブックマークに追加


id から Divider 用のラインに使われている View を取得して setBackgroundColor で色を設定します。
(NumberPicker の時と同じような方法です。)

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.dialog)
       .setIcon(R.drawable.ic)
       .setMessage(R.string.dialog_msg);
//The tricky part
Dialog d = builder.create();
d.show();
int dividerId = d.getContext().getResources().getIdentifier("android:id/titleDivider", null, null);
View divider = d.findViewById(dividerId);
divider.setBackgroundColor(getResources().getColor(R.color.my_color));


参考 : How can I change the color of AlertDialog title and the color of the line under it

Android Stduio : Generate Signed APK 時の MissingTranslation エラーを回避する


このエントリーをはてなブックマークに追加
values 以下の string リソースを持ったファイル(一般的に strings.xml, arrays.xml)の resources タグに以下のような属性を追加します。

<?xml version="1.0" encoding="utf-8"?>
<resources
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="MissingTranslation">

この方法だと、以下のように個別の item に translatable="false" をつけることなく一括で設定できます。

<string name="hello" translatable="false">hello</string>

Settings の Inspections から Incomplete translation の設定を Error から Warning にしても、build.gradle で lintOptions に abortOnError false をつけていても Generate Signed APK で署名付き APK を作るときはどうしてもエラーでビルドが中断してしまっていたので、この方法で解決しました。

参考 : Avoid Android Lint complains about not-translated string

『Race Against The Machine』 感想とレビュー


このエントリーをはてなブックマークに追加


Race Against The Machine: How the Digital Revolution is Accelerating Innovation, Driving Productivity, and Irreversibly Transforming Employment and the Economy(サブタイトル長!)を読みました。いつか買って放置してしまっていたものを Kindle Voyage 購入をきっかけに再発見して読んだのですが、かなり良かったです。

コンピュータ技術の向上がどれだけ生産性に大きなインパクトを与えているか、という説明と、その結果、機械・テクノロジーが人間の労働機会はどんどん奪われている、という現状について書かれています。

コンピュータ技術は、他のあらゆる産業で使用されているため、その発展の影響力は非常に大きい、ということがよく理解できました。

問題として印象的な点は、現在の労働需要がU字型になってきていて、中間レベルの知識階級の仕事がどんどんコンピュータに取って代わられているという点です。U 字型の上の方はコンピュータによる自動化・ルール化がまだできていない職業、下の方は工場の工員など手作業を伴うような職業なわけですが、自分はまさにその中間層辺りにいる気がするので、危機感を覚えざるを得ません。

社会としての対応策としては、テクノロジーを敵として競うのではなく、テクノロジーを上手く用いて生産性を上げられるようにする、つまり compete against machines ではなく compete with machines ということで、起業(労働機会の創出)方法を含めた教育策の改善を挙げられています。

とりあえず、個人としては、コンピュータが取って代わることのできない領域の知識・経験を身につけ、U字型の労働需要の上を目指すという方向になるのではないかと思いますが、なかなか厳しい道ではあります。

ちなみに、生産性が上がることで「そもそも働かなくてもよくなるのでは?」という考えについては、仕事によってもたらされる、社会に貢献しているという実感は重要であり、「働きたくても働けない状況と、働かないという選択ができる状況は異なる」としてフランクリン・ルーズベルトの以下の言葉を引用されています。
(...) Demoralization caused by vast unemployment is our greatest extravagance. Morally, it is the greatest menace to our social order.
 この辺りは、現在における、退職された方の生きがいについての問題が広がる感じですね。


いろいろ考えさせられる良い本でした。

2014年11月7日金曜日

WPF : Datagrid の一番下の行にスクロールする


このエントリーをはてなブックマークに追加
参考先にいくつかあった方法の使い分けについて。
サンプルコードは C# です。

方法1. ScrollIntoView を使う


ScrollIntoView の引数はオブジェクトなので最終行に相当するオブジェクトがわかっていればそれを使います。

myDataGrid.ScrollIntoView(itemInRow);


Items プロパティの Count と GetItem で最終行のオブジェクトを取得することができるので、以下のようなコードにすると常に動くのではないかと思います。

myDataGrid.ScrollIntoView(myDataGrid.Items.GetItemAt(myDataGrid.Items.Count - 1));


また、DataGrid の CanUserAddRows プロパティが true の場合は、DataGrid の最終行に追加用の行が挿入されているため、追加用の行を CollectionView.NewItemPlaceholder で指定することでスクロールできます。

myDataGrid.ScrollIntoView(CollectionView.NewItemPlaceholder);


方法2. Daragrid のスクロールビューを取得して操作する


少々煩雑ですが、常に使えるようです。ScrollIntoView が使えないような状況があれば、こちらの使用を検討します。

if (mainDataGrid.Items.Count > 0)
{
    var border = VisualTreeHelper.GetChild(mainDataGrid, 0) as Decorator;
    if (border != null)
    {
        var scroll = border.Child as ScrollViewer;
        if (scroll != null) scroll.ScrollToEnd();
    }
}

参考 : How to autoscroll on WPF datagrid

2014年11月5日水曜日

Kindle Voyage 購入レビュー : ページめくりボタン!


このエントリーをはてなブックマークに追加
Kindle 3 から始まり新型が出るたびに Kindle を買い続け、Voyage で 5台目になりました(3, PW 2012 Wifi, PW 2012 3G, PW 2013 3G, Voyage)。

スペック的な説明は Engadget : アマゾン Kindle Voyage 正式発表、高解像度で歴代最薄・最軽量の高級モデル や Gizmode : Kindle Voyage、スクリーンの違いはさすがに歴然 のようなガジェット系ニュースサイトを見るのがベストだとして、結局どう感じたの?という個人の感想をつらつら書こうと思います。

ちなみに今回購入したのは Wi-Fi + キャンペーン情報つきモデルです。


Kindle PW (2013)とスペック的な差は感じる? → 意外に軽さはすぐ感じた。ページめくり速度はあまり。


大きさ、重さはカタログスペック的なもので、実感することはないかと思っていましたが、以外にも持った瞬間「お、ちょっと軽い」と思いました。右手で、ディスプレイ側からみて右下1/4で全体を支えるような持ち方をしているので、少し全体がコンパクトになったことも影響してるのかもしれません。これは嬉しい誤算です。

一方、普通の文字ベースの本においてはページめくり速度の違いはあまり感じませんでした。 PW と Voyage を横に並べて試してみても、ほとんど違いはわかりません。ただ、後述するページめくりボタンのお陰で「ページをめくる」という行動全体で見た場合はスムーズです。あと漫画の場合は速度差を感じました。


ページめくりボタンはどう?→ 最高!


ページをめくるたびに指を動かさずに済む、というのはやはりいいです。 3以来。設定で感度を選べて、3のハードウェアボタンよりも軽い力で動かせます。慣れるまで、押したつもりが反応しないということが何度かありましたが、5分くらい弄っているうちに意図通りに動かせるようになりました。

デフォルトで、ページめくりボタン反応時に Kindle が微妙に振動する設定になっているのですがこれはオフに。特にフィードバックがなくても困らないくらいにきちんと動いてくれます。

戻る方のめくりボタンはちょっと上の方にあって自分の手ではすこしずらさないと届かないので、戻るときは画面スワイプの方を使ってます。


自動明るさ調整はどう?→ とりあえず違和感なし。


あまり明るさが変化する環境で読むわけではないのでなんとも言いがたいですが、とりあえず自動設定にしたところ、良い感じに調整されたのでそのまま自動設定を使っています。


漫画は読める? → 読める。解像度の向上とページめくりの速度アップを感じる。


かなり実用的なレベルです。そこそこのスペックのタブレット以上の快適さだと思います。
こうなるとネックになるのは容量(4GB)ですね。多数の漫画コレクションを突っ込むには心もとない容量です。メインの漫画リーダーはタブレットを使いつつ、Kindle には新しい or お気に入りの漫画を数十冊入れておいて不要になったら消す、みたいな使い方をしようと思います。


キャンペーン情報はどう感じる? → 起動中は気にならない。待ち受け時と待ち受け復帰時に少し邪魔。


今回はじめてキャンペーン付きのモデルを買ったのですが、起動中はほとんど邪魔には感じませんでした。リスト表示にしてるんですが下1/10 くらいに広告バーが出ているだけで、しかもコレクションの中に入った時点でその表示も消えると。

ただ、待ち受けがダサくなるのがいただけないですね。さらに待ち受け復帰時に電源ボタンを押した後スワイプ操作が必要になるのもちょっと嫌です(キャンペーンなし版は電源ボタンを押すだけでよい)。Voyage のせっかくのプレミアム感が損なわれますね。差額分のお金を払って消せるなら消したいなー、という感じです。まぁ慣れたら気にならなくなるのかもしれません。実際に害があるというよりは、精神的なものですね。




とりあえず届いてみて数時間触ってみた感触はこんなところ。
「ページめくりボタン」+「小型軽量化」は期待以上で、良い買い物ができました。

よろしければオーナーライブラリー おすすめ本まとめ(洋書含む)+検索方法 と
Kindle 洋書オススメまとめ(とりあえず10冊)もどうぞ。

2014年11月3日月曜日

『アイネクライネナハトムジーク』 感想


このエントリーをはてなブックマークに追加


今日は移動時間があったので アイネクライネナハトムジーク を購入して読みました。

伊坂幸太郎の、この手の時間軸と登場人物が不規則に入り組んで短編が繋がるタイプの小説、たびたび「誰だっけ?」となって読んでて疲れました。Kindle だとパラパラっと前に戻って確認するのも面倒ですし、今回は特に登場人物が多くて。。。

あとがきに
僕の書く本にしては珍しく、泥棒や強盗、殺し屋や超能力、恐ろしい犯人、特徴的な人物や奇妙な設定、そういったものがほとんど出てこない本になりました。ですから、普段の僕の本に抵抗がある人にも楽しんでもらいやすくなったのでは、そうであってほしい、と期待しています。
とあったのですが、僕はどちらかといえばそういう本(『陽気なギャング』とか『マリアビートル』とか)は大好きなので、今回の本はちょっと物足りない感じも。

まぁ「伊坂作品に期待していたものとは少し違った」というだけで、つまらなかった、読むのをやめようかと思った、というわけではないです。良い時間の使い方ができました。移動中は新しい本を読むのが一番ですね。

2014年11月1日土曜日

『LIFE PACKING』感想とレビュー : 何を大切にするかを考えるきっかけに


このエントリーをはてなブックマークに追加


2014年11月の Kindle オーナーライブラリでは LIFE PACKING 未来を生きるためのモノと知恵 を無料で読みました。

写真が主体で文章は少なめ、パラパラめくる感じで軽く読了です。普段はこの手の本を手に取ることはあまりないので良い刺激になりました。

紹介されているもの自体は、著者の職業柄からかガジェット類、高級路線の音楽系の機材、調理器具がそこそこの数あったりと「自分もこの人の真似をして断捨離しよう」という参考にはあまりならないでしょう。というかならなかったです。

でも、そういう個性が出る製品を、ある個人の「必需品」として、想いとともに紹介していることにこの本の面白さがあると思います。

アンケート・多数決で決めたような必需品のリストを紹介されても多分つまらないですよね。

「こんなものあるんだ、これはいいかも」とか「これは自分にはいらないなー」などと思いながら読み終わった後に、さて自分の必需品はなんだろう?と考えを巡らせる気にさせてくれる『個』の出方がいい感じです。

自分も近いうちに必需品リストみたいなものを作りたいですね。きっと、自分の価値観の整理にも役に立つんじゃないかと思います。


その他 Kindle オーナーライブラリおすすめリスト はこちらにまとめていますので、よろしければ参考にどうぞ。