Category Archives: Kotlin

Kotlin Fest 2019と基調講演と感想

こんにちはJetBrains堀岡です。 (夏休みの宿題みたいなタイトルでスイマセン) 先週(2019/8/24)弊社Kotlin Developer Advocate Svetlana Isakova (@sveta_isakoba)と共にKotlin Fest 2019に参加させて頂きました。 Kotlin Fest 2019基調講演のスライド 今年のKotlin Festでは、日本Kotlinユーザグループ様より、Svetlanaを基調講演のスピーカーとしてご招待いただきました。 彼女は、日本に来るのが初めてということで、日本のKotlinコミュニティーの多くの皆様と交流できて、非常に楽しそうでした。8月25日の夜にTwitterでしれっとスライドがpostされていましたので、こちらでもご紹介いたします。 (個人的には技術的なことはまだ詳しくないのですが)他のスピーカーのセッションとか、(彼女自身が書いた)Kotlin 1.3.50のリリースブログと合わせて読むとより話しが繋がるのかなというふうに思いました。 個人的な感想 昨年は、Kotlinについてほとんど知らない状態で一般参加させていただき、なんか盛り上がっているなくらいの印象だったのですが、今年は基調講演の件で企画の段階から少し日本Kotlinユーザグループの皆様とJetBrainsチームとのコミュニケーションをお手伝いさせていただいたき (皆さん本業で活躍されているお忙しい中)プロフェッショナルな企画と当日のイベント運営 (すでに普及が進んでいるAndroid系のトピックに加え)サーバーサイドKotlinやKotlin Multiplatform、Kotlin/JS、Kotlin/Native、Kotlin 1.3で追加された新しい言語コア機能等、日本のKotlinコミュニティーが最新のトピックをキャッチアップできるよう注意深く選定されたテーマ 400名近くの熱心な参加者 に非常に感銘を受け、Kotlinの日本での普及が多くのコミュニティーの皆様の熱意と支援によって支えられていることを再実感しました。そして、日本のKotlinコミュニティーの皆様に、もっと多くの日本語による情報提供や、JetBrainsのKotlinチームをつなぐようなお手伝いができればと思いました。 おわりに Svetlanaは(緑が多いミュンヘンにすんでいるせいか)広い公園好きらしく、イベント後は浜離宮や旧芝離宮散策を楽しみ、今週は他のアジアの地域でのKotlin Everywhere イベントへの登壇も予定しているそうです。また、今後は、スライドでも言及していますが、新しい本(Atomic Kotlin)を完成に向けて鋭意執筆中だそうです。 Kotlin/Everywhereの日本語による紹介以下をご覧ください あなたのKotlinイベント、Kotlin/Everywhereに登録しませんか? ということでKotlin Fest 2019、非常に有意義で楽しいイベントに参加させていただきありがとうございました。残念ながら参加できなかった方は、公開されているスライドや今後公開される予定の動画でぜひこの体験を共有いただくことをオススメします。 Have a nice Kotlin!

Posted in Kotlin, イベント | Leave a comment

あなたのKotlinイベント、Kotlin/Everywhereに登録しませんか?

こんにちは。JetBrains堀岡です。 2019年のGoogle I/Oや以下で発表されていますが、現在GoogleとJetBrainsは「Kotlin/Everywhere」と呼ばれる世界各地で開催されるKotlin関連のコミュニティ・イベントを開催・支援する取り組みを行っています。 Kotlin/Everywhere 登録サイト(英語) https://events.withgoogle.com/kotlin-everywhere Kotlin Blog「Kotlin Is Everywhere! Join the Global Event Series」(英語) https://blog.jetbrains.com/kotlin/2019/05/kotlin-is-everywhere-join-the-global-event-series/ Google Developers 「Kotlin Everywhere を開催します」(日本語) https://developers-jp.googleblog.com/2019/06/kotlin-is-everywhere-join-global-event.html が、本ブログを執筆時点(2019年6月12日)の日本の開催状況を見てみると、5月18日の開催済みイベントしか登録されていません😅(温泉イベントを登録・開催頂いた皆様ありがとうございます。最新状況はこちら) 【2019年9月2日アップデート】8月に開催されたKotlin/Everywhere Ehimeも登録されました🎉 ということで、より多くの技術者コミュニティの皆様がKotlin/Everywhereの機会を活用して、イベントを企画・開催して、Kotlinをいろいろな機会でより便利にお使い頂けるよう、JetBrainsの日本語ブログでも紹介したいと思います。 Kotlin/Everywhereとは Kotlinの要素技術やベストプラクティスについて学ぶ、世界各地で開催される、コミュニティ主催の技術者向けイベントの総称 どなたでも主催、どなたでも参加可能 GDG(Google Developer Group)やKUG(Kotlin User Group)、その他コミュニティ主催者がイベントをKotlin/Everywhereイベントとして登録可能 主催者がKotlin/Everywhereとしてイベント登録すると、Kotlin/Everywhereウェブサイトに掲載される イベントの内容・規模に応じてGoogle/JetBrainsからサポートを得られる場合がある(すべてのイベントがサポートを得られるとは限りません)。 サポート内容例 会場費や飲食代、グッズ作成にかかる費用(イベントの詳細が決まった段階で早めにご相談ください。リクエストから回答まで2週間ほどかかる場合があります。) スピーカーの派遣(イベント開催の2ヶ月以上前に要連絡) サポート対象のイベントの開催期間は2019年5月15日から2019年12月1日まで … Continue reading

Posted in Kotlin, お知らせ, イベント | Leave a comment

一挙大公開 – Kotlinから.NETまで JetBrains Night 2018

こんにちは、JetBrainsの堀岡です。 皆様、年末年始いかがお過ごしでしょうか? 既にTwitter等で紹介しましたが、残念ながらイベントに参加できなかった皆様や、動画をチェックしようと思っていたけれど年末までじっくり時間が取れなかった皆様、年末年始TV特番に飽きたエンジニアの皆様の箸休めとして、2018年11月に開催されたJetBrainsイベントのセッション動画を紹介したいと思います。 英語セッションは英語が苦手の方は字幕をオンにして見るのがオススメです。 JetBrains Night Tokyo 2018のセッション動画 1. オープニング(前半英語、後半日本語)- Alexey Reshtenko, Masaru Horioka JetBrainsの会社紹介および2018年から開始した日本市場における新たな取り組みを簡単に紹介します。 2. 開発者の生産性を上げるための組織作り―JetBrainsでの取り組み(英語)- Hadi Hariri JetBrainsは、2000年の創業以来、ビジネスの成長に伴い組織も拡大し、現在は世界8箇所にオフィスを有し、社員数も900名を超えさらに成長し続けています(参考:会社概要)。このセッションでは、スタートアップのスピード感を保ちながら会社をスケールさせていくためのJetBrains社内での組織のあり方や、コミュニケーション、タスク管理、会社のカルチャ等の取り組みについて議論します。 3. IntelliJ IDEA ヒントとトリック 、及びJava 11関連のアップデート (英語) – Mikhail Vink IntelliJ IDEAは機能が豊富なので、多くのユーザにとって知られていない便利機能が沢山あります。さらに、リリースごとに新たな便利な機能が増えていきます。このセッションでは、Toolboxや便利なプラグインの紹介に加え、IntelliJ IDEAをより活用するための便利機能や最近のリリースの新機能を紹介します。 4. GoLandでGoコーディングの生産性を向上(英語)- Florin Pățan このセッションでは、どのようにGoLandを利用して、デベロッパーが生産的にGoコードを書き、時間と労力を節約できるのかを見ていきます。コードナビゲーション、補完、テンプレート、VCS、テスト、デバッグ、および自動化などの、初心者と経験豊富なデベロッパーの両方に役立つコンテントがカバーされます。 5. Kotlin/Anywhere(英語) – … Continue reading

Posted in GoLand, IntelliJ IDEA, Kotlin, Rider, TeamCity, Upsource, YouTrack, イベント | Leave a comment

Kotlin 1.3リリース – コルーチン、Kotlin/Nativeベータ

Kotlin 1.3リリースです。もちろんビルドツール、ライブラリ、学習素材も同時リリースです。 JetBrainsはすべてのデベロッパーとって、あらゆる規模かつすべてのプラットフォームで優れたツールになるように、Kotlinの開発に取り組んでいます。 Kotlin 1.3では、コルーチンが進化して安定し、ノンブロッキングコードの読み書きが簡単になりました。 スケーラブルなアプリケーション開発がこれまでになく容易になりました。このリリースでは、KotlinコードをNativeバイナリに直接コンパイルするKotlin/Native ベータも導入されています。 Kotlinのマルチプラットフォーム機能は、サポートされているすべてのプラットフォームをカバーするようになりました。そのため、AndroidやiOSアプリなどのコンポーネント間でビジネスロジックを共有できます。 サーバーアプリケーションのロジックをWebやモバイルクライアントと共有でき、マルチプラットフォームライブラリにより、日々のタスクを簡単に移植できます。 1.3の主な機能を紹介する一連のウェブセミナーを開催します。こちらから登録できます。 コミュニティーとエコシステム Kotlinは今年前例がないほど採用率が伸びています。 2018年1月以降、約150万のユーザーがKotlinコードを書きました。この数字は昨年の2倍以上に増えました。 StackOverflowでのトレンドと私たちのパブリックSlackでのトレンドも非常に励みになります。 私たちはKotlinコミュニティにサポートいただき、感謝しております! Kotlin周辺のエコシステムが成長し、成熟しているのを嬉しく思います。 Kotlinは、Google Cloud Platform、Spring Framework、Gradle の友人であり、またもちろん、Androidのファーストクラスサポートは言うまでもございません。 オープンソースコミュニティは、RxKotlin、mockito-kotlin、TornadoFX、Kodein、ΛRROW などの優れたライブラリを作成しています。 また、SquareのOkio やLibreOffice のようなプロジェクトは、Kotlinに移行しているか、そうする予定です。 ぜひ皆さん、素晴らしいアイデアやプロジェクトとともにKotlinエコシステムにご参加ください。 JetBrains以外の多くの方々に、pullリクエスト、バグレポート、そしてあらゆる種類のフィードバックで、Kotlin 1.3にご貢献いただきました。 皆様のご協力に本当に感謝しております。ぜひKotlinを一緒に、前進させていきましょう! コルーチンがstableへ昇格しました コルーチンは、理解しやすく進化しやすい、ノンブロッキングの非同期コードを書く現代的な方法です。 また、バックグラウンドワーカーへのワーク負荷の軽減から、複雑なネットワークプロトコルの実装まで、あらゆる用途でパワフルなツールです。 kotlinx.coroutinesライブラリは、構成、キャンセル、例外処理、UI固有のユースケースなど、あらゆる規模の非同期ジョブを管理するためのしっかりした基盤を提供します。 kotl.in/coroutines でスタート! コルーチンウェビナーにいますぐ登録! Kotlin/Nativeベータ Kotlin /Nativeは LLVM を使用し、iOS、Linux、Windows、Mac、さらに、WebAssemblyやSTM32などの組み込みシステムを含む、さまざまなオペレーティングシステムやCPUアーキテクチャ用に、Kotlinソースをスタンドアロンバイナリ(VMは不要!)にコンパイルできます。 またこれは、完全自動メモリ管理を搭載し、C、Objective-C(およびSwift)との相互運用が可能で、Core Foundation、POSIX、およびお好きなネイティブライブラリなどのプラットフォームAPIを公開しています。 Kotlin/Nativeランタイムはイミュータブルデータを活用して、スレッド間で保護されていないミュータブルなステートを共有することを防ぎます。実際に、スレッドはKotlin/Nativeには存在しません。スレッドは低レベルの実装の詳細として抽象化され、ワーカーに置き換えられます。これは、並行処理を行う安全で管理しやすい方法です。 kotl.in/nativeで Kotlin/Native … Continue reading

Posted in Kotlin, お知らせ | Leave a comment

KotlinConf 2018 ライブストリーミング:Kotlinに関する主なニュースとオンライン Q&A

世界中の多くのテクノロジーイベントで JetBrains チームと会うことができます。 今日、私たちは特別なものを用意しました。自宅から、KotlinConf 2018 Live でKotlinチームに会うチャンスです! あなたを私たちのオンラインイベントにご招待いたします! 10月4日~5日のライブストリームにご参加ください。 Andrey Breslav の基調講演で、Kotlinに登場する新しいことについて学び、KotlinConf 2018クロージングパネルで、Kotlinチームとコミュニティのリーダーに質問をすることができます。 Andrey Breslavによる基調講演でイベントを開始します。 この基調講演をお見逃さないように、ご登録ください。中継を開始する直前にリマインダーを送ります。 KotlinConf Live に登録 Liveトラックでは、JetBrains チームのリーダーだけでなく、エコシステムの作成者と貢献者、Kotlinコミュニティの熱いファンの方々による講演もございます。 Jake Wharton、Christina Lee、Venkat Subramaniam、Alicia Karr のセッションもお楽しみいただけます。 KotlinConf 2018の1日目と2日目のライブトークプログラムをご確認ください。 イベントの最終セッションであるクロージングパネルにぜひご参加ください。出席者様と、オンラインで質問をご投稿された方々のご質問等にお答えいたします。 クロージングパネルにご質問いただくには、ハッシュタグ #kc18ask を使用して Twitter にご投稿ください。 ご質問の投稿は今すぐ可能で、10月5日 5:15 CEST(中央ヨーロッパ夏時間 )、日本時間 12:15 までできます。 … Continue reading

Posted in Kotlin, お知らせ | Leave a comment

Kotlin/Native v0.6 リリース!

Kotlin/Native v0.6をバレンタインデーにリリースいたしました。以下の機能を実装したメジャーリリースになります: コンパイラとGradleプラグインのマルチプラットフォームプロジェクトサポート Objective-C/Kotlinコンテナクラスの透過的なインターオペラビリティ 組み込み器機ターゲットのサポート(STM32 ボード) Kotlin 1.2.20、Gradle 4.5、Java 9サポート WebAssemblyバイナリの縮小化 (最大で160KiB縮小) CLion 2018.1向けのプラグイン修正 (macOSプラットフォームのライブラリインデクサーの修正) v0.6でKotlin/Nativeマルチプラットフォームプロジェクトをサポートし、単一のGradleビルドから異なるKotlinバックエンド、例えばJVMとNativeとJSをビルドできます。こちらのリポジトリをご参考にしてください。 また、ついにKotlin/Nativeプログラムを組み込み器機向けにビルドできるようになりました。現在のところZephyr Projectカーネルを使ったSTM32ベースのマイクロコントローラを対象としています。この機能はまだ実験的で、お試しになるとまだまだ問題にぶつかるかもしれません。Cとのインターオペラビリティにはまだいくつか問題がありますが今後のリリースで修正される見込みです。 v0.6の興味深い機能は -produce framework operational modeにおけるコレクションの透過的なインターオペラビリティです。つまり、KotlinのList、MutableList、Set、MutableSet、Map、MutableMapをコンパイルするとObjective-C/SwiftのコレクションであるNSList、NSMutableList、NSSet、NSMutableSet、NSDictionary、NSMutableDictionaryとして扱えます。 今回のリリースの重要なゴールはコンパイラのユーザビリティーと安定性の改善でした。多くの既知のバグやKotlin/JVMの非互換を修正いたしました。 最後に、CLion 2018.1のKotlin/Native v0.6サポートが追加されました。技術的な理由から、自動アップデートはできませんので手動でこちらよりダウンロードしてください。 最新バージョンをお楽しみいただき、素敵なバレンタインデーを過ごせますように! バイナリはこちらよりダウンロードしていただけます: macOS, Linux, Windows GitHubのリリースページはこちらです [原文]

Posted in Kotlin | Leave a comment

Kotlin 1.2 リリース: プラットフォーム間のコード共有

Kotlin 1.2をリリースしました。これはKotlinをモダンなアプリケーションの全てのコンポーネントに渡って利用できるようにするための大きな一歩となるメジャーリリースです。 Kotlin 1.1でJavaScriptを正式なターゲットにし、KotlinコードをJSへコンパイルしてブラウザで動かせるようにしました。そしてKotlin 1.2ではKotlinコードをJVMとJavaScript双方で共用できるようにしました。ビジネスロジックを一度書けば、バックエンドでもフロントエンドでも、そしてAndroidのモバイルアプリケーションでも利用出来ます。そしてクロスプラットフォームのシリアライゼーションライブラリなど、コードの再利用性を高めるためのライブラリ開発も進めています。 Kotlin 1.2はすでに、本日リリースのIntelliJ IDEA 2017.3に含まれています。別のIDEバージョンをご利用であればTools | Kotlin | Configure Kotlin Plugin Updatesダイアログよりインストールできます。 このリリースは社外の沢山のコントリビューターの成果が含まれています。フィードバックを送ってくれた方々、問題を報告してくださった方々、そして特にプルリクエストを送ってくださった方々に感謝いたします。 マルチプラットフォームプロジェクト マルチプラットフォームプロジェクトはバックエンド、フロントエンド、Androidといった複数の層を同じコードベースからビルドする仕組みです。このプロジェクトではそれぞれcommon moduleを含みます。common moduleはプラットフォームから独立したコードとプラットフォーム(JVMまたはJS)固有のコードからなります。後者からはプラットフォーム依存のライブラリを呼び出すことができます。プラットフォーム固有のコードをcommon moduleから呼び出すには”expected”宣言を記述し、”expected”宣言に対応する”actual”実装を各プラットフォーム向けに実装することになります。 この機能について寄り詳しくはドキュメント(英語)をご覧ください。 ロジックをcommonコード側により多く記載出来るよう、以下のライブラリを開発・提供しています: kotlin.test: Kotlin 1.2にデフォルトで含まれています。テストを一度書けばJVMとJSで実行できます kotlinx.html: マルチプラットフォームでのレンダリング(isomorphic rendering)を実現します。同じコードを利用してバックエンドでもフロントエンドでもHTMLをレンダリングできます kotlinx.serialization: JSONまたはProtoBufをシリアライゼーションフォーマットに使ってプラットフォーム間のKotlinオブジェクト受け渡しを簡単に実現します なおマルチプラットフォームプロジェクトは現在実験的な機能(experimental feature)扱いです。機能自体は安定しておりプロダクションに適用可能ですが、今後のリリースで変更が必要になる可能性があります(マイグレーションツールを提供する場合があります)。 コンパイルパフォーマンス 1.2の開発にあたりコンパイルのパフォーマンスを向上することに多大な努力を費やしました。すでにKotlin 1.1と比較しておよそ25%向上しています。そして1.2.xアップデートにおいて相当な改善を施せる見当がついています。 その他の言語やライブラリの改善 言語や標準ライブラリにも改善を積み重ねています: より簡潔なシンタックス: アノテーションに複数の引数を指定するのが配列リテラルで簡潔になりました lateinit 修飾子のトップレベルプロパティとローカル変数でのサポートと lateinit 変数が初期化されていることのチェック機構 より賢いスマートキャストと改善された型推論 … Continue reading

Posted in Kotlin | Leave a comment

Kotlin on Android、オフィシャルに

本日、Google I/OのキーノートにてAndroidチームはKotlinの公式サポートを発表いたしました。これはKotlinにとって大きな一歩であり、Androidデベロッパにとって、そしてJetBrainsツールファンにとって素晴らしいニュースです。 Androidデベロッパにとって、Kotlinサポートはモダンでパワフルな言語を利用するチャンスです。良くある頭痛の種を解消したり、コードを簡潔・明快にするのに役立つことでしょう。Kotlinをはじめるのは簡単です。既存のプロジェクトに少しずつ導入していくことも可能です。皆様がこれまで培ったスキルや投資を引き続き活かすことができます! 本日より、Android Studio 3.0はKotlinを最初から同梱します。つまりAndroidデベロッパは互換性について心配する必要がなくなります。今後JetBrainsもGoogleもKotlinでのAndroidアプリケーション開発をサポートしていきますのでご安心ください。 Kotlinの他のプラットフォーム(サーバ、デスクトップにおけるKotlin/JVM、Kotlin/JS、Kotlin/Native)におけるサポートについてもJetBrainsにとって引き続きフォーカスしていきますのでご安心ください。JetBrainsのKotlinにおけるビジョンは、この言語を様々なアプリケーションをマルチプラットフォームで、エンドトゥーエンドに繋げる統一ツールにすることです。これはフルスタックWebアプリケーションも、Androidも、iOSクライアとも、組み込み/IoTも含みます。 プログラミング言語は人間の言語と同じです。つまり話す人が多ければ多いほど良くなります。Androidでの公式サポートで、より多くのデベロッパがKotlinを使うことになるでしょう。そしてJetBrainsはKotlinコミュニティが急速に広がっていくと期待しています。Kotlinによる、またはKotlin向けのライブラリやツール開発が加速し、経験が共有され、Kotlinを使う職が増え、学習教材がたくさん公開されていくことでしょう。Kotlinのエコシステムがより盛り上がっていくことを楽しみにしています! JetBrainsはGoogleとのパートナーシップで、非営利のKotlinの財団の設立を予定しています。言語開発は引き続きJetBrainsが支援していき、40人いるJetBrainsで二番目に大きいKotlinチームはこれまで通り活動して参ります。Andrey Breslavが引き続きリード言語デザイナーを務め、Kotlinはこれまでと同じ原則をもとに開発が続けられます。JetBrainsはKotlinのデザインプロセスを今後もオープンなものにし続けます。皆様のフィードバックこそKotlinを正しい方向に導くのに必要不可欠だからです。 Google I/Oにご参加の皆様は、Kotlinのセッションスケジュールをご確認ください。そしてもちろん、サンフランシスコで11月に開催されるKotlinConfへの参加登録をお忘れなく! 素晴らしいイベントになるはずです! A Big Thank You! Kotlinの旅 の始まりは6年前に遡ります。JetBrainsの狙いは我々のツール群同じ志を持つ言語を作ることでした。つまりデベロッパがめんどくさくて、無駄な面倒をしなくて済み、真に重要なことにフォーカスできる言語を作ることです。そしてもちろん、プロセスは可能な限り楽しくなくてはいけません。 JetBrainsはGoogleとAndroidチームがKotlinを信頼してくれたことに感謝いたします。そしてそれ以上にコミュニティに、ユーザーへの感謝の気持ちでいっぱいです。皆様方なしには今日のKotlinは有り得ません。この旅路を共に出来てありがたく思うとともに、今後のエキサイティングな道のりを共に歩めればと思います。 よくある質問と答え このアナウンスについて頂くであろう質問と答えを用意いたしました。もし、ここでカバーされていない質問がございましたらお気軽にコメントを寄せてください。Kotlinについて馴染みでない方はWebサイトのFAQもご覧ください。 Kotlinの一番の重心はAndroidになるのですか? Kotlinのゴールの1つに、マルチプラットフォーム言語であることがあり、これは今後も変わりありません。今後も積極的にKotlin/JVM (サーバサイド、デスクトップなど)、Kotlin/JSも開発して参ります。またmacOS、iOS、IoT/組み込みシステム向けにKotlin/Nativeも開発しています。 Kotlinのリリースサイクルに影響はありますか? Kotlinは引き続きAndroidまたはAndroid Studioとは独立のリリースサイクルを持ちます。Kotlinプロジェクトは完全に独立であり続けます。そしてもちろんKotlinチームとAndroid Studioチームは密なコラボレートしていきます。 Android Studio pluginは誰が開発しますか? JetBrainsがAndroid Studioチームと密接に働きながらAndroid Studio pluginを引き続き開発していきます。 これはIntelliJ IDEA、Eclipse、Netbeansサポートに影響ありますか? いいえ。Kotlinはマルチプラットフォームを目指しており、これまで通り他のIDEもサポートしていきます。もちろんコミュニティの貢献と共にIntelliJ IDEAを協調していきます。 macOS、iOSサポートに影響はありますか? … Continue reading

Posted in Kotlin, お知らせ | Leave a comment

Kotlin 1.1 リリース – JavaScriptサポート、コルーチン(coroutine)等々

本日Kotlin 1.1をリリースいたしました。これはKotlinの大きな前進になります。 Kotlin 1.1の新機能 Kotlin 1.1には数多くの言語機能の改善が含まれています。JavaScriptサポートとコルーチンは中でも大きなハイライトになります。他はタイプエイリアス、bound callable references、lambdaのdestructuringにも注目してください。新しい機能の一覧はWhat’s new ページよりご確認いただけます。(実行可能なサンプルコードを是非お試しください!)。 JavaScriptサポート Kotlinは真のフルスタック言語となることを目指しています 。Kotlin 1.1をもって言語の全機能はJVM / Android並びにJavaScriptで動作するようになりました。(JavaScriptでReflectionはご利用いただけませんが、動作するよう計画はしています。)つまり、Webアプリケーションは全てKotlinで書くことができるようになったということです。JetBrains内ではすでに知見を蓄積しつつあります。Kotlinでフルスタックを書くことについて、チュートリアルなどの資料を今後公開していく予定です。 Kotlin for JavaScriptはダイナミックタイプによって「ネイティブのJavaScript」と相互運用が可能です。またDefinitelyTyped のタイプヘッダを使って著名なライブラリを型安全に利用できます。 詳しくはドキュメント(英語)をご覧ください。 コルーチン(Coroutines) Kotilnのコルーチンを使うとノンブロッキングで非同期なコードを、プレーンで同期的なコードと同じくらいストレートに表現することが出来ます。 非同期プログラミングは大きな注目を集めていますが、ただひとつノンブロッキングコードへの移行を難しくしているのはそれがシステムに無視できない複雑さをもたらしてしまうことです。Kotlinはバージョン1.1でコルーチンを第一級市民として取り扱い、関数のサスペンドを可能にすることでこの複雑さを抑制します。コンピュテーションの表現である関数(またはラムダ)はスレッドをブロックすることなくサスペンドさせることができ、またあとで再開させられます。 技術的にはコルーチンはライトウェイトな協調マルチタスキング(ファイバーと非常に良く似ており、起動と維持、サスペンドコストがほぼかかりません)で、簡単に組み立て、カスタマイズが可能です。 JetBrainsはフレキシビリティを最大化するようコルーチンを設計しており、言語としてはわずかな仕様だけで、大部分はライブラリとして実現されています。kotlinx.coroutinesプロジェクトはRx、CompletableFuture、NIO、JavaFx、Swingを基盤としたライブラリを提供しています。似たようなライブラリはAndroidやJavaScript向けにも書けます。C#のasync/await、Pythonのgenerators/yield、Goのchannels/selectといった機能もKotlinのライブラリとして表現できます。:

詳しくはドキュメント(英語)をご覧ください。 重要なお知らせ: Kotlinのコルーチンは様々なメリットをもたらしますが、とても新しいデザインですのでとりわけ100%正しくて完成していると確信をもたらすに十分なテストが必要です。よってこの機能は実験的な機能としてオプトインフラグ(-Xcoroutines=enable)で有効化される形になっています。大幅な言語仕様の変更はない見込みですが、Kotlin 1.2で幾分APIの調整が入る可能性はあります。 ツールセット Kotlin 1.1はKotlinのツールセットにおいてメジャーリリースではありません。ツール機能が言語のリリース自体に影響を与えるべきではないと考えております。Kolin 1.0.xからは主に: メジャーIDE向けのKotlinプラグイン: IntelliJ IDEA、Android Studio、Eclipse、そしてNetBeans IntelliJ IDEAとGradleでインクリメンタルコンパイル Spring、JPA、Mockitoのコンパイラプラグイン(クラスをopenにして、引数無しコンストラクタを生成) kaptのアノテーションプロセッシング … Continue reading

Posted in Kotlin, お知らせ | Leave a comment

Android向けKotlinのロードマップ

Googleが最近アナウンスした中で最も興味深いニュースはJackコンパイラによりAndroidNでJava8を(限定的に)サポートするという話ではないでしょうか。当然ながら皆様はこれがKotlinのAndroid開発向けのロードマップにどう影響するか興味のあることと思いますのでここで説明させてください。 KotlinのAndroid向けのロードマップ JetBrainsではKotlinがAndroid開発で優れたツールとなるよう多大な注目を置いています。今後いくつかのバージョン1.0.Xにおけるリリースでは引き続きツール群やライブラリの改善を施していきます。フォーカスは三つのエリアに渡っています。開発ワークフローのスピードアップ、ランタイムライブラリのサイズ削減、ツールサポートの充実化です。 開発ワークフロー 開発ワークフローの高速化のため、KotlinのGradleプラグインはインクリメンタルコンパイルをサポートするようになります。ソースに変更があった場合、モジュール全体ではなく本当に影響のある箇所だけを再コンパイルするためビルド時間を大幅に短縮できます。 続いてAndroidのビルドパフォーマンス改善のためAndroidの新しいJack and Jillツールチェインとのインテグレーションを提供します。 現在のところKotlinの生成するバイトコードのハンドルを妨げる問題(196084 と 203531)がありますが、Googleのチームと連携して問題を解決するか、JetBrainsサイドにて回避策を提供する予定です。それが完了したら、インクリメンタルコンパイル中に変更のあったクラスファイルのみJillを使ってトランスレート出来るようになります。(なおこれまでAndroidサポートでは毎回全てのクラスをトランスレートする必要がありました)。 そしてインスタントランです。現在のところKotlinではコールドスワップしかできず、ウォームとホットスワップをサポートするためにもうしばらく調査が必要です。しかし早急に可能な限りを尽くします。それまでの間、JRebel for Androidを使えばKotlinのホットスワップを行うことが可能です。 ランタイムサイズ メソッド数を削減してkotlin-stdlibのサイズを縮めるべく、いくらかの改善を施す計画があります。現在のところ7191です: 複数ファイルに渡るファサードクラスのトップレベルファンクションの最適化や、inline-onlyの関数をランタイムバイナリから外すとで数千のメソッド数を削減できる見込みです。 ツールサポート Kotlin 1.0のAndroidサポートで欠けているものの内一番大きいのがLintチェックでしょう。でもご安心ください。もちろんKotlinのLintチェックのリリース予定があります。既にAndroid Studio 1.5でLintチェックができるよう実装済みで、Kotlin 1.0.2でリリース予定です。そしてAndroid Studio 2.0向けについては現在実装中です。LintチェックはKotlinとJavaコードの共通基盤上に実装しており、今後Android SDKがデフォルトの状態でKotlinサポートできるようこの基盤をAndroid SDKへコントリビュートする予定です。 Android特有のIDEサポート、例えば”New Kotlin Activity”アクション、コードインサイトやナビゲーションなどは少しずつ1.0.xリリースで加えられていきます。 KotlinとJava 8 Java 8がリリースされてしばらく経過しておりますが、Android開発を行っていない開発者でもJava 8よりもKotlinを選択して楽しんでいらっしゃる方々が沢山いらっしゃいあす。Androidが正式にJava8の言語機能をサポートしましたが、KotlinとJavaの選択にどう影響を与えるでしょうか? まず第一に、Java 8のラムダをAndroidにもたらしますが、Androidのツールチェインがサポートするラムダの既存プラットフォーム(Nリリース以前)サポートはKotlinによるサポートとは重要な違いがあります。違いを理解するため、シンプルなコード例をお見せします: Kotlin: list.forEach { process(it) … Continue reading

Posted in Kotlin | Leave a comment