2015/03/30 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】M11(マイルストーン11)Null安全性の変更、システムライブラリsequence、KDoc

【Kotlin】M11(マイルストーン11)Null安全性の変更、システムライブラリsequence、KDoc


JetBrains社サイトより引用




さてさて、KotlinM11リリースの謎の翻訳連載、四回目です!!
今回で最後。




第1回はKotlinのM11で変わったポイントでAndroid向けのものと、
第2回はCompanion Object、lambda、関数オブジェクトなどについて、
第3回はリフレクションについて紹介しました。


【Kotlin】M11(マイルストーン11)はAndroid開発者のためにある

【Kotlin】M11(マイルストーン11)の目玉、Companion Objectとlamdaと関数オブジェクト

【Kotlin】M11(マイルストーン11)リフレクションも便利になったよ


そして今回はその他もろもろまとめてドン!って感じです。
どれも見逃すわけにはいかないのです!!


ということで、Null安全性の変更、システムライブラリsequence、KDoc etc...について翻訳します。



注:翻訳について





===================== 以下、Kotlinブログの翻訳 =============================



2015/03/29 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】M11(マイルストーン11)リフレクションも便利になったよ

【Kotlin】M11(マイルストーン11)リフレクションも便利になったよ


JetBrains社サイトより引用




前回はKotlinのM11で変わったポイントでAndroid向けのものと、
Companion Object、lambda、関数オブジェクトなどについて紹介しました。



【Kotlin】M11(マイルストーン11)はAndroid開発者のためにある

【Kotlin】M11(マイルストーン11)の目玉、Companion Objectとlamdaと関数オブジェクト




なぜか連載ぽくなっていますが(笑)、今回はリフレクションについてです。
リフレクションの変更も結構Kotlinに影響与えるものだと思いますね。
Kotlinのコンパイルやリフレクションを使ったシンタックスなど色々と波及するところだと思うので、
注目していて損はない!!!


ということで、今回はリフレクションの変更について翻訳します。




注:翻訳について




===================== 以下、Kotlinブログの翻訳 =============================



2015/03/27 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】M11(マイルストーン11)の目玉、Companion Objectとlamdaと関数オブジェクト

【Kotlin】M11(マイルストーン11)の目玉、Companion Objectとlamdaと関数オブジェクト





JetBrains社サイトより引用




前回はKotlinのM11で変わったポイントでAndroid向けのものを紹介しました。
【Kotlin】M11(マイルストーン11)はAndroid開発者のためにある


ただ、その他にも大きな変化があったんです。
新規機能や変更が多いので何回かに分けてこのブログで書いていこうと思います。


今回はCompanion Objectとlambdaの変更、関数オブジェクトの変更について翻訳します。


注:翻訳について


===================== 以下、Kotlinブログの翻訳 =============================


2015/03/21 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】M11(マイルストーン11)はAndroid開発者のためにある

【Kotlin】M11(マイルストーン11)はAndroid開発者のためにある



JetBrains社サイトより引用



2015年3月19日にKotlinのM11(マイルストーン11)がリリースされました。
そしてリリース内容を色々眺めていたのですが、テンションの上がる内容ばかり。
Android技術者がKotlinを使いやすくする前向きな姿勢がJetBrainsのアップデートからも読み取れます。

今回は、変更の中で特にAndroid開発者向けの変更と思われるものを
リリース情報をJetBrainsのブログから雑に翻訳してみました。
元記事はこちらです。
Kotlin M11 is Out!


注:翻訳について

以下翻訳です。







【JUnit】出来るの?かもしれない@Aftrer処理をメソッド単位でSkipする方法






例えば、テストクラスで@Afterな処理があったとして、
どうしてもTestA、B、Cではその後処理が必要なのだけれども
TestEで不要だということありませんか???ありますよね?(多分あんまりない)。

TestEのためだけに@Afterで定義しているメソッドをいじるのはなんだか嫌ですよね



これはテストがNなのに対して@Afterの処理が1なので起こり得る問題なのではないかと思います。
そういう時のためのTipsです。



2015/03/18 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Android】Intentを発行してファイルパスを取得する

【Android】Intentを発行してファイルパスを取得する









Android端末からファイルを選択してファイルパスを取得したいと思った時、
どうやろうかなぁって思い調べたらこの記事を見つけました。

Androidでファイル選択ダイアログができなかったのでIntentでファイル選択アプリを呼び出す




この記事見た時になるほどなぁと思ったんですが、「あれこれする」ってどうすりゃいいんだ、と。
勝手に続きを書こうかなと思います。








・Android端末から外部のIntentを発行してFileエクスプローラのアプリを起動する(Google Driveとか)
・onActivityResultからファイルパスを取得する
・InputStreamを生成する



いたってシンプルです。





ファイルエクスプローラーを開き、指定したファイルパスを取得するソースは以下のとおりです。

    // 識別用のコード
    private final static int CHOSE_FILE_CODE = "12345";
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("file/*");
        startActivityForResult(intent, CHOSE_FILE_CODE);
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        try {
            if (requestCode == CHOSE_FILE_CODE && resultCode == RESULT_OK) {
                String filePath = data.getDataString().replace("file://", "");
                String decodedfilePath = URLDecoder.decode(filePath, "utf-8");
                imageText.setText(decodedfilePath);
            }
        } catch (UnsupportedEncodingException e) {
                // いい感じに例外処理
        }
    }



こんな感じでエクスプローラー向けにIntentが飛びます。任意のアプリでファイルを指定すると
onActivityResultイベントが発生し、ファイルの情報をIntentから取得できます。




Fileインスタンスの取得やInputStreamの生成はこんな感じです。Java SE6が主流なAndroid。多分。

File file = new File(decodeFilePath);
FileInputStream fis = new FileInputStream(file);






IntentからgetDataStringで取得できるというのがまず分かりませんでした。
これが正解っぽい。
file://という文字列はいらないです。接頭辞としてfile://から始まり、端末のフルパスが続くようなので、
先頭の部分を置換で切り取ってます(もしかしたら端末に酔ってはうまくいかないとかあるのかな)。


あと、取得したファイルパスはURLエンコードされてるのでそのまま使おうとするとハマりました。







今回は以下のことを目的にソースとハマりどころを書いてみました。
・Android端末から外部のIntentを発行してFileエクスプローラのアプリを起動する(Google Driveとか)
・onActivityResultからファイルパスを取得する
・InputStreamを生成する


ハマりどころなどはこんな感じでした。

・Intentでファイルエクスプローラアプリに通知する
・onActivityResultで選択したファイルの通知を受け取る
・Intent#getDataStringでファイルパスは取得できる
・file://は不要っぽいので切り取る
・パスはURLエンコードされているのでデコードする





気がかりな点としては端末依存していないか。
汎用的に使えるような処理になっているのかがちょっと気になりますね。
(例えば端末Aでは・Intent#getDataStringが"file://....."の文字列を返し、端末Bでは"//..."になってるとか)


今どきのAndroidな人はこんなこと考えずとも分かるのかなぁ。
あと外部のアプリケーション頼みなので、ダサいですね。

アプリ内部でエクスプローラー相当の機能を設けたほうがアプリによる差異が出なくて
平和なんだろうな。




2015/03/15 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】逆引きKotlinというサイトをはじめました

【Kotlin】逆引きKotlinというサイトをはじめました










こちらの記事で以前にKotlinには逆引きサイトが無いということに関して
言及しました。そして僕の考えとしては、

・Kotlinを使う参入障壁下げる
・日本語の情報を増やす

という観点から必要性を感じていました。


そして、年末に僕の個人的な今年の抱負として、
「Kotlinの逆引きサイトを立ち上げる」という目標がありました。
で、今月作業を始めまして、なんとかベータ版的な内容量ではありますが形に出来ましたので
ご報告としてエントリを書いてます。


そう、宣伝です(笑)


こちらがそのサイトです。

逆引きKotlin



今のところは以下の様なページが有ります

・Kotlinをインストールする
・KotlinプラグインをIntelliJ IDEAに導入する
・KotlinプラグインをAndroid Studioに入れる
・AndroidでHello World
・KotlinをEclipseで動かす(非推奨)
・変数を宣言する
・型を宣言する
・インスタンスを生成する
・配列を生成する
・関数を宣言する
・条件分岐を行う
・ifを式として扱う
・switchみたいな条件分岐がしたい
・ループ処理を行う







サイトに対しての加筆・修正プルリク新規ページ作成のプルリクなどお待ちしています。
基本的には僕が作っていくつもりですが、公開することでなんらかのフィードバックが得られれば嬉しいなという
狙いがあります(他力本願)。








サイトのソースはGitHubで管理してます。 https://github.com/yyYank/kotlin-rev-solution


mkdocsというpython製の静的サイトジェネレーターを利用してサイトは構築しています。
マークダウン方式で書いてますので、ここらへん
.mdファイルを新規作成するか、既存のものに加筆修正してプルリクしていただければ、こちらで内容を確認の上マージ致します。









今回は簡単ではありますが、サイト開設のアナウンスと、サイト開設の経緯、
また、ソースは公開状態であり、どなたからでもリクエストを受付けているというお話でした。


このサイト開設により、Kotlinを気軽に試せる方が増えてくれればなぁと思っています。


最近の話で言うと、きりみんさんの某記事でKotlinに一気に注目する人が増えたのが
嬉しい誤算でなんだかあっけにとられています笑

2015年のAndroid開発はKotlinで決まりかもしれない - みんからきりまで




冒頭でも述べたように、まだベータ版といったレベルで情報量は少なく、
「逆引きって言う割には逆引出来ないじゃん」みたいな状態ですが、
地道に情報を増やしていき網羅的なものにしていきたいなぁと思っていますので、
温かい目で見ていただければなぁと思っています。。。。








2015/03/01 このエントリーをはてなブックマークに追加 はてなブックマーク - 続・【Selenium WebDriver】wait処理のCustomConditionを作る

続・【Selenium WebDriver】wait処理のCustomConditionを作る



http://www.softwaretestingclass.com/what-is-selenium-webdriver-selenium-training-series/より引用


前回に書いた記事の waitのCustomConditionなのですが、微妙な気がしたので書き直しました。