Kotlin Census 2019:回答にご協力ください

 

このブログポストを他の言語で読む:

現在私たちはKotlin Census と呼ばれるKotlinの利用動向に関する年次調査をグローバルで実施しています(2018年の結果はこちらで公開しています)! 2019年末の時点で400万人以上がKotlinを使用していました。 利用者数が多いということは、多くのユースケースがあるということでもあります。 私たちはKotlinを利用するすべての方に素晴らしい体験を提供することに深い関心を寄せています。 また、コミュニティの参加者全員がKotlinを使ってアイデアを実現できるよう、Kotlinを改善したいと考えています。 そのため、私たちは皆さんの意見を非常に重視しています。

Census_Blog_JA (1)

Censusアンケートに回答し、あなたが過去1年間でどのようにKotlinを使用したのか、どんな点が気に入ったのか、どんな点に困ったのかをKotlinチームにお伝えください。

私たちはKotlinを使用していない方にも回答をお願いしています。 Kotlinを使用しない理由を教えてください。 私たちは皆さんの回答を重視しており、ご回答いただけますと非常に助かります。

昨年ご回答いただいた方に感謝いたします。 私たちが最新の情報を把握できるよう、今年もご回答いただけると非常に助かります。 2019年に登場した機能や製品に関する新しい質問を多数追加しています。 また、2019年にKotlinやそのエコシステムをどの程度スムーズに使用できたかどうかも質問しています。

Censusに回答する

*右上に言語切り替えボタンがあります。

もう一点重要なお知らせがあります。Censusに回答すると、KotlinConfへの無料チケットかKotlin特製Tシャツを獲得できるチャンスがあります。

アンケートにぜひご参加ください!

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

YouTrack 2020 ロードマップ:次のステップ

ブログ

2020年におけるYouTrackの製品開発に関する当社のビジョンをお伝えします。 ロードマップに含まれている機能には、ナレッジベースページである記事(article)、課題コメントへのリアクション、すぐに使えるヘルプデスクソリューション、ユーザーインターフェースをシンプルにするための変更、通知用の受信トレイなどがあります。

このページを読み進めて開発中の新機能に関する詳細をご覧ください。

 

主な変更点

ナレッジベース記事。これは編集可能なナレッジベースページであり、YouTrackの課題、ボード、レポートのすぐ横にそのコンテンツを表示できるものです。 記事では、テキストや画像を追加し、サブページを作成し、プロジェクトに関する必要な情報をすべて格納できます。 また、権限を管理して機密情報へのアクセスを制限することもできます。

絵文字によるリアクション。絵文字によるリアクションはすでに日常的なコミュニケーション手段になっているため、課題コメントで絵文字を使えるようにしたいと考えています。 そうすることで、同僚のコメントや画像などにすばやくリアクションを返せるようになります。

受信トレイによる通知。プロジェクトに関するメッセージの数が増えるにつれて、それらのメッセージを最大限に活用することがますます重要になります。 通常の通知、システム通知、リアクションの流れ、新着情報の更新などの通知を分かりやすくUIに表示できる受信トレイを追加したいと考えています。

簡略化されたユーザーインターフェース。私たちはアジャイルかつ多様なチームにより多くの機能を提供していますが、シンプルな外観を求めているユーザーがいることにも気が付きました。そのため、現在は新しく簡略化された課題リストビューを導入し、YouTrack全体にわたるナビゲーションを容易にするために多数の改善を行っています。

組織によるアクセス管理。このオプションは、YouTrack管理者がユーザーやプロジェクトを組織と呼ばれるグループにまとめ、チームや作業構造に従えるようにするものです。

ヘルプデスクソリューション。現在、YouTrackは着信メールの追跡や操作、または内外のユーザーからのリクエストを発行するためによく使用されています。 現在、この用途を拡張し、埋め込み可能なフォームとナレッジベースを備えたすぐに使えるヘルプデスクソリューションを提供しようと考えています。

対応予定の機能リクエスト

JT-32201 – レビューと変更をさまざまなプロジェクトの課題にリンクするVCS統合機能
JT-28903 – VCS統合がプルリクエストに対応
JT-22980 – カスタムフィールドの表示単位をユーザーグループごとに設定
JT-5962 – アクセス制限や共有を行う際に複数のグループを指定
JT-18173 – Zapierアプリケーションと統合
JT-55627 – YouTrackをクラスタ化し、パフォーマンスを向上

さらなる強化・改善ポイント

私たちは様々なチームのニーズに応えられるようにYouTrackを作っています。 そのため、以下のリストは単に特定の追加機能を含むものではありません。 その代わり、この製品をより使いやすく強力にするために継続的に取り組むべき優先順位の高い利用シナリオに対する私たちのビジョンが反映されています。

プロジェクト管理の改善。タイムトラッキングとプロジェクト管理機能の改善も行っています。

アジャイルボードの強化。さまざまなアジャイルチームの業務を詳細に調べ、かんばんボードやスクラムボードの機能を強化する予定です。

モバイルアプリケーションの改善。Android版のYouTrack Mobileへのプッシュ通知機能の実装を始め、継続的にモバイルバージョンを作り替え、改善する予定です。 インターフェースの新しい外観を実装するほか、安定性を向上させる予定です。 モバイル端末から課題を操作しやすくするため、Markdownの改善のほか、コンテキスト検索の実行、課題のリンク、タグや作業項目の追加に対応する予定です。

オンボーディングの改善。新規YouTrackユーザーのオンボーディングプロセスをより簡単かつ分かりやすいものにする予定です。

 

これらのYouTrackの開発内容が、皆さんが投票した機能に対応できることを期待しています。 上記のビジョンをお伝えしましたが、将来の見通しに基づいたすべて項目は変更される可能性がありますのでご留意ください。

私たちはフィードバックを頼りにしています。最新の更新情報を入手するには、当社ブログを購読し、Twitterでフォローしてください。

[原文Original post in English is written by Elena Pishkova

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

Kotlin 1.4の計画および将来的な展望

KotlinConf 2019の基調講演で、弊社でKotlin開発をリードするAndreyは現在Kotlinを進化させるにあたって重点を置いている分野に関する戦略的展望と、2020年にリリースされるKotlin 1.4の計画について話しました。

基調講演全体を見る(英):

私たちのビジョンは、Kotlinが皆様のあらゆる努力を支える頼もしいパートナーとなり、皆様の業務に使用されるデフォルトの言語になることです。 このビジョンを達成するため、すべてのプラットフォームでKotlinにさらなる進化をもたらす予定です。 世界中の業界を代表する企業におけるいくつものケーススタディから、私たちがこの方向性において順調に前進していることがわかります。

2020年春に登場予定のKotlin 1.4により、Kotlinエコシステムの実現に向けてさらに一歩前進することになります。

品質への注力

Kotlin 1.4では品質とパフォーマンスを第一に注力する予定です。 Kotlinはすでに多くのアイデアと手法を取り入れているモダンなプログラミング言語です。 私たちはKotlinを常に最新の状態に保ち、絶えず進化させていく予定です。 ただし、現時点のKotlinは、大きな機能を追加するよりも全体的なプログラミング体験を改善することが重要な段階に達していると考えています。 そのため、Kotlin 1.4では以下で詳細に記載するいくつかの小さな言語上の変更を行うに留めています。

一方で、私たちはKotlinに対応したIDEのパフォーマンス向上において、すでに目覚ましい結果を残しています。 コード補完速度が旧バージョンと比較して大幅に向上しました。

加えて、Gradleチームと協力し、Gradleスクリプトを高速化しました。 Kotlin 1.3.60はKotlin 1.3.10と比較して2.5倍高速化しており、メモリ消費量が75%少なくなっています。

メモリ

さらに、build.gradle.ktsの読み込む際のCPU使用量はほぼゼロとなっています! また、コードキャッシュにより、開発モードでのKotlin/Nativeのコンパイル処理速度が最大2倍になっています。

私たちはビルド速度がユーザーにとって最大の懸念事項であることを理解しており、この問題を解決するためにツールチェーンの改善を継続的に行っています。 しかし、少しずつ改善を行っても実際のコードベースの自然増加には追い付けません。私たちがコンパイル速度を向上させても、ユーザーがより多くのコードを書けば、全体的なビルド時間は十分に改善されません。 コンパイラを再実装して大幅に高速化する必要があることは明確です。

新しいコンパイラ

新しいコンパイラの実装目標は、大幅な高速化とKotlinがサポートするすべてのプラットフォームの統合、ならびにコンパイラ拡張機能のAPIを提供することです。 この目標を実現するには数年を要する見込みですが、私たちはすでに少し前からこの取り組みを開始しているため、この新しい実装の一部は1.4で提供される予定です。また、移行は非常に段階的に実施されます。 移行はすでに始まっています。例えば、型推論の新しいアルゴリズムが新しいコンパイラに組み込まれています。 その他の部分に対するアプローチも同じです。すなわち、古いバージョンに加えて新しいバージョンを実験的モードで同時に提供し、新しいバージョンが安定した時点でそちらをデフォルトにする予定です。

新しいフロントエンドによる高速化

新しいコンパイラの大部分は、新しいフロントエンドを実装することで高速化される予定です。

少し背景を説明しますと、コンパイルはソースファイルを取得してそれを段階的に実行可能なコードに変換するパイプラインであると考えることができます。 このパイプラインで最初の大きなステップ(処理)は、コンパイラのフロントエンドと呼ばれています。 このステップではコードを解析して名前を解決したり、型チェックを実行したりします。 コンパイラのこの機能は、エラーをハイライト表示する際や定義に移動する際、ならびにプロジェクト内でシンボルが使用されている箇所を検索する際にも動作します。 また、これは現時点でkotlincが最も時間を要しているステップであるため、その高速化を図りたいと考えています。

現在の実装は未完成であり、1.4での提供は予定しておりません。しかし、時間のかかる作業のほとんどはすでに行われているため、どの程度高速化されるかを見積もることはできます。 私たちのベンチマーク(YouTrackとKotlinコンパイラ自身のコンパイル)によれば、新しいフロントエンドは既存フロントエンドの約4.5倍高速化されることが分かっています。

統合されたバックエンドと拡張性

フロントエンドがコード解析を完了すると、バックエンドが実行可能ファイルを生成します。 バックエンドには、Kotlin/JVM、Kotlin/JS、Kotlin/Nativeの3種類があります。 最初の2つはこれまで別々に開発されてきたため、多くのコードは共有していませんでした。 一方、Kotlin/Nativeの開発を始めるにあたって、私たちは、仮想マシンにおけるバイトコードのような、Kotlinコードの内部表現(IR)をベースとする新しいインフラストラクチャを開発しました。 現在、他の2つのバックエンドを(Kotlin/Nativeで採用された)IRに統合しているところです。 結果的に多数のバックエンドロジックが共有され、パイプラインが統合されることになるため、すべてのターゲットに対してほとんどの機能実装、最適化、バグ修正をわずか1回で実行できるようになります。

私たちは新しいバックエンドへの移行を段階的に進めています。1.4の時点では新しいバックエンドがデフォルトで有効化される可能性は低いですが、ユーザーが使用することを明示的に選択できるようにする予定です。

バックエンドのインフラストラクチャを共通化することで、マルチプラットフォームに対応したコンパイラの機能拡張を行えるようになります。 パイプラインに組み込み、すべてのターゲットに対して自動的に機能するようなカスタム処理や変換処理を追加できるようになります。 1.4ではそのような機能拡張用の公開API(このAPIは今後stable化する予定です)は提供されませんが、私たちは現時点ですでにコンパイラプラグインを構築しているJetPack Composeなどのパートナーと緊密に連携しています。

Kotlinライブラリフォーマット(KLib)の導入

Kotlinでマルチプラットフォームライブラリを作り、それを配布してクライアントに使ってもらうためには、どのプラットフォームでも等しく動作する配布フォーマットが必要になります。 このため、Kotlinマルチプラットフォーム用のライブラリフォーマットであるKLibを導入します。 KLibファイルにはシリアル化されたIRが含まれています。 このライブラリは依存関係としてあなたのコードに追加することができます。コンパイラのバックエンドはこれを検出し、任意のプラットフォームで実行可能なコードを生成します。 また、バイトコードとの類似性も確保されており、JVMバイトコードとほぼ同じようにKLibsを解析・変換できます。 シリアル化されたIRに行われるすべての変換は、KLibが使用されるすべてのプラットフォームに影響します。

実際、Kotlin/Nativeは長い間KLibs形式を使用してKotlinネイティブのライブラリを配布してきましたが、現在は他のバックエンドやマルチプラットフォームライブラリに対応するために形式を拡張しています。 この形式は1.4では実験的なものになりますが、今後のバージョンでは安定版のABIを提供できるようにする予定です。

マルチプラットフォームに関するその他のお知らせ

Android Studio内でのiOSコードの実行

現在、iOSのデバイスやシミュレーターでKotlinコードの実行、テスト、デバッグを実現するAndroid Studio用のプラグインを開発しています。 このプラグインはIntelliJ独自のコードを使用しているため、ソースは非公開となります。 また、Objective-C言語やSwift言語には対応せず、AppStoreへの配布を含む一部の操作ではXcodeを実行する必要があります。ただし、Kotlinコードで行えることなら何でも新しいプラグインをインストールしたAndroid Studioからは実行できるようになります。 このプラグインのプレビューは、2020年に公開予定です。

Kotlin/Nativeランタイムの改善

Linux、Windows、macOS、iOSのほか、Kotlin/NativeがwatchOSとtvOSで動作するようになりました。これにより、事実上どのデバイスでもKotlinを実行できるようになりました。 また、iOSでKotlinプログラムをさらに高速に実行できるようにするため、Kotlin/Nativeランタイムのパフォーマンス向上にも取り組んでいます。

コアライブラリ

Kotlinのコアライブラリはすべてのプラットフォームで動作します。 コアライブラリには、あらゆる基本型とコレクションを扱うkotlin-stdlibkotlinx.coroutineskotlinx.serialization、およびkotlinx.ioが含まれています。 マルチプラットフォームの世界では日付への対応が切に求められており、私たちはまさにその対応を行っているところです。実験的なDurationsはすでにstdlibに追加されており、DateTimeへの対応は現在進行中です。

Kotlinライブラリに追加されたその他の重要な機能には、Reactive Streamsのコルーチンベースの実装であるFlowがあります。 Flowはデータストリームの処理を得意としており、データストリームを処理する際にKotlinの能力を利用しています。 Flowは人間工学的な側面だけではなく、動作速度的にも優れています。 いくつかのベンチマークでは、既存の一般的なReactive Streamsの実装に比べて約2倍の速度を記録しています。

ライブラリ作者向けの改善

Kotlinエコシステムにとって、新しいライブラリの作成は非常に重要であると考えており、私たちはライブラリ作者のプログラミング体験をより快適にするための改善を継続的に行っています。 新しいライブラリ作成モードは、安定したAPIに最適な方法でコードを成形するのに役立ちます。 また、すべてのプラットフォームでドキュメントを生成できるよう、Dokka 1.0のリリースを予定しています。

マルチプラットフォームウェブ

複数のプラットフォームでコードを共有することはモバイル端末だけではなく、ウェブクライアントにとっても素晴らしいことです。それによって、多くのコードをサーバーや各種モバイルアプリで共有できるからです。 私たちはKotlin/JS関連ツールへのより一層の投資を進めており、Kotlinコードの変更からブラウザでの結果表示までの一連の開発サイクルを非常に高速に実行できるようになりました。

また、JSとの相互運用性も改善され、NPMの依存関係をKotlinプロジェクトに添付できるようになります。加えて、.d.ts型定義はKotlinのツールチェーンによって自動的にピックアップされるようになります。

新しいIRベースのバックエンドでは、バイナリのサイズも大幅に改善されています。 コンパイルされたJSファイルのサイズは、現在の半分になる可能性があります。

新しい言語機能

Kotlin 1.4にはいくつかの新しい言語機能が実装される予定です。

KotlinクラスのSAM変換

KotlinクラスのSAM変換サポートは、コミュニティからの強い要望でした(KT-7770)。 SAM変換は、単一の抽象メソッドのみを持つインターフェースやクラスがパラメータとして期待される場合にラムダ式を引数として渡す場合に適用されます。 その後、コンパイラはラムダ式を抽象メンバー関数を実装するクラスのインスタンスに自動変換します。

現在、SAM変換はJavaのインターフェースと抽象クラスにのみ機能します。 この設計の元々のアイデアは、このようなユースケースに対して、関数型を明示的に使用するというものでした。 しかし、関数型や型エイリアスではすべてのユースケースに対応できず、往々にしてSAM変換を行うためだけにJavaインターフェースを維持しなければならないことが分かりました。

Javaとは異なり、Kotlinは単独の抽象メソッドを持つすべてのインターフェースに対するSAM変換を許可しません。 また、私たちはSAM変換に適したインターフェースを作成する意図は明確であるべきだと考えています。 したがって、SAMインターフェースを定義するには、funキーワードでインターフェースをマークし、それが関数型インターフェースとして使用できることを強調する必要があります。

fun interfaceの代わりにラムダ式を渡せるのは、新しい型推論アルゴリズム使用時のみであるということに留意してください。

名前付き引数とポジショナル引数の混在

Kotlinでは、明示的な名前を持つ引数(「名前付き引数」)と名前を持たない通常の引数(「ポジショナル引数」)を混在させることを禁止しています(ただし、すべてのポジショナル引数の後に名前付き引数を配置する場合は除きます)。 しかし、すべての引数が正しい位置にある状態で、途中にある引数の名前を指定したい場合には非常に煩わしいものです。 Kotlin 1.4ではこの問題を解消し、以下のようなコードを書けるようになります。

デリゲート型プロパティの最適化

lazyプロパティとその他いくつかのデリゲート型プロパティの基本的なコンパイル方法を改善する予定です。

一般的にデリゲート型プロパティは、対応するKPropertyリフレクションオブジェクトにアクセスできます。 例えばDelegates.observableを使用する場合、次のように変更されたプロパティに関する情報を表示できます。

これを実現可能にするため、Kotlinコンパイラは補足的な構文上のメンバープロパティを生成し、配列にクラス内で使用されるデリゲート型プロパティを表す全KPropertyオブジェクトを保存します。

ただし、一部のデリゲート型プロパティはいかなる場合もKPropertyを使用しません。 それらの場合は、$$delegatedPropertiesでオブジェクトを生成するのは最適ではありません。 Kotlin 1.4のリリースでは、このような場合も最適化します。 デリゲート型プロパティの演算子がinlineであり、KPropertyパラメータが使用されていない場合、対応するリフレクションオブジェクトは生成されません。

その最も顕著な例が、lazyプロパティです。 lazyプロパティのgetValueの実装はinlineであり、KPropertyパラメータを使用しません。

Kotlin 1.4以降、lazyプロパティを定義する際には対応するKPropertyのインスタンスは生成されません。 クラス内で使用している唯一のデリゲート型プロパティがlazyプロパティ(およびこの最適化に適合するその他のプロパティ)である場合、該当クラスには$$delegatedProperties配列全体が生成されません。

末尾のカンマ

この小さな構文の変更は素晴らしく便利です! パラメータリストの最後のパラメータの後に末尾のカンマを追加できます。 その後、行を入れ替えたり不足しているカンマを追加・削除したりすることなく新しいパラメータを追加できます。

その他の注目すべき変更点

Kotlin 1.3.40で導入された便利なtypeof関数がstable化し、すべてのプラットフォームでサポートされるようになります。

whenの内側でbreakcontinueを有効化できる機能については、すでにリリース1.3.60のブログ投稿で取り上げました。

おわりに

Kotlin EAPと実験的機能を試していただき、フィードバックを提供いただいた皆様に心から感謝いたします。 私たちは皆様と一緒にKotlin言語を開発し、皆様からの貴重なご意見に基づいて多くの設計上の決定を下しています。 コミュニティでこの迅速かつ効果的なフィードバックのサイクルを維持することは、Kotlinを可能な限り最高の言語にするために非常に重要です!

Kotlinを使って非常に多くの素晴らしい作品を作成していただいたコミュニティメンバーの皆様に心から感謝いたします。 共にKotlinで開発し続けましょう!

最後に、IntelliJ IDEAとAndroid Studio内のKotlinプラグインは、機能の利用に関する匿名の統計情報を収集する機能を有しています。 この統計情報は正常に動作している機能や、問題を引き起こしている機能、ならびに集中的に改善すべき機能を把握するのに役立つため、統計情報の提供にご協力いただけますようお願い申し上げます。

[原文Original post in English is written by Svetlana Isakova

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

IntelliJ Platform 2020年ロードマップ

こんにちは。JetBrains堀岡です。明けましておめでとうございます。

昨年(2019年)末にDmitry Jemerov(@intelliyole)より「IntelliJ Platform Roadmap for 2020(英語ブログ)」が発表されました。開発手法や開発環境のトレンドおよび変化に対応すべく、JetBrains製品を進化させるための様々な取り組みが紹介されています。

本稿は前記英文ブログポストを翻訳・補足したものとなります。

IJP2020banner1

はじめに

IntelliJ IDEAおよびIntelliJプラットフォームベースのIDEを改善するための現在の取り組みの一部を公開したいと思います。これらの取り組みは、パフォーマンスと最新の開発ワークフローのサポートという2つの主要なテーマに集中しており、2020年中にリリースされる予定であり、一部は春の2020.1リリースに含まれる予定です。

パフォーマンスのさらなる改善

Indexing処理の効率化と改善

JetBrains IDEにおけるパフォーマンス関連の代表的な課題は、起動時のパフォーマンス(起動に時間がかかるツールは、全体的に動作重いと認識される傾向にある)とインデックス作成速度の2点です。2019年はIDEの起動をスピードアップするために多くのことを行ました。2020年はインデックス作成のパフォーマンス向上に注力します。私たちはこの問題に対して、以下に示す多面的なアプローチにより取り組んでいます。

最初の取り組みは、作成済みのインデックスチャンクを使用できるようにし、世の中のすべてのIntelliJインスタンスが(例えば)java.lang.Stringクラスのインデックス作成と同じ作業を行う必要がなくなるようにすることです。 まずJDKへの対応から始めて、次にMaven Centralに含まれるライブラリ、それ以降、IntelliJ以外のIDEで使用されるインタープリターとパッケージをカバーできるように、年間を通じて徐々にサポートを展開する予定です。加えて、チームまたは企業内でプロジェクトソースコードのインデックスチャンクの共有をサポートする方法を検討していますが、現時点では具体的な計画はありません。

第2の取り組みは、インデックス作成中により多くのIDEアクションを実行できるようにすることで、インデックス作成による待ちを少なくすることです。

第3の取り組みは、インデックス付けに時間がかかりすぎるファイル、頻繁に再インデックス付けされるファイル、例外によるインデックスの再構築など、インデックス付けの異常を検出して通知することです。この取り組みの目的は、問題を把握し、解決のための明確な手順を提供できるようにすることです。これによりプロジェクトごとに最適なIDEのパフォーマンスを向上させる手段を提供することを目指しています。

そしてもちろん、インデックスシステムが不要な作業を行わず、オーバーヘッドがないように、従来から継続的に取り組んでいるパフォーマンスの最適化にも取り組む予定です。

Read/Writeロック・スレッドモデルの再デザイン

JetBrainsユーザーにとってのもう1つの共通する課題は、UIのフリーズです。2019年では、このようなフリーズを報告するためのインフラストラクチャを構築しました(UIフリーズ時のログ自動生成)。報告された問題を手がかりに様々なアーキテクチャの変更を行い、多くのフリーズ問題を修正しました(例えば、ファイルシステムイベントの非同期リスナー)。2020年以降、さらに大きなステップとして、書き込みロックを必要とするアクションをUIスレッドから移動する予定です。 IntelliJ IDEAは、ごく初期の頃、IDEの内部データ構造を変更するほとんどの操作がUIスレッド上で実行されることを必要とするアーキテクチャを採用しました。これらの操作には、基本的なアクション(ドキュメントへの文字の挿入)と大規模な操作(1000箇所で使用されているメソッドの名前変更)の両方が含まれています。この初期のアーキテクチャの利点は、プログラミングモデルが単純になることです。一方で、明らかな欠点は、多くのシナリオでUIの応答性が低下することです。

過去数年にわたり、このアーキテクチャの制限を回避する方法として、大規模な操作を、バックグラウンドで実行される部分と、UIスレッドで実行される部分に分割する方法をとってきました。一方で、より根本的な解決策は、UIスレッドの要件を完全になくすことです。しかしながら、ごく最近までは、独自のコードとサードパーティのプラグインを大幅に書き直さずにこれを行う方法は存在しないと思われていました。この課題に対して、現在、私達は、段階的な移行を可能にするアーキテクチャ・ソリューションを考案し、それを実装する作業を開始しています。

2020年、IntelliJ Platformの重要なUIコンポーネントとAPIをリファクタリングして、新しいスレッドモデルを採用する予定です。新しいモデルが安定し、改善が認められるようであれば、すべてのIDEで新しいモデルに切り替えて、UIをスムーズでラグのないものにしたいと考えています。

再起動不要なプラグインのロードおよびアンロード

この機能については、IntelliJ IDEA 2019.3で部分的なプレビューを既に提供しており、再起動せずにテーマとキーマッププラグインをインストールできます。 2020.1では、このサポートを全てのタイプのプラグインに拡張する予定です。バンドルされているプラ​​グインの大部分については、再起動なしでロードとアンロードをサポートします。サードパーティのプラグイン開発者向けに対しては、必要となるサポート手順を提供(日本語/英語しています。この段階で最も重要なユーザーの利点は、IDEの再起動を必要としないシームレスなプラグインのアップグレードです。

一方で、この作業の(2020.1以降のバージョンにおける)最終目標は、開いているプロジェクトに対して適切なIDE機能のみを有効化することです。 例えば、Springプラグインは、Springを使用するプロジェクトに対してのみロードされ、Angularプラグインは、Angularプロジェクトに対してのみロードされるようになります。よって、プロジェクト内において特定のテクノロジーを使用しない場合、それに関連するUI要素は表示されず、そのテクノロジーをサポートするプラグインによるパフォーマンスやメモリ使用量への影響が無くなります。

新しいワークフローへの対応

Collaborative Editing(共同編集)

共同編集は、課題トラッカーで最も投票数の多いリクエストであり、2020年またはそれ以降に実現のために作業中であることをお知らせいたします。現在私達が実現しようとしているアプローチでは、ソースコードが配置されているマシン上でプライマリIDEが動作し、他のユーザーのIDEが「シンクライアント」としてプライマリIDEに接続します。(プライマリに)接続しているすべてのユーザーは、独自の状態(開いているファイル一覧、キャレットの位置、補完バリアントリストなど)を持ち、必要に応じて別のユーザーを「フォロー」するオプションがあります。

「シンクライアント」ユーザーは、ナビゲーション、補完、デバッグなどのコアIDE機能にアクセスできますが、全てのIDE機能にアクセスできるわけではありません。 (たとえば、初期バージョンでは、シンクライアントはバージョン管理操作を実行できない場合があります。)シンクライアントとしての完全な機能一覧は現時点では未定であり、どの機能がいつサポートされるかは回答することはできません。

共同編集のサポートはRiderプロトコルに基づいて実現される予定であるため、最初はRiderでリリースされ、その後、他のIDEに拡張される予定です。いずれにせよ、この方針による作業がIntelliJ IDEA 2020.1でリリースされることを期待しないでください。これは長期的な取り組みです。

また、共同編集に対する現在のアプローチは、独自のプロトコルに基づいており、JetBrains以外のIDEとの相互運用性をサポートしないことに注意してください。

「シンクライアント」アプローチを、クラウド上でIDEバックエンドを実行するなど、共同編集以外のシナリオに拡張する可能性を検討していますが、その分野での具体的な計画を発表する準備はまだできていません。

Cloud Execution Support(IDE間で共通なターゲット環境という概念の導入)

これまで、多くのJetBrains製品が、リモートマシンまたはコンテナ内でのコードの実行とデバッグをサポートしてきました。ただし、異なる製品間で、これらの機能の実装はあまり共有されておらず、Dockerサポートなどの基本的な機能でさえ、一貫性のないUIを持っています。

この課題に対して、今回、(JetBrains製品に共通な)ターゲット環境という一般的な概念を導入します。これにより、IDEとターゲット間でファイルをコピーする方法や、IDEからターゲット上でプロセスを開始する機能を提供します。 IntelliJ IDEA 2020.1では、(ターゲットとして)サポートされる環境には、ローカルマシン、Dockerコンテナ、またはsshで接続されたマシンが含まれます。ターゲット環境の選択は、最初はJavaおよびGoの実行構成(Run Configuration)でのみ利用できる予定です。

2020.1以降のリリースでは、既存のDockerとリモートインタープリターのサポートを新しいアーキテクチャに統合する予定です。それに加えて、より深いクラウド統合を提供する予定です。接続する特定のマシンの詳細を指定することなく、プロセスをクラウド内の新しいVMで実行する必要があるケースに対応することがゴールです。

プロジェクトモデルの再デザイン

(IntelliJプラットフォームにおける)プロジェクトモデルは、IDEがプロジェクトの構造をどのように表現するかを示すものです。どのファイルがプロジェクトに属するか、どのファイルが互いに依存するか、どのライブラリが使用されるかなどです。 IntelliJ IDEAのプロジェクトモデルは長年にわたって役立ってきましたが、一定の制限があります。まず、異なるタイプのプロジェクトの任意の混合をサポートしていません。たとえば、AppCodeはXcodeプロジェクトを開き、RiderはVisual Studioソリューションを開くことができますが、GradleプロジェクトとXcodeプロジェクトを同じIDEフレームで開く方法はありません。次に、プロジェクトモデルはファイルではなくディレクトリのレベルで動作するため、同じディレクトリ内の異なるファイルが異なる依存関係を持つことを表すことはできません。これにより、BazelなどのビルドシステムをIDEに統合することが難しくなり、他のシナリオでも課題が生じます。

この課題に対して、我々が内部的に「ワークスペースモデル」と呼ぶ再設計されたプロジェクトモデルでは、これらの制限が取り除かれます。また、プロジェクトを開く際のパフォーマンスの向上、MavenおよびGradleとのスムーズな同期、より優れたプログラミングモデルなどの追加の利点ももたらします。我々は(ユーザーには見えない)IDEの内部実装をワークスペースモデルに変更することから作業を始めます。これが安定したら、同じIDEフレームで任意のタイプのプロジェクトを統合するなど、ユーザーに見える機能の実装に進む予定です。

サマリー

この投稿で説明した取り組みは、チームが取り組んでいる作業のほんの一部に過ぎません。ホリデーシーズンの後、計画に関する詳細情報を公開する予定です。もちろん、これらはすべて変更される可能性があり、上記の作業の一部がリリースされない可能性は十分にありますが、そのときは、代わりに別の素晴らしい機能を提供する予定です。

ロードマップについて、皆様からコメントをお待ちしております。また、新たな取り組みの一部をお試し頂ける準備ができたことをお知らせするアーリーアクセスプログラムの発表にも今後ご注目ください!

Happy Developing!

Posted in IntelliJ IDEA, お知らせ | Leave a comment

JetBrains Toolbox 2019.3リリースのハイライト

2019.3の製品アップデートではIntelliJベースの全IDE製品の起動が高速化され、UIの応答性が向上し、UIやエディタのフリーズが減少し、メモリ消費量が削減され、多数の新機能を利用できるようになりました。

JetBrains Toolbox 2019.3がリリースされました

JetBrains Toolbox 2019.3ツールファミリーには多数のアップデートが行われています。あらゆるツールが強化されており、新年ではさらなる生産性の向上を見込めます。

IntelliJベースの各種IDE製品の2019.3リリースでは、ツールのパフォーマンスと品質に注力しました。JetBrainsチームは直近2カ月間にわたって品質改善を行い、その間に多数のバグを修正し、新機能を開発しました。 私たちの懸命な取り組みの結果を皆様にお届けできることを大変うれしく思います。 すべてのIntelliJベースの各種IDE製品に対し、次のような注目に値する改善が行われています。

  • 起動時間の高速化
  • UIの応答性向上
  • UIやエディタのフリーズを削減
  • メモリ消費量の削減

また、このリリースでは皆様からご要望のあった多くの新機能を実装しています。

.NETツール 2019.3 Riderは特に.NET開発者向けに強化されており、機能豊富なT4テンプレートに対応し、.NET Core用のクロスプラットフォーム対応プロファイラとUnity用のテストカバレッジを提供し、パフォーマンスが改善されています。 また、ReSharper Ultimateでは最新のLocalization Managerのほか、クロスプラットフォーム対応のReSharperおよびdotTraceのコマンドラインツールが導入され、C# 8.0の言語対応も改善されています。

以下の製品ニュースの簡単な概要をご覧ください。

IntelliJ IDEA

IntelliJ IDEA 2019.3 当社の主力IDEの今年最後となるメジャーリリースでは大幅なパフォーマンスとユーザビリティの改善が行われています。これらの改善にはIDEの起動高速化、全体的なUIの応答性向上、テーマやキーマッププラグインのインストールの簡略化、VCSワークフローの強化、マイクロサービスフレームワークやMongoDBへの対応追加などがあります。

WebStorm

WebStorm 2019.3では起動の高速化、Vue.jsサポートの大幅な強化、JavaScriptやTypeScriptに対するコード補完のより高度なスマート化、長く未解決であった多数のバグの修正が行われています。

PhpStorm

PhpStorm 2019.3はPHP 7.4のすべての新機能をサポートし、それらに対応したインスペクションやクイックフィックスを実装しています。 また、PSR-12対応、リモートインタプリタ用のWSL、MongoDB対応、HTTPクライアントの更新、IDEの起動高速化、パフォーマンスの改善、その他多数のユーザビリティ改善が行われています。

Rider

Rider 2019.3は優れたT4テンプレート対応機能、.NET Core用のクロスプラットフォーム対応プロファイラ、Unity用のクロスプラットフォーム対応テストカバレッジを提供します。起動速度が向上し、デバッガがDocker Composeに対応し、バージョン管理とXamarinへの対応が全面的に強化されています。

PyCharm

PyCharm 2019.3は、Jupyterノートブック用の対話型ウィジェット、MongoDB対応機能、およびPython 3.8の全機能に対応したコード支援が実装されています。 PyCharmチームはこのリリースで品質とパフォーマンスに注力し、インタプリタと多数のバイナリパッケージの初期インデックス作成処理の高速化などの重要な結果を達成することができました。

ReSharper

ReSharper Ultimate 2019.3では最新のLocalization Manager(ローカライゼーションマネージャー)とType Name Hints(型名ヒント)が導入され、C# 8、C++ 20、Unreal Engineへの対応がさらに改善されています。 ナビゲーション、コードスタイル、ユニットテストが強化され、ReSharperとdotTraceのコマンドラインツールがLinuxとmacOSに対応しました。

RubyMine

RubyMine 2019.3では、コミュニティからのフィードバックを元にIDEの全体的な品質が改善されています。 RuboCop重大度のマッピングを使用すると、特定のRuboCop offense(違反)に対する重大度を変更できます。 1つの.httpファイルに複数のリクエストを書き込み、HTTPリクエストで動的変数を使用できます。 また、コードインサイトが強化され、デバッガ、Git、YARD、JavaScript、データベースツールが改善されています。

DataGrip

DataGrip 2019.3はMongoDBに対応し、Oracle PL/SQLデバッガ、インラインクエリの進捗などが実装されています。

GoLand

GoLand 2019.3はCPU消費が減り、実行速度がこれまで以上に速くなりました。 また、Go Modules対応が強化され、新しいクイックフィックス一式が追加され、リファクタリング機能が補強され、Evaluate Expressionを使用して埋め込みフィールドのメソッドを呼び出す機能が追加され、Mozilla rrを使用してアプリケーションをリモートでデバッグできるようになりました。

CLion

CLion 2019.3 CLion 2019.3ではコード補完が高速化され、さまざまなUIのフリーズが解消されています。 GDBとLLDBの統合、Ninjaやその他のCMakeジェネレータのほか、コードカバレッジが改善されています。 また、すでにC++20のConceptに対応しており、Rename、ナビゲーション、コード補完では同Conceptが考慮されます。

ReSharperC++

ReSharper C++ 2019.3では、コード解析やClang-Tidyの統合からナビゲーションやコードフォーマットまでエディタのあらゆる機能が強化されています。 アップグレードして新しい型ヒントでコードの可読性を向上させ、今後のC++20標準への適合度を高めましょう。 ゲーム開発者向けに、Unreal Engine 4対応の強化を行っています。

icon_AppCode

AppCode 2019.3ではコード補完、ハイライト表示、ナビゲーションが高速化されています。 また、SwiftのFunction Builder、Property Wrappers(プロパティラッパー)、Opaque Result Type(不透明な結果型)に対応し、多数の新しいSwiftインテンションが実装されています。 Mac Catalystに対応し、改良されたビルドメッセージツールウィンドウが導入されています。

当社は皆様に最適なツールと最高級の機能をお届けするため、今後も継続的に改善に取り組む予定です。 今後のリリースに関する情報をお待ちください!

JetBrainsチームは皆様のご多幸を願っております。来年もよろしくお願いいたします!

[原文Original post in English is written by Marina Kovaleva

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

PhpStorm 2019.3 リリース: PHP 7.4への完全対応、PSR-12、WSL、MongoDBなど

1PhpStorm 2019.3がリリースされました

このメジャーリリースはパフォーマンスと品質に注力しており、IDEのさらなる安定化と高速化が期待できます。 また、PHP 7.4への完全対応、PSR-12のコードスタイル、WSLにおけるリモートインタープリタ対応、MongoDBへの対応、HTTPクライアントの更新、その他多数のユーザビリティ改善が実装されています。


PhpStorm 2019.3をダウンロード

このブログ投稿では、すべての変更点に関する詳細な概要と新バージョンに関して理解しておくべきことをお伝えします。 これは、過去数か月にわたって公開してきたEAP関連のすべての投稿と、まだご紹介していなかったその他多数の便利な追加機能に関する情報をまとめたものです。 大量のGIF画像を使っていますので、気を引き締めてお読みください!

 

パフォーマンスと品質

弊社はリリースのたびにかなりの時間をパフォーマンスと品質の改善に費やしています。 しかし、このリリースに関してはその取り組みをさらに一歩進め、長期間にわたって全面的な品質改善を行いました。 今回はIntelliJプラットフォームチーム全員が一丸となり、IDEのさらなるパフォーマンスを向上に専念しました。 その結果、以下を達成することができました。

  • IDEの起動高速化
  • UIの応答性向上
  • メモリ消費量の削減

ご利用のプラットフォームによっては、IDEの読み込み時間が大幅に高速化されていることが体感できるはずです。 なぜなら、逐次実行していた一部のプロセスを並列化したり、最初のクラスが高速に読み込まれるようにクラスを整理したりしたからです。

また、UIのフリーズに関する1600件以上の報告の原因となっていた多数の問題を解決できました。

バージョン管理サブシステムのパフォーマンス最適化も行われています。 イベントの処理や無視ファイルの操作を改修しました。 大規模プロジェクトでのフリーズが削減され、ステータスが高速に更新されるようになりました。

今後もこの取り組みを続ける予定ですので、今後数回のリリースでは起動時間のさらなる高速化とさらなる最適化を期待できます。

PHP 7.4

PHP 7.4がリリースされました! 多数の素晴らしい新機能が実装されています。 新機能をご確認ください。 PhpStorm 2019.3はこれらすべての新機能に対応しています。

型付きプロパティ

これはおそらく、最も期待されているPHP 7.4の機能でしょう。PhpStormは2019.2以降で同機能に対応しています。このリリースでは、同機能に関するいくつかの問題を修正し、特殊な状況で発生する複数の事例に対応しています。
当然ではありますが、まず第一にPhpStormは型の違反を以下のようにハイライト表示します。

PHP74_typed_properties_inspection

皆さんは、プロパティの型宣言を素早く追加したいと思っているはずです。 この操作は素早く行えます。PhpStormはPHPDocやデフォルト値に基づいて、あるいはコンストラクタに値を注入したときに定義済みの型がある場合に既存プロパティの型を検出できるからです。
ともあれ、型のないプロパティでalt-enter Alt+Enterを押し、Add declared type for the fieldを選択すれば目的を達成できます。

php74_typed_properties_quickfix

アロー関数

PHP 7.4では本文内に単一のステートメントを持つ無名関数がある場合、それを fn(parameter_list) => expr のような短いアロー関数に変換できるようになりました。

arrow-functions

また、外部スコープの変数の値が自動的にバインドされるため、useセクションを書く必要はありません。

arrow-functions-scope

無名関数の上でalt-enter Alt+Enterを押し、Convert closure to arrow function オプションを使用してください。

arrow_functions_quick-fix

数値リテラルの区切り記号

数字内の任意の場所にアンダースコア記号を追加し、数字を視覚的に整形できるようになりました。 任意の数字上でalt-enter Alt+Enterを押し、Add number separatorsを適用してください。 これにより、10進数の場合は3桁ごとに、16進数・2進数・8進数の場合は4桁ごとにアンダースコア ‘_‘ が追加されます。

php74_numeric_literals_quickfix_blog

ネストした三項演算子

ほぼすべてのプログラミング言語は三項演算子を右から左に計算します。 PHPの場合はこの動作が逆であり、直観に反しているためにミスを招いていました。 PHP 7.4では、この左結合性が廃止されています。 つまり、ネストした三項演算子の使用を完全に廃止するか、必要に応じて丸括弧を使用して計算順序を明確に宣言する必要があります。

PhpStorm 2019.3は非推奨の式をハイライト表示し、その動作を明確化するためのクイックフィックス(Alter+Enter)を提供します。

php74_nested ternaries

新しいシリアル化の仕組み

PHPコアチームは、既存のシリアル化処理に関する問題が修正困難であると判断したため、__serialize() および __unserialize() という2つの新しいマジックメソッドを導入することにしました。PhpStormは、コード内でこれらのメソッドの使用箇所を検出するのを支援します。

php74_serialization

共変戻り値と反変パラメータ

PHP 7.4では複数の矛盾が解消されており、そのうちの1つは型システムに関するものでした。 親クラスを継承するメソッドを使用する際、戻り値の型については狭義なものが指定可能になりました。一方、パラメータの型は広義なものが指定可能になりました。php74_covariant_contrvariant

非推奨機能

PHPリリースの良いところは、新機能が追加されるだけではなく、古い機能が非推奨になるということです。それによって、言語がよりクリーンになり、より快適に扱えるようになります。 PHP 7.4のリリースでは、多数の機能が非推奨になりました。

PhpStorm 2019.3は、注意を要するコードブロックをハイライト表示します。 可能な場合は、非推奨の動作に対して自動的にクイックフィックスを適用することもできます。

php74_deprecations
curly_brackets

⚠️ PHP 7.4リリースでは、旧バージョンのPHPのサポートが廃止されます。 PHP 7.2にはもう1年間、セキュリティ修正のみが提供されます。 PHP 7.1は正式にサポート対象外となりました。 つまり、同バージョンで脆弱性が見つかったとしても修正されることはなく、ハッキングされるのは時間の問題だということになります。 アップグレードの準備をしてください。

PSR-12

この新しいPSR-12標準は旧来のPSR-2に取って代わり、当社が過去数年間に提供してきた新しいすべての言語機能に適合し、いくつかの矛盾を解消します。 この素晴らしいアップデートを実現したPHP-FIGを賞賛します! 現在PSR-2をご利用中の方は、PSR-12の変更点をご確認ください。

PhpStorm 2019.3にはPSR-12のコードスタイルがあらかじめ定義されており、同スタイルへの切り替えを促します。 また、Preferences | Editor | Code Style | PHPSet from…アクションを使っていつでも手動で切り替えることができます。

psr-12-set-from

PSR-12のルールの一部はインスペクションとして追加されていますが、デフォルトはオフの状態です。PhpStormでPSR-12のコードスタイルをお選びの際は、当該インスペクションをオンにすることをお勧めします。 このインスペクションは以下のように、PHP | Code Style | PSR-12Preferences | Editor | Inspections 配下でお好みに応じて調整できます。

psr-12-inspections

その後、Cmd/Ctrl+Alt+Lを押すことでエディタ内のコードを再フォーマットできます。

PSR-12_reformat

または、コミット前のクリーンアップ段階でPhpStormに処理を自動的に実行させることもできます。

psr-12-before-commit

WSL

PhpStormがWSL(Windows Subsystem for Linux)環境での開発に対応しました。これにより、Windowsマシン上でIDEを起動しながらもWSL/Linuxを開発のターゲットにすることができます。 WSLでリモートPHPインタプリタを指定し、それをスクリプトやテスト、Composerコマンドの実行やデバッグに利用できるようになります。

  • 開始する前に、お使いのWindows 10マシンにWSLとお好みのLinuxディストリビューションがインストールされていることを確認してください。 インストール手順をご覧ください。
  • ディストリビューションによっては、PHPがプリインストールされている場合があります。 インストールされていない場合は、コマンドラインから手動でインストールする必要があります。 例えば、Ubuntuの場合は以下のようなコマンドを実行できます:
    sudo apt update
    sudo apt install php php-mbstring php-dom php-xml php-zip php-curl php-xdebug
  • WSL環境にPHPをインストールしたら、PhpStormを設定できるようになります。
  • File | Settings | Languages & Frameworks | PHP配下でCLIインタプリタを追加してください。

wsl_add_interpreter

それだけです! これで、テストの実行、Composer、または現在保存しているその他の実行構成にこのインタプリタを指定できるようになります。

PHPDocの改善

PhpStormでは従来、PHPDoc内の完全修飾名やリンクは解決されていましたが、ブロック全体は単色で表示され、通常のコメントと同じスタイルが適用されていました。
PhpStorm 2019.3では、Docブロック内のすべての型、変数、パラメータ、メソッド、プロパティがハイライトされるようになりました。 コメント内にHTMLコードがある場合も、同様にハイライトされます。

phpdoc-improvements

Markdownおよび文字列内のPHPハイライト

時には文字列リテラル内でPHPを使用する必要があるかと思います。 eval()の中で文字列リテラルを使用するのは望ましくありませんが、そのような文字列があった場合はハイライト表示されます。 あるいは、Markdownファイル内のコードブロックでPHPをハイライト表示したい場合があるかもしれません。

PhpStorm 2019.3ではInjectablePHPという特別なPHPのダイアレクトにより、これらすべてを実現することができます。 このダイアレクトはPHPと同様の動作をしますが、開始タグを省略できます。
これは、phpに等しい情報文字列と共にMarkdownのフェンスに自動挿入されます。

php_injectable

PHPマーカーのあるHeredoc/Nowdoc文字列の場合はこのようになります。

injectable_php_nowdoc

eval()の呼び出しでも同様です。

Injectable_php-eval

便利な小さな改善

条件文のクイックフィックス

if-else 条件文は、言語で最も使用される構文だと思われます。 そのため、PhpStorm 2019.3では条件文を操作するための便利ですぐに利用できるアクションをいくつか追加しています。

ifステートメント内に代入がある場合にalt-enter Alt+Enterを押すと、PhpStormはそれを変数に展開することを提案します。

if-assignment-extract

複数のネストしたif条件がある場合にalt-enter Alt+Enterを押すと、それらを素早く一つにマージできるようになりました。

if-merge-conditions

ifが続くelseを単一のelseifにマージできます。

else-if-merge

あるいは、逆にelseifelseifに分割することもできます。

elseif-split

Inline constant refactoring(定数のインライン化リファクタリング)

このリファクタリングはExtract constantと逆の動作を行い、定数の出現箇所を値で置き換えます。 定数の上でCmd/Ctrl+Alt+Nを押してください。

inline_const_refactoring

Cmd/Ctrl+Tを押すと、さらに多くのリファクタリングが表示されます。

関数の引数の折り返しを解除(関数呼び出しを削除)

冗長な関数呼び出しを削除するには、Shift+Cmd/Ctrl+Deleteを押します。

unwrap_function

<?を入力した際に <?php を 自動挿入

最後のRFC投票を通過しなかったため、少なくともあと数年はPHPの省略タグは使用できるものと思われます。しかし、PhpStormは<?が入力されたことを検知次第すぐに<?phpを自動的に挿入し、省略タグの廃止を支援します。

php-no-short-tag

配列のキーの後で ‘=’ を ‘=>’ に自動補完

2019.3には、時間短縮に役立つ別の小機能も実装されています。配列に項目を追加する際に => を入力して値を指定したい場合、= を押せばPhpStormが自動的に => を挿入します。

array-quick-typing

PHPのテスト実行構成でインタプリタを指定可能

従来、PhpStormでリモートPHPインタプリタを使用してテストを実行したい場合には個別にRun configuration(実行構成)を作成しなければなりませんでした。 PhpStorm 2019.3ではTest Runnerの設定において、構成済みのPHPのRun condfigurationを指定可能できるInterpreterオプションが追加されているため、テストの実行に必要なインタプリタを既存のRun configurationから選択できるようになりました。 Docker、Vagrant、その他任意のリモートインタプリタも自由に選択できます。

run-config_specify_interpreter

$this変数のフォントと色が指定可能に

this-color-and-fonts

HTTPクライアント

Editorツールバー

.httpファイルや.restファイルを開いたときに、一般操作すべてに素早くアクセスできるツールバーが表示されるようになりました。

http-client_toolbar

ファイル内の全リクエストを実行

PhpStormのエディタベースのHTTPクライアントを使用すると、一つの.httpファイルに複数のリクエストを###で区切って書くことができます。 これは、先行するリクエストの結果に応じて後続のリクエストが決まるような連続リクエストを発行する必要がある場合に非常に便利です。

これまではそれぞれのリクエストを個別に実行する必要がありましたが、PhpStorm 2019.3ではすべてのリクエストを同時に実行できるようになりました。

http-client_run_all

リクエストの折りたたみ

ボディ部の大きなリクエストを送信する際、マルチパートフォームデータや多数のヘッダーなどを折りたたみ、エディタの表示をすっきりさせることができます。
先頭行やボディ部のみを残してリクエスト全体を折りたたむことができます。

http-client_folding_requests

ホストの補完

新しいリクエストを作成する際、以前に使用したホスト名を入力する必要はなくなりました。 PhpStormは候補リストにホスト名の一覧を表示します。

http-client-host-completion

動的変数

リクエスト内の任意の場所で使用できる動的変数を3つ追加しました。

  • $uuid – 新しいUUID-v4(e9e87c05-82eb-4522-bc47-f0fcfdde4cab)を生成します
  • $timestamp – 現在のUNIXタイムスタンプ(1563362218)
  • $randomInt – 0~1000のランダムな数字

これらの変数を必要箇所に挿入する際は、次のように波括弧を2つ使用してください。
GET http://httpbin.org/anything?id={{$uuid}}&ts={{$timestamp}}

http-client-dynamic-variables

video PhpStormのHTTPクライアントに関する
概要動画を確認し、必要な情報をすべて確認してください。

バージョン管理

プロジェクト複製UIの改良

このダイアログからGitHubにログインするか、ログイン済みの場合には、アカウントや組織別にグループ化されたすべてのリポジトリのリストをすぐにプレビューできます。

vcs_new_get_from_ui

チェックアウト

Checkout asアクションを削除し、New Branch from SelectedおよびCheckoutの2つの新しい別々のアクションを導入しました。 新しいNew Branch from Selectedアクションは新しいブランチを作成しますが、追跡する設定は行いません。 Checkoutアクションは通知なしで新しいローカルブランチを作成してそれをチェックアウトし、同名のローカルブランチが存在しない場合に選択したリモートブランチを追跡する設定を行います。

任意のブランチをプッシュ

任意のブランチの変更をプッシュする際、そのブランチに切り替える必要はなくなりました。 VCS | Branchesポップアップで目的のブランチを選択し、メニューからPushアクションを使用するだけでプッシュできます。

vcs_push_to_any_branch

日付形式のカスタマイズ

VCS AnnotateアクションやVCS Logアクションの日付形式を設定することができます。 例えば、米国の書式を使用したい場合は「mm/dd/yyyy」に設定できます。

vcs-date-formats

IDE

プラグイン管理の改善

PhpStormには、インストールして機能を拡張したり、外観をカスタマイズできる多数の素晴らしいプラグインが用意されています。 従来、プラグインの管理は若干面倒でした。毎回、IDEを再起動する必要があったからです。 PhpStorm 2019.3では土台となるコアインフラストラクチャを実装し、動的なプラグインのインストールに対応することで、この問題を解決しました。 つまり、基本的にIDEを再起動することなくプラグインを読み込んだり、削除したりできるようになりました。 現在、この機能はテーマやキーマッププラグインで有効化されています。 今後のリリースではほとんどのプラグインにこの機能を拡張する予定です。

スクロールバーのコントラスト

Preferences/Settings | Appearance & Behavior | Appearanceで「Use contrast scrollbars」チェックボックスにより、スクロールバーの視認性を向上できるようになりました。

スムーズなマウススクロール

Preferences | Appearance & Behavior | Appearance配下でSmooth scrollingオプションを有効化すると、マウスホイールやタッチパッドを使用する際に1行ずつスクロールするのではなく、インターフェース全体がスムーズにスクロールするようになります。

選択したテキスト内を検索

エディタ内で必要なコード片を選択し、Cmd/Ctrl+Fを押してFindアクションを呼び出すと、IDEが選択範囲内のみを検索します。 検索範囲を広げてファイル全体を検索対象にしたい場合は、Cmd/Ctrl+Fをもう一度押すか、ツールバーのIn Selectionオプションを切り替えてください。

find-in-selection

行をアルファベット順に並べ替える新しいエディタのコマンド

エディタで複数行を選択してメインメニューからEdit | Sort Linesを選択するか、Cmd/Ctrl+Shift+Aを押してFind Actionsから対応するアクションを実行することで、行を簡単にアルファベット順に並べ替えられるようになりました。

sort-lines

ウェブテクノロジー

弊社WebStormチームによるすべての変更を確認するには、WebStorm 2019.3の新機能ページをご覧ください。 当該ページの記載事項はすべて、PhpStorm 2019.3にも取り込まれています。

データベースツール

MongoDBのサポート

ついに、MongoDB対応に着手できる日がやってきました。
このバージョンで実装された実際の機能をご紹介します。

イントロスペクション
データベースエクスプローラー内でコレクションやフィールドを表示できます。 また、フィールド情報を取得するため、各コレクションから最初のドキュメント10件を取得します。 この動作はデータソースのプロパティダイアログのAdvancedタブでJDBCのパラメータ「fetch_documents_for_metainfo」でカスタマイズできます。

mongodb_observer

データビューア
任意のコレクションを開いたり、クエリの結果を確認したりできます。また、カラムで並べ替えたり、値を絞り込んだりすることもできます。ページングも機能します。
また、データをツリー形式で調査することもできます。 この機能を有効化するには、Gear icon | View as… | Treeをクリックしてください。

mongodb_tree_view

クエリコンソール
現時点ではコーディング支援は実装されていませんが、その事によってクエリの実行や結果の取得が妨げられることはありません。 ステートメントを実行するには、その上にキャレットを置いてCmd/Ctrl+Enterを押すか、ツールバーのPlayボタンを使用してください。

mongodb-run-query

PhpStormには初期状態でDataGripの全機能が含まれているため、DBツールでは他にも多数の新機能を発見することができます。 DataGrip 2019.3リリースの詳細な概要をお待ちください。


このリリースでのすべての変更点の完全なリストは、非常に長いリリースノートで確認できます。

機能紹介は以上となります。 最後までお読みいただき、ありがとうございました。 ご質問やご提案、バグレポートやご意見がございましたら、コメント欄にご記入ください。

JetBrains PhpStormチーム一同より
The Drive to Develop

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

GoLand 2019.3:実行速度のさらなる高速化、Go Modulesサポートの改善、新しいクイックフィックスなど

GoLand 2019.3がリリースされました!

このリリースは、通常のリリースとは若干異なります。 より快適にGoLandで開発をするために、今回はバグや不具合、予期しない動作、使用上の混乱の原因をできる限り取り除くことを目標としました。 しかし、いくつかの新機能も追加できました。 それでは、2019.3バージョンを紹介します!

blog@2x-3

GoLand 2019.3はCPU消費が減り、実行速度がこれまで以上に速くなりました。 また、Go Modulesの対応強化、新しいクイックフィックス一式の追加、リファクタリング機能の補強、さらに、Mozilla rrを使用してアプリケーションをリモートでデバッグをサポートしました。 コードインスペクション動作とコード編集機能も改善されました。例えば、runeリテラルに対し、明確かつ簡潔なエラーメッセージが表示されるようになりました。 また、すべての新規プロジェクトに対してGlobal File Watcherを有効したり、MongoDBとの連携したりできるようになりました!

GoLand 2019.3をダウンロード

主な変更点はこのブログ投稿でご覧いただけますが、実装内容の詳細については新機能ページで確認することができます。

これまでGoLandをお試しになったことがない方は、この機会に30日間の無料体験をご利用ください。すべての新機能を評価することができます。

新機能ハイライト

パフォーマンス

GoLand 2019.3はCPU消費が減り、起動時間を含めて実行速度が速くなりました。

Go Modules

  • go.modファイルでは、コードハイライトや、Project Viewで依存関係のインポートパスからそのソースへのナビゲーションが可能です。
  • Go Modulesはその完全なインポートパスとともに表示され、そのバージョンは、Project Viewで色調を抑えたフォントカラーで表示されます。

デバッガ

  • Evaluate Expression(式を評価)で、埋め込み(embedded)フィールドのメソッドを直接呼び出せるようになりました。
  • Linux上でMozilla rrを使用してリモートでアプリケーションをデバッグできるようになりました。

新しいクイックフィックス

  • Delete all unused parameters(未使用のパラメーターをすべて削除)で一度に未使用のパラメータをすべて削除。
  • Create method/function(メソッドや関数の作成)で、呼び出しがない場合に不足している関数やメソッドを作成。
  • Delete parameter namesRename to _は、未使用パラメータの名前と型、および関数型として使用されている関数を迅速に処理するのに役立ちます。
  • Reuse/Expand signature typesで、1つの宣言でパラメータの定義をマージしたり、型を各パラメータに追加。

リファクタリング

  • Change SignatureParametersResultパラメータタブでパラメータの型を示します。また、新しいチェックボックスReuse typesを取得し、結果の型を折りたたむようになりました。
  • Extract VariableRenameで名前の提案をさらに改善しました。 例えば、型エラーの式の場合はerrが、context.Contextの場合はctxが提案されます。

コードインスペクション

コードインスペクションの動作が改善されることで動作対象がより明確になり、コードの特定の部分に対して最も関連性の高いクイックフィックスとインテンションアクションが表示されるようになりました。

コード編集

  • runeリテラルの場合、式が不正である理由を説明するエラーメッセージがより明確かつ簡潔に表示されるようになりました。 また、エディタでruneリテラルを操作中に予期しない動作が発生する原因となっていた複数のバグを修正しました。
  • シンタックスハイライトが短いvar宣言の左側での再代入に対応しました。
  • コードの折りたたみが複合リテラルに対応しました。

Live templates(ライブテンプレート)

ライブテンプレート「for」と「forr」が適切な変数名を提案し、「meth」がレシーバー名のコード候補を提供するようになりました。

  • Find(macOSの場合は⌘+F、Windows/Linuxの場合はCtrl+F)を使用する際、選択範囲内のみを検索するNew In Selectionオプションがバーに追加されました。
  • ファイルマスクを使用してFind in Pathダイアログで検索を行う際、GoLandがファイル拡張子を表示するようになりました。

すべての新規プロジェクトに対してGlobal File Watcherを有効化

作成または開くすべての新規プロジェクトに対し、Global File Watcherをデフォルトで有効化できるようになりました。

チュートリアル

ウェルカム画面のプロジェクト一覧に対話型チュートリアルを追加しました。これは、GoLandの新機能や既存機能を実際の動作を確認することで学習できるようにするためのものです。

その他の変更

  • Hierarchyツールウィンドウを使用すると、選択したメソッドの呼び出し元と呼び出し先を切り替えたり、ツリー内の要素をアルファベット順に並べ替えたりできます。
  • GoLand 2019.3では、IDEを再起動せずに任意のテーマやキーマッププラグインをインストール・アンインストールできます。
  • エディタにフォーカスを戻すアクション用のカスタムショートカットを設定できます。
  • スクロールバーの視認性を向上させる方法を追加しました。

バージョン管理の改善

  • VCS | Get from Version controlの下にある新しいCloneダイアログでは、GitHubのアカウントに直接ログインできます。
  • Show Detailsリンクは、merge、rebase、cherry-pick操作を実行中に競合の原因となるコミットをリストで表示します。

データベースの更新

  • MongoDBへの基本的な対応を行っています。
  • 新しいボタンを使うと、発生した接続エラーをGoogle検索を使用して素早く検索することができます。

ウェブ開発

  • CSSライブラリがCDNに配置されている場合、そのソースをプロジェクトに追加しなくてもクラス名を補完できるようになりました。
  • GoLandはプロジェクト、標準ライブラリ、および依存物で定義されているクラス、インターフェース、型エイリアスの名前に基づいてJavaScriptファイルやTypeScriptファイルで新しい変数やパラメータの名前を提案します。

皆様のご意見をお待ちしています! GoLand 2019.3に関するフィードバックをお寄せください。問題等ございましたら、バグトラッカー(YouTrack)で新規課題(Issue)を作成するか、@GoLandIDE宛にツイートをしてください。 よろしくお願いいたします!

[原文Original post in English is written by Ekaterina Zharova

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

DataGrip 2019.3:MongoDBのサポート、Oracle対応のデバッガ、インラインクエリの進捗などを実装しました!

DataGrip 2019.3を紹介します。 2019年で3回目となるメジャーアップデートでは、さまざまな機能改善を行っています。 では、その内容を詳しく見てみましょう。

DGR

MongoDBのサポート

ついに、MongoDBに対するサポートを提供できる日がやってきました。 400票以上ものリクエストを集めたMongoDBにサポートの基本機能をついにリリースしました。

UD-Mongo

ここでは、本バージョンで提供するMongoDB機能の簡単な概要をご説明します。

イントロスペクション:データベースエクスプローラー内でコレクションやフィールドを表示できます。

データビューア:任意のコレクションを開き、クエリの結果を確認できます。また、カラムで並べ替えたり、値を絞り込んだりすることもできます。 ページングも同様に機能します。

ツリー表示:データをツリー形式で調査することもできます。 この機能を有効化するには、Gear icon | View as… | Treeをクリックしてください。

クエリコンソール:ステートメントを実行するには、その上にキャレットを置いてCmd/Ctrl+Enterを押すか、ツールバーのPlayボタンを使用してください。

Oracle PL/SQLデバッガ

沢山の皆様からリクエスト集めたPL/SQLデバッガの初回バージョンが提供されました。プロシージャ、関数、トリガー、無名ブロックをデバッグし、そのまま変数を監視できます。

UD-Debug

デバッガの動作に関する詳細は、ヘルプページをご覧ください。 デバッガについてフィードバックがある場合、こちらの課題に報告をお願いします。

ソースコードの操作

  • ルーチンの差分ビューア
  • 3ウェイマージ
  • PostgreSQLでのコード可読性向上機能
  • インテンションがソースコード内でも機能するようになりました

UD-Sources

クエリの実行

  • インラインクエリの進捗
  • EXPLAIN PLANのフレームチャート

UD-InlineProgress

コーディング支援

  • 新しいインスペクション
  • 新しいインテンションアクション
  • 行をアルファベット順に並べ替えるオプション
  • 選択範囲内のみを検索するオプション
  • フィルタリングを考慮した解決
  • Generateメニューに新しい項目を追加

UD-EqualsNull

データエディタ

  • 結果セットであいまいな名前に関する問題が発生しなくなりました。
  • Modify Tableアクションをデータエディタのコンテキストメニューから使用できるようになりました。

UD-DataEditor

新機能の完全な説明を確認するには、新機能ページをご覧ください。
以下の情報はすでにご承知かと思いますが、ご参考まで。

よろしくお願いします!
DataGripチーム一同より

[原文Original post in English is written by Maksim Sobolevskiy

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

RubyMine 2019.3リリース:RuboCopの重大度マッピング、Run Anythingの改善など

RubyMine 2019.3

RubyMine 2019.3がリリースされました! このリリースでは、皆様からのご意見に基づいてRubyMineのパフォーマンスと品質の改善に取り組むと共に、いくつかの新機能も盛り込んでいます。 新バージョンである2019.3の詳細な概要については、新機能ページをご覧ください。ここでは、大きな変更点の一部を紹介します。

RuboCop

  • RuboCopとIDEのインスペクション重大度のマッピング設定
    RuboCopの重大度

Rails

  • Run AnythingによるRailsジェネレータとRakeタスクの実行
    Run Anything

コードスタイル

  • 最初のレシーバー、または先頭のドットでメソッドチェーンを位置合わせ
    メソッドチェーンの位置合わせ
  • Rubyファイルの著作権表示を追加
    著作権

HTTPクライアント

  • .httpファイルでの動的変数の使用
    動的変数
  • ファイル内の全リクエストを実行
    全リクエストを実行

これらの機能強化やJavaScript/CSS対応、Git、データベースツールにおけるRubyMineのその他の改善内容に関する詳細は、新機能ページをご覧ください。 すべての改善点についてはリリースノートをご覧ください。ご意見、フィードバック、問題がある場合はお気軽にお知らせください。

よろしくお願いいたします。
RubyMine チーム

[原文Original post in English is written by Andrey Aksenov

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

PyCharm 2019.3リリース

Jupyterノートブック用の対話型ウィジェット、MongoDBサポート、およびすべてのPython 3.8機能用のコード支援が実装されました。 今すぐ新バージョンをダウンロードするか、IDE内からアップグレードしてください。

PyCharmの新機能

  • Jupyterノートブック上の対話型ウィジェットサポート。対話型ウィジェットサポートすることで、よりデータ本来の力を活かせるようになりました。
  • MongoDBに対応しました。PyCharm Professional Editionに含まれるデータベースツールが、最も一般的に使用されるNoSQLデータベースの一つに対応しました。
  • Python 3.8の全機能用のサポートを揃えました。これで、TypedDictsを使用する際にPyCharmスタイルのコード補完を期待できます。 また、Literal型の注釈のサポートも追加しました。
  • CSVファイルはいつもタイプミスがとても起こりやすい、非常に長い名前ではありませんか? openやPandaのread_csvのようなメソッドにおけるファイル名の補完など、小さいながらも便利な機能を追加しました。

インタプリタのインデックス生成の高速化など、その他多数の改善も行われています。これら改善内容は、新機能ページをご覧ください

[原文Original post in English is written by Ernst Haagsman

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