2016/01/17 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】BooleanフィールドはisXXXという命名が推奨されている

【Kotlin】BooleanフィールドはisXXXという命名が推奨されている

カテゴリ: ,




らしいです。
元々はKotlinのbooleanのアクセスって変じゃない?って話で。

Kotlinの勉強会に行ってきて、その時の懇親会でJetBrainsの@yanex_ruさんと@ngsw_taroさんの間でそういう話が繰り広げられました。
(勉強会のレポはまた別で書こうかな)




@yanex_ruさんはJetBrainsでKotlinコンパイラとKotlinのAndroid対応をやっているそうです。




話題として、Kotlinのbooleanのプロパティアクセス変じゃない?ってなってたのは2点です。

1.JavaのbooleanのクラスフィールドがKotlinからisXxxというプロパティとしてアクセスされる

JavaとKotlinでフィールド名が変わっちゃうのは違和感ありますよ、って主張ですね。


ソースで言うと、こういうことです。

Java
public class JavaBooleanSample {


    private boolean hoge;
    private boolean fuga;

    public boolean isHoge() {
        return hoge;
    }

    public void setHoge(boolean hoge) {
        this.hoge = hoge;
    }
}


Kotlin
    val sample = JavaBooleanSample()
    // setterアクセス
    sample.isHoge = false
    // getterアクセス
    sample.isHoge


2.KotlinのbooleanプロパティはJavaからgetXxx、setXxxと見える

KotlinでbooleanのフィールドはisXxxになって欲しいのにsetXxx、getXxxになっちゃうよって話です。
ソースで言うと、こんな感じです。

Kotlin
class KotlinBooleanSample {
    var hoge  = true
}

Java
public class AccessToKotlinBooleanAccessor {
    public static void main(String... args) {
        KotlinBooleanSample sample = new KotlinBooleanSample();

        // Kotlinではvar hoge = true
        sample.getHoge();
        sample.setHoge(true);
    }

}






こういうことなんだそうです。

Kotlin
class KotlinBooleanSample {
    var isFuga = true
}


Java
public class AccessToKotlinBooleanAccessor {
    public static void main(String... args) {
        KotlinBooleanSample sample = new KotlinBooleanSample();

        // Kotlinではvar isFuga = true
        sample.isFuga();
        sample.setFuga(true);
}





つまり、Kotlinではbooleanのフィールド変数は
isXxxと宣言するのが正しい。
そしてJavaのフィールドのxxxはKotlinからはisXxxとしてアクセスされる、という仕様らしいです。




@yanex_ruさんによると
・isXxxというアクセスが英語の文法的に自然
・Javaとの相互互換性を考えると、やりやすい

といった理由らしいです。(懇親会でさらっと聞いたので間違ってたらすみません)


確かに、よくよく考えてみるとJavaがbooleanのアクセサメソッドの命名規約を特別扱いしてるとも考えられますもんね。
と考えるとKotlinがこういった対応をとるのは自然なのかなぁとか思いました。




一応作って検証しました。




ちなみにですが、こんなことをすると競合するのかコンパイルエラーになりました

class KotlinBooleanSample {
    var isFuga = true  // コンパイルエラー
    var fuga = true  // コンパイルエラー
}




今まで、KotlinはなんでJavaから見る時にbooleanのアクセサをgetXxx、setXxxって
しちゃうのかなぁと思ってたんですが、謎が解けてスッキリしました。

他の言語でもこういうアプローチとってたりするらしいですね。

言語を作ってる人の話を聞くのは貴重でした。
楽しい勉強会でした!






2015/12/24 このエントリーをはてなブックマークに追加 はてなブックマーク - KotlinのSeleniumライブラリKebabを作ってる #ktac2015 #jkug

KotlinのSeleniumライブラリKebabを作ってる #ktac2015 #jkug

カテゴリ: , , , ,




こちらはKotlinアドベントカレンダー2015の24日目の記事です。





みなさん、Kotlin書いてますか?興味ありますか?
多分、どちらかの人がこのアドベントカレンダーを見てくれているのだと思います。

2014のKotlinアドベントカレンダーにも参加させていただきましたが、
ほんとにKotlin人口がここ1年で急激に増えて感慨深いものがあります(しみじみ)


今回のブログはgebインスパイア系のKebabというライブラリを作っているっていう話です。

https://github.com/yyYank/Kebab




名前は適当ですが、ケバブだと美味しそうですよねw
はい!…はい。




2015/10/31 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlin界隈の最近の動向ダイジェスト

Kotlin界隈の最近の動向ダイジェスト

カテゴリ:






最近やたらとめまぐるしい気がするKotlin動向をまとめました(ダイジェスト版)
というか、僕が最近忙しくて気づいたら色々動きがあるだけかもしれない。。。



2015/09/17 このエントリーをはてなブックマークに追加 はてなブックマーク - 長い夏は終わった。KotlinのM13は君に語りかけるぜ!

長い夏は終わった。KotlinのM13は君に語りかけるぜ!

カテゴリ:






ということで、KotlinのM13がリリースされました。

ほぼ、公式blogのそのまま書くつもりなので、詳細は原文参照のこと。


Kotlin M13 is out!

今回の変更は言語の最終仕様の決定と言ってもいいでしょう。
そして、それぞれユーザーに意見を求めていた結果をフィードバックして、
言語デザインに反映しています。

2015/07/01 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlinの雑なテスト用DSLを作りなおした

Kotlinの雑なテスト用DSLを作りなおした

カテゴリ: ,






Kotlinでテスト用の雑なDSLを作るというのをやってみたんですが、
なんかイマイチなものが出来たなぁと思います。

記事を書いてからも改善出来ないかやり方を考えてたんですが、
もうちょっとマシなものが出来た気がするので、今回は続編記事です(まだ洗練されてませんが)。






2015/06/25 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlinでテスト用の雑なDSLを作った

Kotlinでテスト用の雑なDSLを作った

カテゴリ: ,






Javaでまぁ、JUnitでテスト書きますよね。



テスト書くときにassertまでの間にインスタンス生成やら、
初期化やらset/getやらゴチャゴチャ書いてしまって見にくいな…って思ったことありませんか?

ということで、そこらへんを考えながらKotlinでテスト用のDSLを作ってみました。


2015/06/07 このエントリーをはてなブックマークに追加 はてなブックマーク - 第3回かわいいKotlin勉強会で運営+発表してきました

第3回かわいいKotlin勉強会で運営+発表してきました

カテゴリ: , ,









2015年06月05日に行われた第3回かわいいKotlin勉強会で運営&発表してきました。
会場はドリコムさん!(いつもありがとうございます)


その時に話せなかったこぼれ話や補足をしようかなと思います。


2015/05/01 このエントリーをはてなブックマークに追加 はてなブックマーク - 【コードリーディング】Kotlin to JavaScriptコンパイラメモ

【コードリーディング】Kotlin to JavaScriptコンパイラメモ

カテゴリ: ,






KotlinのAltJSな部分を最近見ているのですが、 やはりコンパイラの部分は気になります。

ということで処理の流れを追いかけます。今回はほぼ、自分用の簡単なメモです。


2015/04/30 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】AltJS?それ、Kotlinで出来るよ

【Kotlin】AltJS?それ、Kotlinで出来るよ

カテゴリ: ,









KotlinはJavaScriptへのコンパイラ(Kotlin to JavaScriptなコンパイラ)を搭載しています。


ただ、これまでKotlinでJavaScriptをやるというのはネガティブな印象が強かったと思います。
実用段階でないとか、機能として不充分とか。
一方で、KotlinがAltJSになるんではないかという注目をされている人も多少なりともいるようです。


で、足りないんだとしたらどこが足りてないのか、とか自分で確かめるしか無いな、と。

試した結果としては結構使えるんじゃないかなと思いました。




2015/04/12 このエントリーをはてなブックマークに追加 はてなブックマーク - 株式会社サムライズムに行ってきたのを思い出したので、レポート #ikemoku

2015/04/04 このエントリーをはてなブックマークに追加 はてなブックマーク - 【Kotlin】KotlinでもJava EE 8 のMVC1.0(Ozark)は動くよ

【Kotlin】KotlinでもJava EE 8 のMVC1.0(Ozark)は動くよ

カテゴリ: , ,



Kotlin meets Java EE 8!!!


KotlinサイトとGlass Fishサイトより引用




はい、動きます。
しなくてもいい苦労をしたくなる僕です。




元ネタ
MVC 1.0(Java EE 8)をとりあえず動かしてみた - Java EE 事始め!

Java EE 8 のearly draftとやら。MVC1.0と言われるJAX-RSとかあたりによく似てる気がしないでもないやつです。


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!


注:翻訳について

以下翻訳です。







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/02/18 このエントリーをはてなブックマークに追加 はてなブックマーク - 【お約束】Kotlin + AndroidでHello Worldすぐ出来たよ

【お約束】Kotlin + AndroidでHello Worldすぐ出来たよ

カテゴリ: , ,


最近まではJavaでAndroidアプリを作っていたのですが、
ようやく使いたかったKotlinでAndroidアプリを作り始めました。


ということで、ド定番のHello Worldをやってみました。






2014/12/16 このエントリーをはてなブックマークに追加 はてなブックマーク - 【JVM Language Trend】Kotlinについて本気出して考えてみた

【JVM Language Trend】Kotlinについて本気出して考えてみた

カテゴリ: , , , ,



こちらはKotlinアドベントカレンダーの16日目の記事です。






いきなりですが、僕はKotlinが好きです。
なんてったってNull安全だし書いていて気持ちが良いからです。
Javaのライブラリ使えるけど、ダルくないし。


、、、という風に主観で口語的に説明するのはとても簡単なのですが、
客観的にKotlinを見た時どういえば気に入ってもらえるか。
どうしたら流行るのかなぁっていうのを真剣に考えました。


まず比較対象ですが、同じ界隈ということで考えるとJVM言語が思い浮かびます。




2014/12/10 このエントリーをはてなブックマークに追加 はてなブックマーク - 【これは便利】知っててよかったKotlinのenum #ktac2014

【これは便利】知っててよかったKotlinのenum #ktac2014

カテゴリ:



https://matlabrecipes.comより引用





こちらはKotlinアドベントカレンダーの10日目の記事です。






versionはKotlin M8。2014/12/5現在、Kotlinはマイナーバージョンです。





M8バージョン:https://github.com/yyYank/sandbox/blob/master/Kotlin/WebDemo/M8/KolinEnumSample.kt



****2017 年追記 :
1.1.2バージョンhttps://github.com/yyYank/sandbox/blob/master/Kotlin/WebDemo/1.1.2/KolinEnumSample.kt
Kotlinのenumはいつのタイミングかは忘れましたが、 enumの書き方が変わりました。
宣言を簡単に記述出来るようになる言語変更です。M8バージョンと1.1.2バージョンを見比べてみてください!!





Javaのenumについて今日話題になっていたため、Kotlinのenumってどうなっているんだろう?
ということで今回調べてみました。





Kotlinの場合は「enum class クラス名」と宣言することでenumを定義できます。
こんな感じです。


enum class Direction { 
  NORTH
  SOUTH 
  WEST
  EAST
}







使えるメソッドはJavaとほぼ同等です。


GA