The JetBrains Blog https://blog.jetbrains.com/ja Developer Tools for Professionals and Teams Tue, 20 Jun 2023 07:58:58 +0000 ja hourly 1 https://blog.jetbrains.com/wp-content/uploads/2023/02/cropped-icon-512-32x32.png The JetBrains Blog https://blog.jetbrains.com/ja 32 32 JetBrains Aqua が Playwright のサポートを開始しました https://blog.jetbrains.com/ja/qa/2023/06/playwright-support-arrives-to-jetbrains-aqua/ Mon, 19 Jun 2023 04:52:36 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/06/Twitter_1200x675-2.png https://blog.jetbrains.com/qa/2023/06/playwright-support-arrives-to-jetbrains-aqua/ Aqua チームからの特別発表です!

JetBrains はごく一般的なテストフレームワークに最高クラスのサポートを提供するよう努めてきました。また、Playwright のサポートは JetBrains ユーザーから以前から要望をいただいていたものです。 そして今回、新バージョンの Aqua にて Playwright のフルサポートが実装されました!

AQUA のダウンロード

Playwright のサポート

Aqua でのテスト表示

プロジェクトを開くと、Aqua が Playwright テストを検出し、エディターからテストを実行するガターアイコンを表示します。

Playwright によるテストの実行は単純かつ簡単です。 必要であれば、ファイルまたはディレクトリからすべてのファイルを実行することもできます。

結果を調べて問題を特定

テストが完了すると、Aqua が詳細なテスト結果を表示し、そのテストの関連ログとコンソール出力を表示します。 複数の並べ替えオプションやフィルターオプションを使えば、すべての失敗したテストや無視されたテストを確認したり、テストの実行時間を検査したりするのも簡単です。


Aqua では、テスト結果ツールウィンドウから選択されたテストのソースコードまで簡単に遷移できます。 利便性を考慮し、Aqua ではインレイヒントがステップの実行時間付きで表示され、ソースコードエディター内で失敗した行または式がハイライトされ、対応するエラーメッセージが表示されます。 これにより、ユーザーが円滑に使用できるようにしています。

テストの実行設定を保存して共有

複数の異なるパラメーターや構成を使用してさまざまなテストセットを実行している場合、設定を実行構成として保存し、その構成をチームと共有したり、設定を瞬時に切り替えたりできます。

また、選択されたテストファイルが指定のテストディレクトリに存在しない場合、Aqua は Playwright.tsconfig ファイルを考慮してそれを調整するように提案します。

特定のテストケースを検索

テストが関数として宣言されていない場合など、ソースコード内で特定のテストを探すのに苦労することがあります。 ここで Aqua が役に立ちます。 ⇧ を 2 回押して検索ウィンドウを開き、Go to Symbol(シンボルに移動)またはどこでも検索を使用してください。これで探している特定のテストを簡単に検索し、目的のテストに移動できるようになっています。

デバッガー

Aqua は IDE 内に Playwright テスト用のデバッガーも初期状態で備えています。 ブレークポイントを設定すれば、実行を停止してコードを解析することができます。

高度なコード編集エクスペリエンス

Aqua にはスマートコード補完、ナビゲーション、リンターのサポートなど、最高クラスの JavaScript と TypeScript のサポートが備わっています。

コードインサイトを強化し、Playwright 固有の関数と式をサポートするようにしました。
Aqua は文字列リテラル内の CSS と XPath ロケーターをハイライトし、関連性のあるコード補完候補を提供します。

テスト対象のウェブページが組み込みのウェブインスペクターで開いている場合、Aqua はページ内の要素に対応する実際のロケーターを提案します。

page.getByRolepage.getByLabel、および page.getByTestId 関数に対してウェブページの実際の data-testidaria-labelrole 属性値を提案する場合にも、同じレベルのサポートが提供されます。 Aqua は Playwright 構成ファイルに含まれるデータテスト属性の名前に従います。

Aqua はソースコードからページの要素への遷移もサポートしています。 たとえば CSS セレクターをクリックした場合や、`page.getByTestId` 関数に渡される属性値をクリックした場合、Aqua はウェブインスペクター内でその要素をハイライトします。 これにより、ロケーターが有効であり、要素がページに存在するかどうかを簡単に確認することができます。

ウェブインスペクターではページを検査して複数の種類のロケーターを検証または生成できるため、それらのロケーターが一意で信頼できることを確認できます。

Aqua ではより簡単かつ効率的に Playwright テストの開発と保守を行うことができます。 組み込みのウェブインスペクターが有益なインサイトを IDE に提供しているおかげで、Aqua は実際のデータのコード補完とシームレスな移動操作を提供できます。

エディター以上の機能を備えた Aqua

強力な IDE である Aqua は、以下のようなプロの QA 担当者が日常業務で必要とするものもすべて備えています。

  • データベース管理。複数のデータベースに接続し、アプリケーションデータの準備と検証を行えます。
  • エディターベースの HTTP クライアント。複雑な HTTP リクエストとアサーションを実行し、それらをチームと共有したり、CI/CD システムで実行したりできます。
  • Docker のサポート。コンテナーを実行、監視、および構成できます。
  • VCS、ターミナルなど。

これは Aqua チームにとって大きなマイルストーンであり、このバージョンを皆さまにご利用してほしいと考えています。 この機能はパブリックプレビュー段階にあるため、何らかの問題が発生した場合は課題トラッカーでの報告をお願いします。

フィードバックの送信やご質問には、こちらのフィードバックフォームをご利用ください。 最新のプレビュービルドは、Toolbox App または JetBrains ウェブサイトからダウンロードできます。

ブログをご購読いただくと、最新の機能改善に関する情報が届きます。また、公式 Twitter もぜひフォローしてください。

自動テストを存分にご活用ください!

Aqua チーム一同

オリジナル(英語)ブログ投稿記事の作者:

Ryuji Owan

Oscar Rodriguez

]]>
https://blog.jetbrains.com/ko/qa/2023/06/playwright-support-arrives-to-jetbrains-aqua/ https://blog.jetbrains.com/qa/2023/06/playwright-support-arrives-to-jetbrains-aqua/
JetBrains Aqua が Cypress のサポートを開始しました https://blog.jetbrains.com/ja/qa/2023/06/cypress-support-arrives-to-jetbrains-aqua/ Mon, 19 Jun 2023 04:51:40 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/06/Twitter_1200x675-3.png https://blog.jetbrains.com/qa/2023/06/cypress-support-arrives-to-jetbrains-aqua/ Aqua チームから嬉しいお知らせです!

皆さんからの声をしっかりと受け止め、Aqua で人気のテストフレームワークである Cypress のサポートを開始しました。 Cypress を使用した作業の効率を高めることを考慮したサポートについて説明します。

AQUA のダウンロード

Cypress のサポート

Aqua のテスト可視性を導入

プロジェクトを開くと、Aqua が自動的に Cypress テストを検出してエディター内のテストの横に実行アイコンを表示するため、1 回のマウスクリックでテストを簡単に実行できます。

結果を調べる

テストが完了すると、Aqua がテストごとに関連するログやコンソールを含む包括的なテスト結果を表示します。 さまざまな並べ替えとフィルターのオプションが用意されているため、失敗したテストや無視されたテストに素早く遷移して実行時間を解析できます。

Aqua では、テスト結果ツールウィンドウから選択されたテストの対応するソースコードまで円滑に移動することができます。

効率的なテスト実行構成の管理

Aqua では、さまざまなパラメーターやセットアップを含むテストの実行構成を簡単に保存して共有することができます。

テストを簡単に検索

Aqua で特定のテストケースを検索するのが簡単になりました。 Go to Symbol(シンボルに移動)または Search Everywhere(どこでも検索)を使用すると、必要なテストを素早く特定して目的のテストに移動できます。

コード編集エクスペリエンスの強化

Aqua では高度なコード編集エクスペリエンスを得られます。 高い処理能力を持ったコード補完、ナビゲーション、リンターのサポートなど、JavaScript と TypeScript のサポートを活用できます。 Aqua のコードインサイト機能が強化され、Cypress 固有の関数と式をサポートするようになりました。 文字列リテラル内の CSS と XPath ロケーターをハイライトし、関連するコード補完候補が提供されるようになっています。

Aqua は Cypress エイリアスに最高クラスのサポートを提供します。 エイリアスの宣言と使用箇所の間の移動操作、インラインでの名前変更、および未使用のエイリアス宣言の特定を簡単に行えます。 また、アロー関数内の ‘this’ オブジェクトでのエイリアスの参照など、無効なエイリアスの使用についての警告も表示します。

単純化された要素の検査と検証

Aqua は組み込みウェブインスペクターとシームレスに連携し、テスト対象のウェブページにある要素の実際のロケーターを提案します。 ソースコードからページの要素への遷移をサポートしているため、CSS セレクターに基づいてウェブインスペクターの要素をハイライトします。 この機能は、ロケーターの有効性と要素の可用性を検証するのに役立ちます。 ウェブインスペクターではページを検査して複数の種類のロケーターを検証または生成できるため、それらのロケーターが一意で信頼できることを確認できます。

Cypress Launchpad

Open Cypress(Cypress を開く)ボタンをクリックするだけで、そのプロジェクトのテストを構成するための Launchpad に瞬時にアクセスできます。

エディター以上の機能を備えた Aqua

Aqua は単なるエディターではありません。 Cypress テストの開発と保守を合理化することができます。 Aqua は統合されたウェブインスペクターによって有益なインサイトを IDE 内で直接提供することで、リアルタイムのデータ駆動型コード補完と簡単な移動操作を実現しています。

堅牢な IDE である Aqua には、以下のようなプロの QA 担当者が日常のワークフローで使用する基本ツールが備わっています。

  • データベース管理: 複数のデータベースにシームレスに接続し、アプリケーションデータの準備と検証を簡単に行えます。
  • エディターベースの HTTP クライアント: 複雑な HTTP リクエストを実行し、アサーションを実行し、それらをチームと簡単に共有したり、CI/CD パイプラインで実行したりできます。
  • Docker サポート: コンテナーを実行、監視、および構成する Aqua の組み込み機能でコンテナー管理を単純化できます。

これらの機能に加えて、Aqua には VCS 統合やターミナルなどが備わっているため、すべてのテストのニーズを確実に満たすことができます。

この重要なマイルストーンに到達できたことを嬉しく思っており、このバージョンの Aqua を皆さまに利用していただきたいと考えております。 この機能はパブリックプレビュー段階にあるため、何らかの問題が発生した場合は課題トラッカーでの報告をお願いします。

フィードバックフォームを使用して、ご感想、ご質問、またはご意見をお寄せください。 最新のプレビュービルドは、Toolbox App または JetBrains ウェブサイトからすぐにダウンロードできます。

ブログをご購読いただくと、最新の機能改善についての情報をお届けします。また、公式 Twitter もぜひフォローしてください。

効率的な自動テストの成功を祈っております!

Aqua チーム一同

オリジナル(英語)ブログ投稿記事の作者:

Ryuji Owan

Oscar Rodriguez

]]>
https://blog.jetbrains.com/ko/qa/2023/06/cypress-support-arrives-to-jetbrains-aqua/ https://blog.jetbrains.com/qa/2023/06/cypress-support-arrives-to-jetbrains-aqua/
JetBrains Rider のライブテンプレートで次のレベルへ https://blog.jetbrains.com/ja/dotnet/2023/06/15/level-up-with-live-templates-in-jetbrains-rider/ Thu, 15 Jun 2023 08:55:30 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/05/rd-how-tos-featured_blog_1280x720.png https://blog.jetbrains.com/dotnet/2023/05/30/level-up-with-live-templates-in-jetbrains-rider/ 素直に認めましょう。 プログラミングには退屈で反復的な側面があります。 JetBrains 製品はほとんどの開発者に役立つ汎用的なクイックフィックスとテンプレートの提供によってボイラープレートを削減しています。 とは言え、プロジェクトには自分とチームだけが利用している固有のコードの構造とパターンがあると思われます。 

アプリケーション開発全体で自分とチームが使用できる専用のテンプレートセットを作成できれば素晴らしいと思いませんか? 実は、ライブテンプレートを使えば実現できるのです

この記事ではプレースホルダー変数を使って新しいライブテンプレートを作成し、そのテンプレートをプロジェクトメンバーと共有する方法について説明します。

ライブテンプレートとは?

ライブテンプレートは、ループ、条件、宣言、ステートメントなど、よく使用されるコンストラクトに展開できるコードブロックです。 JetBrains IDE に関して言えば、ライブテンプレートには展開用のキーが関連付けられており、それを記憶してアクセスすることができます。

また、ライブテンプレートには単純なテンプレートパラメーター化されたテンプレートの 2 つのカテゴリがあります。

単純なテンプレートは固定のプレーンテキストのみを含んでおり、ボイラープレートの生成に要するキー入力を減らすために使用されます。 パラメーター化されたテンプレートは変数を含んでおり、入力フィールドをファイルタイプコンテキストに基づいて計算された値に置換するか、ユーザーが手動で値を指定する従属的なステップを可能にします。

すべてのライブテンプレートは、言語またはファイル拡張子などのカテゴリによって特定のコンテキストに制限できます。 この柔軟性により、ライブテンプレートを必要なタイミングと場所でのみ使用可能にすることができます。

新しいライブテンプレートの作成

この例では、新しい “rec” というライブテンプレートを作成します。record の定義を作成して名前を設定できるテンプレートです。 このテンプレートは C# コンテキストでのみ使用できます。

まず、JetBrains Rider の設定を開き、Editor(エディター)| Live Templates(ライブテンプレート)| C# に移動します。 ここには既存のライブテンプレートがすべて表示されます。

JetBrains Rider の Editor(エディター)| Live Templates(ライブテンプレート)| C# 設定

既存のテンプレートのリストの横にある右上の New Template(新規テンプレート)ボタンをクリックします。 次の Shortcut(ショートカット)の値を「rec」に、Description(説明)を「C# レコードの作成」に変更する必要がありますが、他の設定はすべてデフォルトのままにします。

また、左側には次のテンプレートも必要になります。

// Created At $DATETIME$
$MODIFIER$ record $NAME$($END$);

テンプレートを貼り付けたら、右下にある Edit variables(変数の編集)ボタンをクリックして各プレースホルダーのマクロを変更しましょう。 次の順と設定に一致するようにしてください。

プレースホルダー 編集可能 説明
$DATETIME$  オフ 指定された書式での現在の日時
$MODIFIER$ オン 基本補完の実行
$NAME$ オン マクロが選択されていません

これらのテンプレート変数はライブテンプレートで使用可能で、後でライブテンプレートを使用する際に自動的に入力されるか、Tab ⇥ で入力できるプレースホルダーとして機能します。

$END$ が変数のリストに含まれていないことに気づくでしょう。 これは、$END$ がカーソルの最終位置を示す予約変数であるためです。

設定でのライブテンプレートの最終的な外観

これで新しいライブテンプレートを使用できるようになりました! C# ファイルで “rec” と入力し始めると、作成したライブテンプレートが表示されます。この時点で Enter を押すとテンプレートを展開し始めることができます。 以下の動画で実際の動作をお確かめください。

JetBrains Rider でのライブテンプレートの実際の動作

ライブテンプレートの共有

JetBrains Rider のレイヤーベースの設定を使用すると、ライブテンプレートを他のチームメンバーと共有できます。 前のセクションと同じ手順に従いますが、Save(保存)ボタンをクリックする前にドロップダウンを使って team-shared(チーム共有)オプションを必ず選択してください。これは、新たに作成されたライブテンプレートをソリューションのルートにある .sln.DotSettings ファイルに保存するオプションです。

JetBrains Rider の Save(保存)メニューと team-shared(チーム共有)オプション

.DotSettings ファイルにライブテンプレートの内容が表示されない場合は、ライブテンプレートを削除してからもう一度作成してみてください。 JetBrains Rider は個人環境とチーム共有環境の差分のみを保存します。 テンプレートをチームメンバーに共有できるよう、.DotSettings ファイルをソース管理に必ずチェックインするようにしてください。

まとめ

ライブテンプレートは JetBrains Rider の強力な機能です。提供されているテンプレートを使用したことがあっても、独自のテンプレートを作成したことはないのではないでしょうか。 ライブテンプレートを使用すると、チーム間でナレッジを共有できます。 個人でテンプレートを使用して不要な入力作業をすべてなくすことで、ウェビナーやライブデモを改善することも可能です。 この短いチュートリアルを通じてライブテンプレートを試し、チームメンバーとテンプレートを共有してみたいと思っていただけたなら幸いです。

共有したいライブテンプレートがあれば、下のコメント欄でご紹介ください。

参照

画像提供: Thomas Despeyroux

オリジナル(英語)ブログ投稿記事の作者:

Ryuji Owan

Khalid Abuhakmeh

]]>
https://blog.jetbrains.com/zh-hans/dotnet/2023/06/15/level-up-with-live-templates-in-jetbrains-rider/ https://blog.jetbrains.com/dotnet/2023/06/15/level-up-with-live-templates-in-jetbrains-rider/
Fleet 1.19: AI を搭載した機能と容易化された rust-analyzer 、Python インタープリター、npm の構成 https://blog.jetbrains.com/ja/fleet/2023/06/fleet-1-19-ai-powered-features-and-easier-configuration-for-rust-analyzer-python-interpreters-and-npm/ Tue, 13 Jun 2023 01:53:07 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/06/DSGN-16684-Featured-Blog-image-1280x720-2x-JAP.png https://blog.jetbrains.com/fleet/2023/06/fleet-1-19-ai-powered-features-and-easier-configuration-for-rust-analyzer-python-interpreters-and-npm/ Toolbox App で Fleet 1.19 のアップデートをダウンロードできるようになりました。 このアップデートは通常の改善と変更だけでなく、ある重要な追加機能を含んでいる特別なものです。

Fleet に AI を搭載した支援機能を追加しました! この最初の実装には、OpenAI API 経由で生成 AI を利用して動作するいくつかの新しい機能が含まれています。 Fleet はアーキテクチャと UX の両方で非常に多くの実験を重ねている製品であり、今回のアップデートについても皆さまからのご意見をお聞きしたいと考えています。

Fleet 1.19 では初期段階にある以下の AI 支援型機能をお試しいただけます。

  1. インライン AI プロンプト。任意のコードファイルで Cmd+./Ctrl+. を押すか ‘Generate Code’(コードの生成)を呼び出すだけで、必要な内容を記述できます。 Fleet AI が適切なコード箇所に最適なコードの挿入を試みます。コードを受け入れることも、再生成することもできます。
    Fleet 1.19: インライン AI プロンプト
  2. コミットメッセージの生成。 Fleet AI にユーザーが行った変更内容の説明を記述させた後、それをレビューしてコミットできます。 チームメイトをハッピーにしましょう!
    Fleet 1.19: コミットメッセージの生成
  3. コミットの説明。 コミットに重要な変更が含まれており、その内容を詳しく知りたいと思ったことはありませんか? Fleet AI Assistant が適切な説明を行ってくれます。
    Fleet 1.19: コミットの説明
  4. ドキュメントの生成。ドキュメントが必要となるコードがある場合は、ドキュメントを追加するか、Fleet AI にサポートを求めることができます。
    Fleet 1.19: ドキュメントの生成
  5. AI チャット。Fleet AI Assistant はプログラミング分野を得意としており、膨大な知識を有しています。 お試しください! Fleet には新しいタイプの AI チャットツールウィンドウが追加されており、チャットの内容を記録して後で確認することができます。
    Fleet 1.19: AI チャット
  6. コードの説明。コードは一目では分かりにくいことがあります。 Fleet はコードの理解を支援し、ユーザーがちょっとしたトリックを学べるようにします。 コードを選択して、‘Explain Code’(コードの説明)を呼び出してください。 Fleet が新しいチャットウィンドウを開き、そこに説明が表示されます。 必要に応じて追加の質問を行うこともできます。チャットは後で参照できるように保存されます。
    Fleet 1.19: コードの説明
  7. ターミナルでの支援。 思い出せないターミナルコマンドがありますか? ターミナルを開き、Cmd+./Ctrl+. を押せばアシスタントに質問できます。 IDE を閉じたり、--help の全文を読んだりする必要はありません。
    Fleet 1.19: ターミナルでの支援
  8. ターミナルへのコピー。Fleet AI Assistant からチャットの回答でシェルコマンドが提供された場合、そのコマンドをワンクリックでターミナルにコピーできます。 あとは Enter を押してコマンドを実行するだけです。
    Fleet 1.19: ターミナルへのコピー

その他多くの機能が今後のアップデートで追加される予定です!

今後の流れ

新機能をできる限り簡単にお試しいただけるよう、新しい JetBrains AI サービスへのプレビューアクセスを公開する予定です。 これは、製品ユーザーを別の大規模言語モデル(LLM)と透過的に関連付け、多くの JetBrains 製品に組み込まれた特定の AI 駆動型機能を有効にするための入口となるものです。 現在、JetBrains AI サービスは OpenAI と JetBrains が作成したいくつかのモデルをホストしており、今後さらに多くのモデルが統合される予定です。 近日中に IntelliJ ベース IDE と ReSharper もサポートされる予定です。

このアプローチにより、将来的により多くのモデルを柔軟に統合して最適な選択肢とモデルへのアクセスをユーザーに提供できるようにしています。 AI 駆動型機能はユーザーがすでに使用しているツールにネイティブに組み込む形で直接搭載されるため、必要な機能にアクセスするための時間と労力を節約することができます。 

JetBrains AI サービスはすべてのユーザーに直ちに提供されるわけではありません。 限られた数のユーザーにアクセスを提供し、人数が定員に達した時点で残りのユーザーは順番待ちリストに登録されます。 今後数週間にわたってユーザーを順次招待し、製品をお試しいただく予定です。

ユーザーのコードとデータの処理方法

私たちはユーザーのコードとデータの処理について透明性を確保することの重要性を理解しています。 JetBrains がユーザーデータの読み取りや保存を行ったり、それを使用して自社のモデルをトレーニングしたりすることはありません。Fleet は LLM モデルや Open AI などのサービスプロバイダーにデータを送信して結果を受信するという仕組みを採用しています。 Fleet はユーザーに入力を求めるほか、LLM にコンテキストを提供する目的でコード、ファイル形式、使用されているフレームワークなどの必要な追加情報を送信することがあります。 詳細については、JetBrains AI サービスの利用規約と弊社のプライバシーポリシーをお読みください。

新しい AI を搭載した支援機能を試す方法

Fleet 1.19 を起動すると、専用の AI チャットツールウィンドウが開きます。 このツールウィンドウから JetBrains AI サービスにログインする必要があります。 JetBrains Account でログインできますが、新しいアカウントを作成するのも簡単です。 ログインしたら、上記のすべての機能にアクセスできるようになります。

エディターで使用できる機能の他にも、Git 履歴のように UI のさまざまな部分で使用できる機能もあります。 Fleet では Actions(アクション)パレットで多数のアクションを検索して実行できることも忘れずに。 また、“AI Chats History”(AI チャット履歴)などの AI 支援型アクションもあります。 Fleet の機能をお試しになる際には星マーク✨にご注目ください。このマークは AI 支援型の機能とアクションであることを UI で示しています。

それだけではありません!

上記の機能をすぐにでも試したい!と思っていらっしゃるかもしれません。ですが、1.19 には他にもご紹介したい重要な変更が含まれています。

多数のご要望に応えて、npm と Node.js の実行構成を使用するオプションを追加しました。 この更新により、プロジェクトのビルド、テストの実行、その他の必要なタスクの実行するための手順が大幅に単純化されています。 npm または Node.js の構成がかなり簡単になっています。

Fleet 1.19: npm と Node.js の実行構成

検索結果を参照する際、プレビューで対応するテキストを見つけるのが困難であるというフィードバックをいただきました。 この問題は明るいハイライトを追加することで解決しました。 これにより、最も関連性の高い情報に的を絞るのが非常に楽になっています。

Fleet 1.19: 改善された検索結果のハイライト

Fleet 1.19では、rust-analyzer の設定を Fleet の settings.json ファイルに追加できる機能が実装されました。 rust-analyzer のマニュアルに記載されている項目をホームまたはプロジェクトの settings.json ファイルに追加することで、rust-analyzer をカスタマイズできます。

Fleet 1.19: Rust アナライザー

名前の変更、フォルダーの作成、コピーといったアクションやその他の変更をプロジェクトビューの折りたたまれたディレクトリノードで実行できるようになりました。 この機能強化によって皆さまの生産性が改善され、ワークフローが合理化されれば幸いです。

Fleet 1.19: 折りたたまれたディレクトリに対するアクション

Python のテスト作業を楽にするための新機能を追加しました。 最新のアップデートでは、targetType、サポートしているモジュール記述子、およびパスを設定できます。 複数のターゲットもサポートされるようになったため、特定の複数のファイルやディレクトリでよりスムーズにテストを実行できるようになっています。

Fleet 1.19: Python テストの改善

設定で複数の Python インタープリターを識別しやすくなりました。 この改善により、複数の Python インタープリターを一目で素早く識別して管理できるようになりました。

Fleet 1.19: 複数の Python インタープリターを識別可能

今回のアップデートは Fleet に多数の重要な機能改善を提供する大規模なものです。 ご満足いただければ幸いです! すべての変更内容は、リリースノート全文をご覧ください。

何か問題が発生した場合は課題トラッカーにご報告ください。また、今後の発表をお待ちください。

このアップデートをダウンロードするには、Toolbox App を確認してバージョン 1.19 をインストールしてください。

追伸: プラグインのサポートとプラグイン API は現在開発中です。 近日中に新しい情報をお届けできることを願っています。

JetBrains AI に関する FAQ

  1. AI を搭載した機能は IntelliJ ベース IDE と ReSharper で提供される予定ですか?
    はい。 更新情報をお待ちください。
  2. JetBrains IDE の AI Assistant の費用はどれくらいですか?
    現在、プレビュー段階の AI Assistant は無料でご利用いただけます。 ライセンスと価格体系については、後日お知らせします。
  3. JetBrains AI は具体的にどの LLM を使用していますか?
    すべてのサードパーティプロバイダーとそのモデルは、こちらの専用ページに掲載しています。 他にも JetBrains で作成されたモデルがあります。
  4. 順番待ちリストに登録されました。 どれくらいでアクセスできるようになりますか?
    JetBrains AI をお試しいただけるようになった時点ですぐにメールでお知らせします。 私たちはユーザーの皆様に確かなサービスを提供したいと考えています。 今後数か月以内に順番待ちリストに登録されているユーザーを順次招待する予定です。 具体的にアクセス可能になる日付はお伝えできませんのでご了承ください。


JetBrains Tech Insights Lab のアンケート、インタビュー、および UX 調査にご参加ください。 JetBrains Fleet の改善にご協力ください!

]]>
https://blog.jetbrains.com/pt-br/fleet/2023/06/fleet-1-19-ai-powered-features-and-easier-configuration-for-rust-analyzer-python-interpreters-and-npm/ https://blog.jetbrains.com/ko/fleet/2023/06/fleet-1-19-ai-powered-features-and-easier-configuration-for-rust-analyzer-python-interpreters-and-npm/ https://blog.jetbrains.com/fr/fleet/2023/06/fleet-1-19-ai-powered-features-and-easier-configuration-for-rust-analyzer-python-interpreters-and-npm/ https://blog.jetbrains.com/es/fleet/2023/06/fleet-1-19-ai-powered-features-and-easier-configuration-for-rust-analyzer-python-interpreters-and-npm/ https://blog.jetbrains.com/fleet/2023/06/fleet-1-19-ai-powered-features-and-easier-configuration-for-rust-analyzer-python-interpreters-and-npm/ https://blog.jetbrains.com/de/fleet/2023/06/fleet-1-19-ai-powered-features-and-easier-configuration-for-rust-analyzer-python-interpreters-and-npm/
2023 年開発者エコシステムアンケートにご参加ください https://blog.jetbrains.com/ja/blog/2023/06/12/take-part-in-the-developer-ecosystem-survey-2023/ Mon, 12 Jun 2023 00:11:37 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/06/Featured_Blog_1280x720.png https://blog.jetbrains.com/?post_type=blog&p=360874 JetBrains は 2017 年より毎年開発者エコシステムアンケートを実施しています。開発者コミュニティの理解を深め、製品とツールを改善し、この業界の 1 年間をまとめた資料を作成することを目的としています。 そして今年も調査の季節がやってきました!


2023 年開発者エコシステムアンケートが公開されました。この調査にぜひご協力ください。 ソフトウェア開発エコシステムの包括的で独立した調査を実施するためには、皆さまの貴重なインサイトとフィードバックが必要です。 所要時間約 30 分のアンケートにご協力の上、皆さまの開発における体験談をお聞かせください。

アンケートは 10 言語(日本語含む)で提供されており、以下のいずれかの賞品が当たるチャンスもあります。

  • MacBook Pro 16
  • NVIDIA GeForce RTX 4090 グラフィックカード
  • iPhone 14 Pro
  • 300 ドル分の Amazon ギフト券
  • JetBrains All Products Pack

あなたの回答は弊社とコミュニティ全体に大いに役立ちます。ぜひアンケートにご回答いただき、ご自身の考えをお聞かせください。 以下のリンクをクリックすると参加できます。

開発者エコシステムアンケートに回答する

調査にご協力いただける開発者の数が増えるほど、コミュニティの実情がより正確に反映されることになります。 ご友人や同僚の方にもアンケートをお勧めください。ご紹介いただくと、賞品の追加抽選にもご応募いただけます。 紹介リンクはアンケートの最後のページに記載されています。


これまでと同様、調査終了後には詳細なインフォグラフィックを公開いたします。アンケート結果と最新のテクノロジーとソフトウェア開発業界のトレンドについてのインサイトを共有する予定です。 また、皆さんが独自の調査を行えるように匿名化された生データも公開いたします。 さらに、コミュニティの他のメンバーと正確に比較できるパーソナライズされたインフォグラフィックをすべての参加者にお届けします。

では、このままアンケートページにお進みください。2023 年の開発者エコシステムの動向を把握するため、皆さまお一人お一人のご協力は大変貴重です。 皆様からのご回答を心よりお待ちしております!

JetBrains Research チーム

]]>
https://blog.jetbrains.com/zh-hans/blog/2023/06/12/take-part-in-the-developer-ecosystem-survey-2023/ https://blog.jetbrains.com/pt-br/blog/2023/06/12/take-part-in-the-developer-ecosystem-survey-2023/ https://blog.jetbrains.com/ko/blog/2023/06/12/take-part-in-the-developer-ecosystem-survey-2023/ https://blog.jetbrains.com/fr/blog/2023/06/12/take-part-in-the-developer-ecosystem-survey-2023/ https://blog.jetbrains.com/es/blog/2023/06/12/take-part-in-the-developer-ecosystem-survey-2023/ https://blog.jetbrains.com/blog/2023/06/12/take-part-in-the-developer-ecosystem-survey-2023/ https://blog.jetbrains.com/de/blog/2023/06/12/take-part-in-the-developer-ecosystem-survey-2023/
TeamCity On-Premises の価格設定の引き上げについて https://blog.jetbrains.com/ja/teamcity/2023/06/increased-pricing-for-teamcity-on-premises/ Fri, 09 Jun 2023 02:27:59 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/06/tc-featured_blog_1280x720-1.png https://blog.jetbrains.com/teamcity/2023/06/increased-pricing-for-teamcity-on-premises/ 弊社は 2006 年に TeamCity を導入して以来、多数の新機能を追加して製品の機能を大幅に拡大してきました。 TeamCity の価格は過去 15 年にわたって値上げされたことがなく(USD 価格以外の場合、為替レート調整による変更は除く)、JetBrains はオンプレミス CI/CD ソリューションの更新を 50% 割引で提供している数少ない企業の 1 つとなっています。

しかしこの度、TeamCity On-Premises の新規ライセンスと既存ライセンスの更新の両方で値上げを実施することにいたしました。理由としましては、弊社のチーム拡大を支え、リリースサイクルの短縮や組み込みの統合機能のさらなる開発を行い、より高品質かつ迅速なサポートをすべてのお客様に提供するための価格引き上げとなります。

値上げの対象は TeamCity On-Premises であり、価格体系が異なる TeamCity Cloud は対象外です。TeamCity On-Premises の新価格は 2023 年 9 月 1 日より有効となります。新価格と現行価格はいずれも TeamCity の価格ページに掲載されています。

現行価格での既存ライセンスの更新

通常、TeamCity On-Premises のライセンスは 1 年前からのみ更新可能です。 つまり、既存の TeamCity Enterprise または TeamCity Build Agent ライセンスのメンテナンス期間が今日の日付から 1 年以内に終了する場合にライセンスを更新して 1 年間延長することができます。

ただし、お客様が現在の更新価格を適用できる期間を延長するため、一時的なオファーを提供しています。 お持ちの TeamCity Enterprise または TeamCity Build Agent ライセンスのメンテナンス期間が本日の日付から 2 年以内に終了する場合、現行価格でライセンスを更新して 1 年間延長することができます。 このオファーは、2023 年 8 月 31 日までに注文されたライセンスにのみ適用されます。

例: TeamCity Enterprise または TeamCity Build Agent ライセンスのメンテナンス期間が 2024 年 4 月 30 日まで有効である場合、現行価格でライセンスを前払いで購入して 2 年先の 2026 年 4 月 30 日まで延長できます。

このオファーには前払いが必要となりますが、現行価格で更新して 1 年間延長することができます。

値上げを歓迎する方はいらっしゃらないかと思いますが、 値上げを最小限に抑えられるように今後も最善を尽くしてまいります。

今後数週間にわたり、この更新内容についてすべてのお客様にご連絡差し上げます。

今後とも JetBrains をよろしくお願い申し上げます。

オリジナル(英語)ブログ投稿記事の作者:

Ryuji Owan

Yegor Naumov

]]>
https://blog.jetbrains.com/pt-br/teamcity/2023/06/increased-pricing-for-teamcity-on-premises/ https://blog.jetbrains.com/ko/teamcity/2023/06/increased-pricing-for-teamcity-on-premises/ https://blog.jetbrains.com/fr/teamcity/2023/06/increased-pricing-for-teamcity-on-premises/ https://blog.jetbrains.com/es/teamcity/2023/06/increased-pricing-for-teamcity-on-premises/ https://blog.jetbrains.com/teamcity/2023/06/increased-pricing-for-teamcity-on-premises/ https://blog.jetbrains.com/de/teamcity/2023/06/increased-pricing-for-teamcity-on-premises/
JetBrains 製品の法人ライセンス購入や管理を効率化するためのソリューション https://blog.jetbrains.com/ja/2023/06/04/enterpriselicensesolution/ Sun, 04 Jun 2023 14:30:41 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/06/Jp-EnterpriseOffering-blog_1280x720.png https://blog.jetbrains.com/?p=359985 こんにちは。JetBrains堀岡です。

社内で管理する JetBrains 製品のライセンス数が増えてくると、購入のための社内手続きや更新対象のライセンス使用状況の管理、新規ユーザー向け導入支援等を効率化したいと思いませんか?

このブログ記事では、既に一部のお客様ではご活用いただいている、昨年(2022年)以降利用可能になった契約やライセンスの管理を効率化するための製品およびソリューションについてご紹介します。

ライセンス追加購入時のサブスクリプション期間の自動統一

ライセンスを追加購入する際に、「既存のライセンスとサブスクリプション(終了)期間を合わせたい」と思ったことはないでしょうか?

これまでは直販サイト JetBrains ストア や JetBrains Account からの購入時に、追加購入するライセンス期間の変更を希望される場合、 メールまたはサポートサイトにて都度ご連絡いただいておりました。 現在は、JetBrains 日本語サポート窓口 にご希望の統一日をご連絡をいただければ、次回の追加購入以降は自動で調整されるようになっています。

  • 日本の代理店様経由でご購入のお客様はご利用の代理店様にご相談ください。

利用方法

JetBrains 日本語サポート窓口 にご連絡いただき、希望されるライセンス期間統一日をご連絡ください。 設定以降、お客様自身による JetBrains Account での年間ライセンスを追加するための見積もり作成時および購入時に、以下の統一ルールに基づき、ご指定いただいた日付でサブスクリプション期間(ライセンスの有効期限)が自動調整されます(注意:アップグレードやダウングレードは自動調整の対象外で個別調整が必要です)

統一ルール

  • 統一日から 3ヶ月より前のリクエストいただいたお見積もりおよび購入に対しては、新規購入分のサブスクリプション期間は 1年以内の指定日までとなります。
  • 統一日から 3ヶ月以内の見積もりおよび購入に対しては、新規購入分のサブスクリプション期間は 1年以降の指定日までとなります。

例) ライセンス統一日を 12月31日 に指定した場合

  • 1月1日から9月30日の間にリクエストされたお見積もりおよび購入に対しては、新規購入分のサブスクリプション期間は同年の12月31日までとなります。費用は年間ライセンスの日割計算で算出されます。
  • 10月1日から12月31日の間にリクエストされた見積もりおよび購入に対しては、新規購入分のサブスクリプション期間は、翌年12月31日までとなります。

統一設定後、上記以外に変更したい場合は、JetBrains 日本語サポート窓口までご連絡ください。

License Vault による自動ライセンス管理

Google Account や Azure AD 等の SSO 認証可能で JetBrains ライセンスの割り当ても自動で管理できたら、、、と思ったことはありませんか?

一部のお客様には個別にご案内済みですが、有効サブスクリプション数が 50 以上のお客様は、License Vault Cloud(SaaS 版の JetBrains License Sever)の 60 日間無料トライアル、および、本番環境への移行が可能です。

License Vault をお勧めするお客様

  • ライセンスの割り当て、未使用ライセンスの回収を自動化したい(フローティングライセンスとして利用したい)
  • ライセンスの利用状況を簡単に見える化したい
  • SSO 認証でライセンスへのアクセスを管理したい(サポート対象はこちら
  • JetBrains ライセンス費用(の一部)を使用量に応じた後払いにしたい
  • 現在オンプレミス版 License Server を利用しているがクラウド(SaaS)版に移行したい

License Vault に興味のあるお客様は JetBrains 日本語サポート窓口または代理店様までご連絡いただくか、以下の資料をご覧ください。

参考資料

JetBrains Toolbox Enterprise による IDE 構成の統一と自動化

JetBrains Toolbox Enterprise は JetBrains が開発中の社内で使用する全ての JetBrains IDE の設定や構成を一元管理したいエンタープライズ企業向けのソリューションです。既に多くのお客様にご活用いただいている JetBrains Toolbox App の技術をベースとしています。

現在は正式な製品化前の状態ですが、限定 Early Access プログラムを提供しており、以下について関心のあるお客様向けデモも可能です。

JetBrains Toolbox Enterprise をお勧めするお客様

  • 社内で多くの JetBrains 製品が使用されている(目安: 100ユーザー以上)
  • 社内で開発環境基盤やソフトウェアの生産技術等をミッションとするチームやメンバーがいる
  • 社内で利用する IDE のバージョンや使用するプラグインを標準化している(又はしたいと考えている)
  • インターネットへのアクセスが制限された環境の中で、JetBrains IDE 開発環境の構築を最適化したいと考えている

JetBrains Toolbox Enterprise の利用フローとそのメリット

利用フロー

  • 管理者は社内ネットワーク内で Toolbox Enterprise Server をセットアップします
  • 管理者は Toolbox Enterprise Server では開発者が使用可能な IDE とそのバージョン、利用可能なプラグイン、VM オプションや IDE の標準設定を指定します
  • 開発者は JetBrains Toolbox App 経由で(インターネットではなく) Toolbox Enterprise Server にアクセスし、IDE をインストールします。

メリット

  • 開発者は IDE インストール時に Toolbox Enterprise Server で指定されたプラグインのインストール、IDE の設定を自動的で行うことができるため、開発環境の構築や設定に関する工数を削減できます
  • 管理者は開発環境構築のベストプラクティスを社内に簡単に展開できるようになるため、環境構築支援のための開発者とのやりとりや、障害対応にかかる工数を削減できます。
  • 管理者は事前に検証、許可されたプラグインのみインストール可能にできるので、(開発者がここの判断でインターネットからプラグインを取得する場合と比較して)セキュリティの向上と、(やみくもにプラグインの利用を禁止する場合と比較して)第三者が開発するプラグイン利用による利便性の向上の調整が可能になります
  • 管理者は Toolbox Enterprise Server で IDE の利用状況や IDE のパフォーマンス、エラーやフリーズ等の不具合レポートを確認できます。これらの情報を開発体験の向上や JetBrains サポートチームとのコミュニケーションに役立てることができます

JetBrains Toolbox Enterprise の今後

JetBrains Toolbox Enterprise は現在開発中のソリューションです。 パイロットユーザーのお客様には、上記利用フローでご利用いただいておりますが、様々な機能追加が予定されております。 また、準備が整い次第パブリックベータプログラムや価格等についても発表予定です。

参考資料

まとめ

最近利用可能になった法人のお客様向けライセンス管理効率化ソリューションをご紹介しました。 いずれのソリューションも JetBrains 製品を多くご利用いただいているお客様が抱えていた課題やフィードバックを起点として、作り出されたものです。 

これらの取り組みの展開や JetBrains 製品をより活用いただくための支援を行う CSE(カスタマーサクセスエンジニア)チームも発足しています。 ご興味がありましたら JetBrains 日本語サポート窓口までお気軽にご相談ください(電話やビデオ会議よるご支援も可能です)。

]]>
Compose Multiplatform for iOS がアルファ版に! https://blog.jetbrains.com/ja/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/ Tue, 30 May 2023 05:26:34 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/05/compose-blog-featured-image-1280x600-1-1.png https://blog.jetbrains.com/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/ 「Compose Multiplatform」は、Kotlin でクロスプラットフォームのユーザーインターフェースを構築する JetBrains の宣言的フレームワークです。そしてこの度、iOS をターゲットにできるようになりました! つまり、Compose Multiplatform を使用し、100% Kotlin で一度ユーザーインターフェースを構築すれば、Android、iOS などで使用することができます。

当リリースについては、以下についてご留意ください。

  • JetBrains は Compose Multiplatform for iOS をアルファ版としてリリースしました。実験やトイプロジェクトで使用していただけます。 ぜひお試しになり、Kotlin による共通モバイルユーザーインターフェースの将来を形作るのにご協力ください。
  • Compose Multiplatform は、Android でのすでに UI 開発で使用されている API を使用しています。 このため、最新の Android 開発の経験をお持ちの開発者は、Compose Multiplatform for iOS を非常に素早く簡単に取り組むことができます。 また、初めて使用される方も、確立された概念とベストプラクティスに則って習得できます。
  • Compose Multiplatform for iOS はアルファリリースであるため、開発中の部分がまだ多く残っております。 共通 Kotlin ユーザーインターフェースの未来を形作る情報をコミュニティの皆さまから募集したいと考えています。ぜひこの新テクノロジーをお試しになり、フィードバックの提供にご協力ください!

COMPOSE FOR IOS をさっそく使う

Compose Multiplatform for iOS は、JetBrains 主催の KotlinConf 2023 にて初披露されました。 Compose Multiplatform for iOS の実際の動作については、Sebastian Aigner と Nikita Lipsky によるタイトル「iOS における Compose Multiplatform」の発表講演の録画をご覧ください。

ビジネスロジックを超える Kotlin Multiplatform

Kotlin Multiplatform を使用することで、Kotlin 開発者は実証済みのコード共有アプローチを採り入れることができます。 プラットフォーム固有の API や機能の使用をやめることなく、異なるプラットフォーム間でビジネスロジックを共有できます。これは、多くの本番アプリケーションで実証済みのアプローチであり、アプリケーションの不要な重複ロジックの削除に活用する企業がますます増えています。

ただ、Kotlin Multiplatform を使用するシナリオにはあるものが欠けていました。それは、ターゲットとするプラットフォームごとに、個別のユーザーインターフェースのビルドや管理をしない場合のソリューションです。 これに当てはまる場合、さまざまな理由が挙げられます。各ターゲットプラットフォームに合わせた実装を提供できるリソースまたは人員が不足していることもあれば、 迅速なイテレーションによってアプリケーションをできるだけ早くユーザーに提供する必要があるため、2 つ以上の UI 実装を手動で同期させる時間がないこともあります。

この問題は Compose Multiplatform で解決できます。 ユーザーインターフェースをいったん実装した後、それをターゲットプラットフォーム間で共有するオプションが提供されています。Android と iOS での共有といった一般的なモバイルのケースであっても、デスクトップやウェブなどのその他のプラットが含まれるケースであっても解決可能です。

Compose Multiplatform は宣言的ユーザーインターフェースをいったんビルドした後、それを複数のターゲットプラットフォームで使用できるようにする Kotlin Multiplatform アプリケーションのオプションレイヤーです。

Jetpack Compose でのビルド

Compose Multiplatform は最新の Android 開発用 UI フレームワークとして推奨されており、100% Kotlin で書かれた Google の Jetpack Compose を使用してビルドします。 Compose Multiplatform を開発している JetBrains のチームは、Google とのコラボレーションを通じて Jetpack Compose リポジトリに定期的に変更を送信しています。

Compose Multiplatform の API は、Jetpack Compose で実証済みの API と同じものです。 そのため、Jetpack Compose を使用して最新の Android ユーザーインターフェースを記述した経験のある開発者は、そのスキルを Compose Mltiplatform で iOS などをターゲットとする共通ユーザーインターフェースの記述に直接生かすことができます。

API が実際に同じものであることを示すため、Compose Multiplatform コードのサンプルスニペットをこちらに掲載しています。ユーザーがボタンを押すたびに画像の表示と非表示をアニメーションするコードです。

@Composable
fun App() {
    MaterialTheme {
        var showImage by remember { mutableStateOf(false) }
        Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
            Button(onClick = {
                showImage = !showImage
            }) {
                Text("Toggle image")
            }
            AnimatedVisibility(showImage) {
                Image(
                    painterResource("compose-multiplatform.xml"),
                    "Compose Multiplatform Logo"
                )
            }
        }
    }
}

Jetpack Compose を扱ったことのある方は、このコードの大部分に見覚えがあるかと思います。Compose Multiplatform では、状態管理、レイアウト、さらにはアニメーションまで、最新の Android 開発に使用するのとまったく同じ API を使用できます。 Compose Multiplatform はリソースの読み込みなどの Jetpack Compose のシステムに特化したタスクに対し、すべてのプラットフォームで機能する便利な代替機能を提供しています。このような機能には、上記のスニペットに含まれる painterResource 関数などがあります。

ご覧のとおり、このコードは Android と iOS 上の両方で動作し、同じ結果が得られます。

iOS の場合、Compose Multiplatform のユーザーインターフェースは Skiko というグラフィックスライブラリに基づくキャンバス実装を介してレンダリングされます。 Android の場合、Compose Multiplatform は Jetpack Compose です。 つまり、アプリケーションをプラットフォーム固有の UI に移行することにしたとしても、何の不利益も被ることなく、すでに記述したコードを破棄することなく、Android で Compose Multiplatform アプリケーションを使用し続けることができます。

Kotlin Multiplatform でのビルド

Compose Multiplatform を使ってビルドされるアプリは Kotlin Multiplatform アプリケーションであるため、センサー、環境設定、データストレージ、暗号などのプラットフォーム API に同じ既定の仕組みを使ってアクセスできます。 また、データベースラッパーから SDK のクロスプラットフォームラッパーまであらゆるものを提供し、成長を続ける Kotlin Multiplatform ライブラリのエコシステムを活用することもできます。 さらに、Compose Multiplatform とは別個に Kotlin Multiplatform を使用して、ビジネスロジック、ネットワーキング、その他の抽象化されたものを共有し続けることももちろん可能です。

SwiftUI ビューと UIKit ビューとの相互運用性

実際のアプリケーションにはデバイス固有の機能へのアクセスが必要であり、多くの場合は UI レイヤーもその例外ではありません。ブラウザーを埋め込んでいるか、動画を再生しているかに関係なく、iOS 組み込みの機能を利用してユーザーのエクスペリエンスを向上させたい場合があるかと思います。

このような状況に対応するため、Compose Multiplatform のアルファ版には UI レイヤーでの相互運用性を実現するプロトタイプが含まれています。 UIKitView を使用することで、地図、ウェブビュー、メディアプレーヤー、カメラフィードなどの複雑なプラットフォーム固有のウィジェットを共通ユーザーインターフェース内に埋め込むことができます。 その一方で、ComposeUIViewController を使用した場合は、Compose Multiplatform の画面を SwiftUI アプリケーションに埋め込み、iOS アプリケーションに Compose Multiplatform を徐々に適合させることができます。

iOS の Compose Multiplatform では、ネイティブユーザーインターフェースとの相互運用性が確保されます。MapKit の MKMapView などの複雑な UI ビューを Compose UI に埋め込んだり、Compose の画面を SwiftUI アプリケーションに埋め込んだりすることができます。

優れたユーザーエクスペリエンスへの取り組み

Compose Multiplatform for iOS は現在アルファ版であるため、開発中の部分がまだ多く残っています。 複数のプラットフォームで優れたユーザーエクスペリエンスを実現するには細心の注意が要求されるため、チーム全員が Compose Multiplatform アプリケーションがその使用場所を問わず快適かつ自然に感じられるように、必要なあらゆる要素に確実に対処したいと考えています。 これは、ジェスチャーやスクロール動作などのアプリケーションの基本的な使用感を決める最も基本的な対話から始まり、 移動動作やトランジション、テキスト選択、入力管理、コンテキストメニューなどの複雑な対話にまで及びます。

また、私たちは Compose Multiplatform アプリケーションが堅牢なアクセシビリティの統合を実現し、ユーザーに選択の自由を与えることの重要性も認識しています。そのため、システムのテキスト読み上げ機能から始まり、ユーザーがデバイスに設定したズームやコントラストの設定に至るまで、基盤となる iOS のメカニズムとの堅牢な統合の実現に向けて取り組んでいます。

このように、注力すべき部分が多種多様であることは明らかです。 私たちはそれらすべてに対し、iOS の Compose Multiplatform ができる限り最高のユーザーエクスペリエンスを提供できるように必要なレベルの配慮を心がけたいと考えています。 そのためには、ユーザーのニーズを最優先する必要があります。皆さんのフィードバックをお待ちしています

また、優れたユーザーエクスペリエンスを提供する上では、リフレッシュレートの高いディスプレイであっても絶対に遅延が発生しない動作を実現することが重要であることも理解しています。 そのため、Compose Multiplatform と Kotlin/Native チームは緊密な連携を通じて、iOS での共通ユーザーインターフェースのパフォーマンスの改善に取り組んでいます。

Compose Multiplatform for iOS のテーマ

iOS の Compose Multiplatform はキャンバスベースのレンダリングを使用しているため、iOS と Android アプリケーションはどちらもデフォルトでは同じように表示されます。 現在、Compose Multiplatform はすべてのプラットフォームで Material および Material 3 ウィジェットを初期状態で提供しています。 これらのウィジェットは、Android アプリケーションですでにおなじみのウィジェットと同じものです。 組み込みのテーマ機能を使用すると、複数のプラットフォーム間で同じテーマを使用して、またはプラットフォーム固有のカスタムテーマを使用してこれらのウィジェットの外観を調整し、ブランドを反映させることができます。

Compose Multiplatform でビルドされるモバイルアプリには、Material ウィジェットが初期状態で備わっています。 その外観をカスタマイズしたり、独自のインターフェースコンポーネントを構築したり、プラットフォーム固有のテーマを適用したりすることも可能です。

当然ながら、クロスプラットフォーム UI フレームワークでは、要素をどれくらいターゲットプラットフォームの外観に似せるかが重要な問題となります。 現時点で、JetBrains チームはネイティブの UI 要素と一般的な外観の UI 要素のどちらを提供するかについては未決定です。 これは Compose Multiplatform のユーザーエクスペリエンスを決める重要な要素であるため、開発コミュニティからフィードバックを収集する以前に決断を下すべきでないと考えています。皆さんの考えやご意見をぜひお聞かせください!

Compose Multiplatform for iOS をお試しください!

Compose Multiplatform for iOS を心ゆくまでお試しください! 上記のように開発中の部分はまだたくさんありますが、すでに問題なく動作し、お試しいただける機能もたくさんあります!

サンプリアプリケーションやプロジェクトテンプレートなど、Compose Multiplatform for iOS のアルファリリースを知っていただくための手段をたくさん用意しています。

テンプレートを使い始める

Android と iOS をターゲットとする独自のアプリケーションを Compose Multiplatform で作成し始めるには、公式の GitHub テンプレートを使用するのが最も簡単です。このテンプレートには、最初の Compose Multiplatform アプリを実行し始めるための独自のチュートリアルが含まれています。

COMPOSE FOR IOS を使う

デモアプリケーションで Compose for iOS を詳しく見る

新しいテクノロジーがどのように使用されているかを知るには、サンプルを見るのが最適です。 iOS とその他のターゲットで Compose Multiplatform のデモになるサンプルプロジェクトを多数用意しました。 サンプルプロジェクトは Compose Multiplatform リポジトリにあります。

サンプルプロジェクトを詳しく見る

Kotlin Multiplatform Mobile Production Sample などの他のサンプロプロジェクトには、Compose Multiplatform に基づく UI 実装が含まれたブランチがあるため、複数のアプリ間でビジネスロジックのみを共有する場合と、アプリケーションの UI レイヤーも共有する場合の違いや類似点を比較することができます。

皆さまのご意見をお待ちしております

iOS の Compose Multiplatform はアルファ版であるため、JetBrains では皆さんのニーズに合わせてこのテクノロジーを進化させたいと考えています。

問題の報告や足りないと思われる API のご連絡、実装を希望する機能のリクエストにより、改善にご協力ください。 これはすべてプロジェクトの課題トラッカー内で行えます。

Compose Multiplatform に携わっているチームやその他の開発者との対話をご希望の方は、Kotlin Slack でのディスカッションにもぜひご参加ください。 #compose-ios チャンネルでは、Compose Multiplatform for iOS に関するディスカッションをお読みいただけます。 #compose では、Compose Multiplatform と Jetpack Compose に関する一般的なトピックについて意見を交換することができます。

皆さんが次に Compose Multiplatform で何をビルドするのか、楽しみにしています!

以下もあわせてご覧ください

オリジナル(英語)ブログ投稿記事の作者:

Ryuji Owan

Sebastian Aigner

]]>
https://blog.jetbrains.com/zh-hans/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/ https://blog.jetbrains.com/pt-br/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/ https://blog.jetbrains.com/ko/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/ https://blog.jetbrains.com/fr/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/ https://blog.jetbrains.com/es/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/ https://blog.jetbrains.com/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/ https://blog.jetbrains.com/de/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/
PyCharm で パスフレーズジェネレーターを作成する方法 https://blog.jetbrains.com/ja/pycharm/2023/05/create-passphrase-generator-in-pycharm/ Fri, 26 May 2023 08:41:49 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/05/pc-tips-tricks-blog-featured-image-1280x600-1-1.png https://blog.jetbrains.com/pycharm/2023/05/create-passphrase-generator-in-pycharm/ このチュートリアルでは、PyCharm でパスフレーズジェネレーターを作成します。 また、以下の内容も学習します。

このチュートリアルは、無料の PyCharm Community Edition を使って日常的なタスクを自動化するシンプルな CLI アプリケーションの開発方法を説明することを目的としています。 このチュートリアルの最後には実際に動作するパスフレーズジェネレーターが完成しますが、これはあくまでも学習プロジェクトになります。 このジェネレーターが生成するパスワードを実際のデータを保護する目的で使用することは絶対におやめください。

完全なコードを取得するには、リポジトリをクローンしてください。 クローン操作についての詳細は、PyCharm のドキュメントをご覧ください。

パスフレーズについて

パスフレーズとは?

多くの人はパスワードを日常的に使用しています。 サービスやウェブサイトに登録する際には、数字、特殊文字、大文字などを使った長い一意のパスワードの作成が求められます。

このような要件はすべて、パスワードにブルートフォース攻撃への耐性を持たせるためにあります。 ブルートフォース攻撃とは、基本的には正しいパスワードが分かるまで何度もパスワードを推測して試行することです。 必要となる試行回数や試行時間は、パスワードの長さや複雑さによって決まります。

パスフレーズは複数のランダムな単語で構成されるパスワードです。 意味を持たせたり、文法的に正しくしたりする必要はありません。 パスフレーズには通常 4~5 単語が含まれており、単語数が増えるほど良いとされます。 たとえば、「PhysicianBuiltHotPotatoRegularly」はパスフレーズです。

パスフレーズが優れている理由

A^1rL#2k2oPiA9H 」は適切かつ強力なパスワードです。 小文字、大文字、数字、特殊文字が含まれており、15 文字の長さです。 とはいえ、記憶するなら「A^1rL#2k2oPiA9H」と「PhysicianBuiltHotPotatoRegularly」のどちらがいいでしょうか? ちなみに、後者は 32 文字です。

パスワードを記憶することの易しさや難しさだけでなく、解読することの易しさや難しさにも注目する必要があります。 以下の表をご覧ください。

  A^1rL#2k2oPiA9H PhysicianBuiltHotPotatoRegularly
文字の種類の数 95 52
パスワードの長さ 15 32
解読に必要な試行回数(? 298 2182

いずれも強力ではありますが、パスフレーズの方が強力であり、はるかに記憶しやすいと言えます。 しかも、パスフレーズに数字と特殊文字を数個追加すれば、必要な平均推測試行回数が 2210 に増え、実質的に解読不可能となります!

まとめ:

  • ランダムな単語で構成されるパスフレーズは、ランダムな文字で構成されるパスワードよりも記憶しやすい。
  • パスフレーズは概してほとんどのパスワードよりも長いため、ブルートフォース攻撃への耐性がより高く、結果的により安全である。
  • パスフレーズは複雑さ要件に合わせて変更可能である。 たとえば、各単語の先頭文字を大文字にして大文字を含めたり、特殊文字や数字を単語の区切り文字として追加したりすることが可能である。

パスフレーズジェネレーターとは

一般に、パスフレーズジェネレーターはランダムな単語を疑似文に組み合わせてパスワードを作成するプログラムです。 このチュートリアルでは、PyCharmTyper を使用して以下を行うコマンドラインツールを作成します。

  • ランダムな 4~5 単語で構成されるパスフレーズを生成する。
  • 対応するオプションをオンにしたときにパスフレーズの各単語の先頭を大文字にする。 デフォルトでは単語の先頭文字は大文字になりません。
  • 単語の区切り文字として記号を使用する。 デフォルトでは区切り文字は使用されません。
  • 5 番目の単語を追加して、より長いパスフレーズを作成する。 デフォルトの長さは 4 単語です。

このツールはパスワードを保存しません。

前提条件

最初のステップ

Typer で「Hello World」を書く

PyCharm を初めて起動すると「ようこそ」画面が表示されます。 New Project(新規プロジェクト)をクリックします。

PyCharm のようこそ画面

PyCharm がすでに起動している場合は、メインメニューから File| New Project(ファイル | 新規プロジェクト)を選択します。

New Project(新規プロジェクト)ウィンドウが開いたら、上部にある Location(場所)フィールドを使ってプロジェクトのディレクトリを指定します。 このディレクトリ名はプロジェクト名としても使用されます。

プロジェクトの場所を指定する

PyCharm がプロジェクトの依存関係をインストールする仮想環境のタイプも選択できます。 また、環境が作成される場所とベース Python インタープリターも選択可能です。

好みの環境タイプを選択してオプションを指定(またはデフォルトを維持)したら、Create(作成)をクリックします。

PyCharm が仮想環境(この例では venv)を含むプロジェクトディレクトリを作成します。 前の手順で Create a main.py welcome script(main.py ウェルカムスクリプトの作成)チェックボックスをオフにしていなかった場合、PyCharm は main.py も作成してエディターで開きます。

PyCharm で新規に作成されたプロジェクト

このファイルには基本的な説明が記載された「Hello World」スクリプトが含まれています。 次のコードをクリップボードにコピーします。

def main():
    print("Hello World")


if __name__ == "__main__":
    typer.run(main)

次は PyCharm に移動し、⌘A / Ctrl+A⌘V / Ctrl+V を続けて押して main.py の内容を置き換えます。 以下のようになるはずです。

Typer の「Hello World」

typer に赤い波線が付いているのがわかります。 これは、Python インタープリターが Typer が何であるかを認識していないことを意味します。 このスクリプトを起動するには、このパッケージをインストールして main.py にインポートしなければなりません。

マウスポインターをハイライトされているシンボルに合わせ、ポップアップにある Install and import package ‘typer’(パッケージ ‘typer’ のインストールとインポート)を選択します。

Typer のインストールとインポート

PyCharm が Typer パッケージをプロジェクト環境にインストールして main.py にインポートします。

これでスクリプトを実行できるようになりました。 ガターの実行アイコンをクリックし、Run ‘main’(‘main’ の実行)を選択します。

ガターアイコンを使用したスクリプトの実行

「Hello World」が表示された Run(実行)ツールウィンドウが下に表示されます。

実行ツールウィンドウ

最初のパスフレーズを生成する

このコードを変更して「Hello World」の代わりにパスフレーズが出力されるようにしましょう。 ランダムな単語を選んでフレーズを作成するようにします。 そのため、単語を選び出すための単語リストが最低 1 つは必要になります。 このようなリストは手動で準備することも、入手可能ないずれかの大規模言語モデルを使用して生成することも可能です。

単語リストを作成する際は、必ず安全に保管してください。 悪意のある人物が単語リストにアクセスした場合、わずか数秒でパスワードが解読されてしまいます。

こちらのリポジトリには、このチュートリアルに掲載しているすべてのコードと複数の単語リストが含まれています。 これらは自己責任で学習のみを目的としてダウンロードし、使用できます。 これらの単語リストに基づいて実際のパスフレーズを生成しないことを強くお勧めします。

この段階では以下の 4 つの単語リストが必要です。

  • obj_nouns.txt: 生成された疑似文で目的語として機能する名詞が含まれます。
  • sub_nouns.txt: 主語として機能する名詞が含まれます。
  • verbs.txt: 動詞が含まれます。
  • adjectives.txt: 形容詞が含まれます。

各リストの単語数が多いほど、スクリプトが生成できる組み合わせ数も多くなります。 各単語は改行を入れて追加する必要があります。

生成された、またはダウンロードした単語リストをプロジェクトのディレクトリにコピーします。 必要な場合は PyCharm で単語リストを手動で作成できます。

  1. Project(プロジェクト)ツールウィンドウでプロジェクトディレクトリをクリックし、⌘N / Ctrl+N を押します。
  2. File(ファイル)を選択し、obj_nouns.txt などのファイル名を指定します。
  3. PyCharm がファイルを作成し、エディターで開きます。

プロジェクトの構造は以下のようになります。

プロジェクト構造

まず、テキストファイルから単語を読み取る必要があります。 print("Hello World") を以下のコードに置き換えましょう。

sub_nouns = read_words('sub_nouns.txt')

ここでも read_words に赤い波線が付いています。 この関数を作成しなければなりません。 マウスポインターを read_words に合わせ、ポップアップに記載された Create function ‘read_words’(関数 ‘read_words’ の作成)をクリックします。

read_words 関数の作成

PyCharm が関数スタブを作成します。 関数のパラメーターに file_name を指定し、Tab を押して関数のコードを書き始めます。

関数パラメーターの指定

ハイライトされたコードを関数の本体にコピーできます。

def read_words(file_name):
    with open(file_name, 'r') as f:
        words = f.readlines()
    return words

この関数は、パラメーターとして指定された名前のファイルを開きます。 次に、ファイルの行を要素として含む Python のリストを返す readlines() メソッドを適用します。 このリストは words 変数に格納され、関数によって返されます。

main() 関数に戻り、新たに作成した read_words 関数を使って他の 3 つの単語リストを読み取りましょう。

def main():
    sub_nouns = read_words('sub_nouns.txt')
    verbs = read_words('verbs.txt')
    adjectives = read_words('adjectives.txt')
    obj_nouns = read_words('obj_nouns.txt')

次に、単語リストのリストを作成して word_bank と名付けます。 このリストは、後でパスフレーズに使うランダムな単語を取得する際に反復処理します。

    word_bank = [sub_nouns, verbs, adjectives, obj_nouns]

選び出されたランダムな単語をさらに別のリストに格納します。 このリストを phrase_words と名付けて初期化しましょう。

    phrase_words = []

次の for サイクルで、word_bank の項目を反復処理します。 word_bank の各項目は単語を含むリストです。 組み込みの random モジュールから SystemRandom() クラスの choice() メソッドを呼び出し、そのリストからランダムな単語を 1 つ選び出します。 次に、その単語を phrase_words に追加します。

    for word_list in word_bank:
        random_word = random.SystemRandom().choice(word_list)
        phrase_words.append(random_word)

random は組み込みのモジュールではありますが、インポートする必要があります。 これに関しては、これまでと同様にエディター内に表示される赤い波線で判断できるかと思います。 マウスポインターを合わせ、Import this name(この名前をインポート)を選択します。

最後に、join を使用してランダムに選び出された単語のリストをフレーズに変換し、その結果を出力しましょう。

    passphrase = ''.join(phrase_words)
    print(passphrase)

この段階では、main() は次のようになります。

def main():
    sub_nouns = read_words('sub_nouns.txt')
    verbs = read_words('verbs.txt')
    adjectives = read_words('adjectives.txt')
    obj_nouns = read_words('obj_nouns.txt')
    word_bank = [sub_nouns, verbs, adjectives, obj_nouns]
    phrase_words = []
    for word_list in word_bank:
        random_word = random.SystemRandom().choice(word_list)
        phrase_words.append(random_word)
    passphrase = ''.join(phrase_words)
    print(passphrase)

このスクリプトを実行して、正しく動作することを確認しましょう。 ガターの Run(実行)アイコンをクリックし、Run ‘main’(‘main’ の実行)を選択すると、以下のようになります。

スクリプトの初回実行

4 つの単語がありますが、明らかにフレーズではありません。 コードが大まかに動いているのに予期しない結果になるなら、デバッグする必要があります。

現在の出力からわかるように、このスクリプトは単語リストからランダムに単語を選び出せています。 うまくいっていないのは、単語を 1 つのフレーズに組み合わせる部分です。 main() の下から 2 行目が怪しそうです。

def main():
    ...
    passphrase = ''.join(phrase_words)
    print(passphrase)

コードの特定の行が生成する結果を確認するため、その行にブレークポイントを置きましょう。 デバッガーはブレークポイントのある行を実行する直前に停止します。 ブレークポイントを設定するには、確認したい行の横のガターをクリックします。

ブレークポイントの設定

デバッグプロセスを開始するには、前に行ったようにガターの Run(実行)アイコンをクリックしますが、今回は、ポップアップの Debug ‘main’(‘main’ のデバッグ)を選択します。 デバッガーが起動してブレークポイントで実行が停止すると、Debug(デバッグ)ツールウィンドウが下に開きます。

デバッガーツールウィンドウ

Debug(デバッグ)ツールウィンドウの右側のペインでは、その時点までに代入された変数を確認できます。 phrase_words を展開して中身を確認しましょう。

phrase_words 変数の調査

リストには str 型の項目が 4 個あります。 各文字列は改行(‘\n’)で終了しています。 後でこれらの文字列を結合して出力する際、各単語が個別の行に出力されてしまうのはこれが原因です。

adjectives などの他のリストを見てみると、そこでもすべての項目が ‘\n’ で終了しているのがわかります。 これらのリストは read_words 関数から取得しています。 そのため、末尾の ‘\n’ を付けずに単語のリストを返すようにその関数を修正する必要があります。

strip() とリスト内包表記を使用して、リストの各項目を返す前に ‘\n’ を取り除くようにしましょう。

def read_words(file_name):
    with open(file_name, 'r') as f:
        words = f.readlines()
        words = [word.strip() for word in words]
    return words

main() に戻り、結果を見てみましょう。

修正後のスクリプトの実行

より優れたパスフレーズを作成する

記憶しやすくする

お気づきかもしれませんが、前のステップで生成されたパスフレーズには若干の読みにくさがあります。 各単語の先頭文字を大文字にして、可読性を改善してみてはどうでしょうか?

このアプリケーションでは、単にスクリプトを実行してパスフレーズを取得したくないため、Typer を使用しています。 このスクリプトにさまざまなオプションを渡して生成されるパスフレーズのプロパティを制御できるよう、コマンドラインインターフェースを作成する必要があります。 このようなオプションの 1 つが単語の先頭文字の大文字化です。

main.py を実行すると、次の行が実行されます。

...
if __name__ == "__main__":
    typer.run(main)

このように、typer を使用して main 関数を実行します。 このようにしているのは、Typer がコマンドライン引数を受け入れ、それを関数にパラメーターとして渡せるためです。

main() 関数に capitalize パラメーターを導入し、デフォルトで False にしましょう。

def main(capitalize = False):
    sub_nouns = read_words('sub_nouns.txt')
    ...
    passphrase = ''.join(phrase_words)
    print(passphrase)

Python コーディングのベストプラクティスによると、パラメーターの型を指定する必要があります。 capitalize にキャレットを置き、⌥Enter/ Alt+Enter を押します。 そして、Specify type for the reference using annotation(アノテーションを使用して参照する型を指定)を選択します。 capitalize にはブール値が必要であるため、bool と入力します。

では、capitalizeTrue の場合に、単語を結合する前に先頭文字を大文字にしてみましょう。 if capitalize: を使用する if ステートメントから始めます。 read_words 関数を修正した時と同じような方法で行いますが、今回はリスト内包表記を手動で書かずにライブテンプレートを使用します。 compl と入力して Enter を押します。 次に、リスト内包表記のすべての要素を指定し、Tab を押して次の要素に移動します。

以下のようになります。

def main(capitalize: bool = False):
    sub_nouns = read_words('sub_nouns.txt')
    verbs = read_words('verbs.txt')
    adjectives = read_words('adjectives.txt')
    obj_nouns = read_words('obj_nouns.txt')
    word_bank = [sub_nouns, verbs, adjectives, obj_nouns]
    phrase_words = []
    for word_list in word_bank:
        random_word = random.SystemRandom().choice(word_list)
        phrase_words.append(random_word)
    if capitalize:
        phrase_words = [phrase_word.capitalize() for phrase_word in phrase_words]
    passphrase = ''.join(phrase_words)
    print(passphrase)

先頭文字の大文字化を正しく動作させるため、main.py を実行する際に capitalize を引数として渡す必要があります。 これを行うため、実行構成を編集しましょう。 IDE ウィンドウの上部にある Run(実行)ウィジェットを見つけましょう。

PyCharm の実行ウィジェット

このウィジェットは、希望する実行構成の選択と、実行またはデバッグモードでの起動を選択するのに使用できます。 PyCharm ではガターアイコンをクリックしてスクリプトを起動した時点ですでに main 構成が作成されています。 その構成の名前をクリックしてメニューを開き、Edit configurations(構成の編集)を選択します。

実行/デバッグ構成の編集

開いたダイアログで、Parameters(パラメーター)フィールドに --capitalize を指定します。

パラメーターを構成に追加

OK をクリックして、更新された構成を保存します。 次に、ウィジェットの実行アイコンをクリックします。

結果は以下のようになります。

‘capitalize’ オプションを含むスクリプトの実行

可読性を高めるため、パスフレーズの単語を区切ることができます。 特殊文字を区切り文字として使用すると、特定のパスワード複雑さ要件に合ったパスフレーズを生成できるため、2 つの目的を達成できます。

main() 関数の下から 2 行目を以下のように編集します。

def main(capitalize: bool = False):
    ...
    passphrase = separator.join(phrase_words)

この関数には separator パラメーターがまだ存在しないため、PyCharm はこのパラメーターを赤い波線でハイライトします。 その波線にマウスポインターを合わせ、ポップアップの Create parameter ‘separator’(パラメーター ‘separator’ の作成)を選択します。 デフォルトでは区切り文字を追加しないため、‘’ をデフォルト値に指定します。

また、パラメーターの型に str を指定しておきましょう。 以下のようになります。

def main(capitalize: bool = False, separator: str = ''):
    ...
    passphrase = separator.join(phrase_words)
    print(passphrase)

さあ、結果を確認したくなったはずです。 その前に実行構成を更新することを忘れないでください。 Run(実行)ウィジェットをクリックし、Edit configurations(構成の編集)を選択して、Parameters(パラメーター)フィールドに新しいパラメーターを追加します。

別のパラメーターを実行構成に追加

構成を実行して結果を確認します。

‘separator’ オプションを含むスクリプトの実行

特殊文字と数字でパスフレーズの単語が区切られるようになりました。 さらに、“#4” や “%7” などの複数の記号を使用し、さまざまなウェブサイトが指定するパスワード要件も満たすことができます。

さらに解読しにくくする

パスフレーズが長いほど、ブルートフォース攻撃を成功させるために必要な試行回数も増えます。 パスフレーズに単語をもう 1 つ含められるようにしましょう。

まずは副詞を含む 5 番目の単語リストを準備し、プロジェクトのディレクトリに配置します。 main() 関数のシグネチャーにブール型の long パラメーターを追加します。 このパラメーター(オプションかつデフォルトでは False)に応じて word_bank に単語リストがもう 1 つ追加されます。

def main(capitalize: bool = False, separator: str = '', long: bool = False):
    ...
    word_bank = [sub_nouns, verbs, adjectives, obj_nouns]
    if long:
        adverbs = read_words('adverbs.txt')
        word_bank.append(adverbs)
	...

今回は組み込みのターミナルを使ってスクリプトを実行してみましょう。 ⌥F12/ Alt+F12 を押して開いた Terminal(ターミナル)ツールウィンドウに以下のコマンドを入力します。

python main.py --capitalize --separator "1_" --long

以下のように表示されます。

‘long’ パラメーターを含むスクリプトの実行

より実用的なツールにするための変更

短いオプション名を定義する

CLI ツールを使用した経験のある方は、通常は 1 文字だけで引数を指定できることをご存知でしょう。 このツールにもその機能を追加しましょう。 コードの可読性を高めるため、関数シグネチャーを整形して各パラメーターを別々の行に分けましょう。

def main(
    capitalize: bool = False,
    separator: str = '',
    long: bool = False
):
...

次に、各パラメーターのデフォルト値を typer.Option(, , ) に置き換えます。

main() のシグネチャーは最終的に以下のようになります。

def main(
    capitalize: bool = typer.Option(False, '--caps', '-c'),
    separator: str = typer.Option('', '--separator', '-s'),
    long: bool = typer.Option(False, '--long', '-l')
):
...

すべてのオプションをまとめて指定できるようになりました。 区切り文字(‘-s’)は後に文字列を書く必要があるため、最後に配置すべきです。

すべてのオプションを含むスクリプトの実行

オプションのドキュメントを書く

Typer はデフォルトで --help オプションも追加します。 現時点でどのように機能するか見てみましょう。

‘--help’ オプションを含むスクリプトの実行

どんなパラメーターが存在し、その正式な名前と短い形式の名前が何であるかがわかります。 実際の動作を説明するコメントを追加してはどうでしょうか? 以下のように、main() の各パラメーターに help を追加します。

def main(
    capitalize: bool = typer.Option(False, '--caps', '-c', help='Capitalize each word.'),
    separator: str = typer.Option('', '--separator', '-s', help='Separate words with the given symbol.'),
    long: bool = typer.Option(False, '--long', '-l', help='Make the passphrase longer by including an adverb.')
):
...

--help がより有用な情報を表示するようになりました。

スクリプトの help に有用な情報を表示

PyCharm を使わずにシステムのターミナルなどでパスフレーズジェネレーターを使用することもできます。 その場合は、以下のコマンドを使用してシステムインタープリターに Typer をインストールする必要があります。

python3 -m pip install --user typer

まとめ

このチュートリアルでは以下について学習しました。

  • PyCharm Community Edition でのプロジェクトの作成
  • Python と Typer による使いやすい CLI ツールの作成
  • エラーを回避しながらより迅速にコードを書くためのクイックフィックスとライブテンプレートの使用
  • コードのデバッグ
  • 実行構成とターミナルを使用した PyCharm でのコードの実行

オリジナル(英語)ブログ投稿記事の作者:

Ryuji Owan

Denis Mashutin

]]>
https://blog.jetbrains.com/zh-hans/pycharm/2023/05/create-passphrase-generator-in-pycharm/ https://blog.jetbrains.com/pycharm/2023/05/create-passphrase-generator-in-pycharm/
Kotlin マスコットの Kodee (コディー)をご紹介! https://blog.jetbrains.com/ja/kotlin/2023/05/the-kotlin-mascot-returns/ Thu, 25 May 2023 07:36:56 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/04/DSGN-16174-Blog-post-banner-and-promo-materials-for-post-about-Kotlin-mascot_Blog-Featured-image-1280x600-1.png https://blog.jetbrains.com/kotlin/2023/04/the-kotlin-mascot-returns/ 4月に行われた KotlinConf で脚光を浴びた、Kotlin マスコットが刷新され帰ってきました! 私たちが Kotlin マスコットを最初に紹介してから久しいですが、Kodee (コディー)という名前を授けられ皆様のもとに戻ってまいりました。

皆さまからのフィードバックを考慮し、Kotlin コミュニティの方々がつながりを感じられるよう、マスコットを親しみやすく楽しいキャラクターにデザインし改良を加えています。

新しくなった Kotlin のマスコット『Kodee』

私たちはコミュニティに何か特別で、想像力を刺激し、つながりを感じるようなキャラクターを提供することを目指しました。 このマスコットが単なるキャラクター以上の存在になってくれると信じております。
コミュニティの皆さまがそれぞれを表現するために使える親しみやすい仲間として可愛がっていただけたら幸いです。

かわいらしいマスコットの感情豊かな表現にもご注目ください。 陽気で機嫌のいい時もあれば、私たちと同じように落ち込むこともあります。 Kodee には、プロセスを高速化するためのランニングやリラックス、ダンスなどの新しいスキルが追加されています。

さまざまな感情を持つ Kotlin の新装マスコット

ぜひ、皆さまのデジタル作品や印刷物にて Kodee をご活用ください。 カラースキーム、フォントスタイル、全体的なデザイン構成など、このマスコットの使用方法を説明した具体的な Kotlin マスコットガイドラインを作成しました。

また、皆さまがご覧いただける Kotlin マスコットアセットもご用意しております。 アセットはこちらからダウンロードできます。 新しくなったマスコットが、あなたの内に秘めた芸術家魂を刺激してくれることを願っています。 創造力を発揮し、Kodee とともに進化しましょう!

以下のように Kodee をアレンジすることもできます。

Kotlin の新装マスコット『Kodee』のアレンジ

フィードバックをお寄せいただきありがとうございました! Kotlin をうまく表現したマスコットに仕上げることができたこと、皆さまには心より感謝申し上げます。

今後のアップデートやニュースにもご期待ください!

オリジナル(英語)ブログ投稿記事の作者:

Maria Krishtal

Maria Krishtal

]]>
https://blog.jetbrains.com/zh-hans/kotlin/2023/05/the-kotlin-mascot-returns/ https://blog.jetbrains.com/ko/kotlin/2023/05/the-kotlin-mascot-returns/ https://blog.jetbrains.com/fr/kotlin/2023/05/the-kotlin-mascot-returns/ https://blog.jetbrains.com/kotlin/2023/05/the-kotlin-mascot-returns/
KotlinConf 2023: 録画放送で体験をもう一度 https://blog.jetbrains.com/ja/kotlin/2023/05/kotlinconf-2023-recordings/ Wed, 17 May 2023 06:03:37 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/05/DSGN-16229-Banners-for-KotlinConf-recordings2_Blog-Featured-image-1280x600-JA.png https://blog.jetbrains.com/kotlin/2023/05/kotlinconf-2023-recordings/ KotlinConf 2023 セッションの録画放送が公開されました!

イベントを見逃してしまった方や、お気に入りの講演をもう一度ご覧になりたい方は、KotlinConf のウェブサイトにてすべての講演をチェックしてください。カンファレンスにて撮影された写真も公開しています。 一部のセッションについては、それぞれの公演をクリックすれば «Download slides» よりスライドにアクセスすることができます。 また、Kotlin YouTube チャンネルでも録画をすべてお楽しみいただけます。

KotlinConf は 2023 年 4 月 12 〜 14 日の間アムステルダムで開催されました。参加者、講演者、パートナーの総勢 1,300 人以上にご参加いただきました。1 日目の 12 日には 1 日ハンズオンワークショップを開催し、 2 日目のカンファレンスでは、Roman Elizarov、Svetlana Isakova、Egor Tolstoy、および Grace Kloba による基調講演を皮切りに、 2 日間にわたり 5 つのトラックで同時セッションが行われました。 最終日には Hadi Hariri によるエンターテイメント性と情報に溢れたクロージングパネルと、現地およびオンラインの参加者からの質問に講演者が回答するセッションで幕を閉じました。

以下のカンファレンス追加資料をぜひご覧ください。

  • こちらのブログ記事では、基調講演のハイライトをまとめています。
  • KotlinConf 講演者の Huyen Tue Dao をホストに迎え、カンファレンス開催中に撮影された講演者やカンファレンス参加者とのインタービューを収録した KotlinConfersations をご覧ください。 

それではご自身の快適なスクリーンで KotlinConf 2023 をお楽しみください!

カンファレンスに関する最新情報を入手するには、Twitter で KotlinConf(@kotlinconf)をフォローしてください。

オリジナル(英語)ブログ投稿記事の作者:

Ryuji Owan

Ksenia Shneyveys

]]>
https://blog.jetbrains.com/zh-hans/kotlin/2023/05/kotlinconf-2023-recordings/ https://blog.jetbrains.com/ko/kotlin/2023/05/kotlinconf-2023-recordings/ https://blog.jetbrains.com/fr/kotlin/2023/05/kotlinconf-2023-recordings/ https://blog.jetbrains.com/kotlin/2023/05/kotlinconf-2023-recordings/
新しい Gradle ビルドで Kotlin DSL がデフォルトに https://blog.jetbrains.com/ja/kotlin/2023/05/kotlin-dsl-is-the-default-for-new-gradle-builds/ Tue, 09 May 2023 05:07:02 +0000 https://blog.jetbrains.com/wp-content/uploads/2023/04/DSGN-15924-Kotlin-as-Gradles-Go-To-DSL_Blog-Featured-image-1280x600-1.png https://blog.jetbrains.com/kotlin/2023/04/kotlin-dsl-is-the-default-for-new-gradle-builds/ 私たちは構造化に優れ、より管理しやすいビルドを記述できるよう、開発者の支援に常に努めております。 この目標を達成するにあたり、Gradle ビルドスクリプトとプラグインの記述に Kotlin を適用することはごく自然なことです。 Kotlin は、DSL の作成と開発者エクスペリエンスの大幅な改良を施すのに最適な、多くの強力な機能を提供しています。

私たちは初めて Kotlin が Gradle に導入されて以来、Gradle ユーザーにとって円滑で快適なエクスペリエンスを実現することを目指して多くの作業に取り組んできました。 そして今日は皆さまに重要なお知らせがあります。この度、Gradle が Kotlin DSL を新しい Gradle ビルドのデフォルトに指定したことが発表されました! 今後は Kotlin DSL がプラグインとドキュメントのデフォルトのオプションとなります。 第一級関数や拡張メソッドなどのリッチな機能により、Kotlin は Gradle スクリプトの作成にベストな要素を維持するだけでなく、それらをさらに改善することができます。

JetBrains、Google、および Gradle、新しい Gradle ビルドで Kotlin DSL がデフォルトになったと発表

JetBrains、Google、および Gradle のコラボレーションにより、Kotlin DSL はさらにその成熟度を増し、開発者がプロジェクトでさらに効率よく使えるユーザーフレンドリーなツールになりました。」 ~ Gradle チーム

また、Google は Kotlin DSL が Android アプリの Gradle ビルドファイル用のデフォルトスクリプトであることを表明しました。

Google、Gradle、および JetBrains は引き続き緊密なコラボレーションを通じてコーディングスタイルを統一化し、イディオムを定義する意向です。このような取り組みにより、最終的にはコーディングの品質が改善されることが期待されます。

この記事では、Gradle スクリプトを記述するための Kotlin DSL の主なメリットをいくつか説明し、IDE における build.gradle.kts ファイルの既存のサポート機能を紹介します。

Groovy に代わって Kotlin DSL を選択するメリット

さまざまな言語から 1 つの言語を選択する理由は開発者によって異なるかと思います。 以下のセクションでは、Kotlin の主な強みとそれが Gradle ビルドスクリプトとプラグインを記述するのに適している理由を紹介しています。

Android の Gradle ビルドファイルを Grooby から Kotlin にするかまだ迷われてている方は、以下の Kotlin を使用する 4 つの主なメリットを参考にしてください。

1. コンパイル時のチェック

2 つの言語の大きな違いは、Groovy が動的言語であるのに対し、Kotlin は静的型付け言語であることです。 つまり、Kotlin DSL が使用される場合、ビルドスクリプトのエラーは実行時ではなくコンパイル時に発生することになります。

動的な型チェックの場合、エラーはビルドスクリプトが実行されるまで検出されません。 コンパイル時エラーの場合は、それよりも前の時点で問題を修正するチャンスがあります。 さらに、IDE で作業中はエディターによってエラーをハイライトできます。 これは、たとえば `application` ではなく構成名 `applications` を参照しようとする際に確認できます。

Kotlin DSL が使用される場合、ビルドスクリプトのエラーはコンパイル時に発生しない

2. より優れた IDE 体験

コードに関するセマンティック情報がより多いため、以下のような IDE の機能を最大限に活用できます。

  • 自動補完とコンテンツアシスタント
  • ソースコードの移動操作
  • リファクタリング

これまでのところ、Kotlin の統合が最も進んでいるのは IntelliJ IDEA と Android Studio です。 ただし、Kotlin DSL ベースのビルドを別の IDE でインポートして作業することもできます。 Gradle のドキュメントでは、Kotlin DSL の IDE サポートマトリクスを確認できます。

3. 単純化された宣言的プラグイン構文

Kotlin DSL は従来の Groovy DSL の代替構文を提供しており、コア Kotlin 言語と同じメリットが備わっています。 2 つの言語を比較してみましょう。

Gradle プラグインをプロジェクトに適用する際には、プラグイン ID のみを指定する必要があります。 たとえば、Groovy DSL で `application` プラグインを指定する場合は以下のようになります。

Groovy DSL でのプラグイン ID の指定

Kotlin DSL の構文は単純化されているため、Kotlin で入力する必要があるのは “application” のみです。

Kotlin DSL でのプラグイン ID の指定

前述のように、存在しないプラグインを適用しようとすると、IDE で構文エラーが指摘されます。

4. 拡大し続ける Kotlin 開発者コミュニティ

Kotlin には言語とライブラリに貢献して Gradle プラグインを提供する大規模で活発な開発者コミュニティが存在します。

コミュニティの拡大により、経験豊かな開発者と Kotlin を使い始めたばかりの開発者の両方に役立つ情報が豊富に用意されています。 このような情報には Kotlin の公式ドキュメント、フォーラム、ブログ、ソーシャルメディアのスレッド、オンライン教育コースなどが含まれます。

役に立つリソースが豊富にそろっているため、問題の解決策を簡単に発見してスキルアップできます。

Groovy から Kotlin DSL への移行

上記のようなメリットと堅牢な機能を持つ Kotlin DSL は生産性を高め、高パフォーマンスソフトウェアを構築するのに最適な選択肢です。 既存の Gradle ビルドを Groovy から Kotlin DSL に移行する場合は、Gradle の移行チュートリアルをご覧ください。 また、Android 開発者向けには Android アプリの Gradle ビルドファイルを Groovy から KTS に変換する方法に関する詳細なガイドが用意されています。

Gradle は今後も Groovy DSL をサポートします。 Gradle は Groovy DSL を使用する複雑なビルドロジックを伴う大規模なプロジェクトについてはまだ移行しないことを推奨していますが、 Kotlin が Gradle のデフォルトの DSL となった今、Kotlin DSL はより快適にビルドスクリプトの記述と編集を行いたいと考えている Gradle ユーザーにとってはるかに有益であると弊社は考えています。

JetBrains チームは今後も自社のテクノロジーをさらに強化し、効率的なアプリケーションを開発するための機能の豊富なツールをユーザーに提供していくことを努めてまいります。

オリジナル(英語)ブログ投稿記事の作者:

Anton Yalyshev

Anton Yalyshev

]]>
https://blog.jetbrains.com/zh-hans/kotlin/2023/05/kotlin-dsl-is-the-default-for-new-gradle-builds/ https://blog.jetbrains.com/ko/kotlin/2023/05/kotlin-dsl-is-the-default-for-new-gradle-builds/ https://blog.jetbrains.com/fr/kotlin/2023/05/kotlin-dsl-is-the-default-for-new-gradle-builds/ https://blog.jetbrains.com/kotlin/2023/05/kotlin-dsl-is-the-default-for-new-gradle-builds/