こちらのサイトではDRUPAL10に関連する記事を掲載しています。
認定 PHP/MySQL 開発者である アレクセイ・フィラトフさんが、「エンジニアが 6 か月間で 20,000 文字以上の入力を省き、その過程で 1,000 件のバグを防止した方法」についての記事がとても有益でしたので、日本語に翻訳してご紹介します。
優れたソフトウェア開発者であるとはどういう意味ですか?
まず、作業している特定の技術スタックについての深い知識が必要です。LAMP 開発者であれば、間違いなく PHP と MySQL の専門家であり、最新のフレームワークを理解し、Linux 管理についてある程度の適切なスキルを持っている必要があります。
2 つ目は、これも同様に重要ですが、ワークフローで毎日使用する補助ツールに関する実用的な知識です。
バージョン管理システム、継続的統合ツール、仮想マシン管理サービス (Vagrant など)、そしてもちろん統合開発環境 (IDE) を適切に操作できる必要があります。
この記事では、人気があり堅牢な IntelliJ IDEA IDE PhpStorm について説明し、少しの努力で効率を簡単に 2 倍にし、コード作成時のバグを防ぐ方法について説明します。
キーボード ショートカットを使ってトレーニングする
どの IDE にとっても最も単純で、おそらく最も重要なスキルであるキーボードの適切な使用から始めましょう。
熟練のプログラマーと一般の PC ユーザーを比較すると、最初に気づくのは、プログラマーはほぼすべての時間をキーボードの使用に費やし、マウスにはほとんど触れないということです。 それには理由があります。それははるかに効率的だからです。
まず、良いタイピストになること
入力は IDE スキルに直接関係しませんが、すべてのキーを見つけるためにキーボードを見つめる必要がある場合、ショートカットは役に立ちません。
まだ少なくとも 50 ワード/分 (WPM) で入力していない場合は、 TypingClub.comなどのタッチ タイピング トレーニング Web サイトを見つけて、速度を上げてください。
などのタイピング競争 Web サイトもあり、 TypingRaces.com他の人とタイピングを競うことができます。 私のおすすめは? 毎日朝のウォーミングアップとしてレースに参加してください。
PhpStorm のショートカットを使用できるようにトレーニングする
最も早く学習できる方法は、キーボード ショートカットの代わりにキーボード ショートカットを使用しないことです。
ショートカットを研究していたとき、すべてのメニュー、タブ、ナビゲーション バーなどをオフにしました。これは、[表示] メニューに移動してすべてのマークのチェックを外しても同様に行えます ([ステータス バー] をそのままにしてもよいでしょう)。
私の IDE は次のようになりました。
ご覧のとおり、ショートカットの使用を避けたくても避けられません。
ラップトップを破壊する調整段階を乗り越えるまでに、3、4 日ほど苦しみました。
モチベーションが低下していることに気付いた場合、PhpStorm には生産性ガイドが組み込まれています。 これには、機能のリストとそれぞれの使用状況の統計が含まれています。 [ヘルプ]、[生産性ガイド] の順にクリックすると、次のような内容が表示されます。
ご覧のとおり、ショートカットのおかげで (6 か月間で) 20,000 文字以上の追加文字を入力する必要がなくなり、約 1,000 のバグが防止されました。 かなりモチベーションが上がります!
また、どの機能をあまり使用していないのかもわかり、ショートカット スキルを向上できる場所が特定されます。 統計を確認し、その知識を賢く活用してください。
上位のキーボード ショートカット
にリストされている利用可能なすべてのショートカットを記載した便利な PDF を提供しており Jetbrains は、公式ドキュメント、さらに 「見逃せないキーボード ショートカット」のリストも あります。 ‘ 。 寝ている間にできるようになるまで、すぐに学習を始めましょう。
これまでのところ、私のお気に入りのショートカットは次のとおりです。
Ctrl+ E
– 最近使用したファイルを切り替えますCtrl + /
– コードブロックのコメント化/コメント解除Ctrl + B
– クラス宣言に移動しますCtrl + N
– クラスに移動しますCtrl + R
– 検索と置換Ctrl +Alt + L
– コードを再フォーマットするAlt + Enter
– 意図的なアクションとクイックフィックスを表示しますCtrl + Shift + Enter
– 完全なステートメント
これらの中には一目瞭然のものもあれば、もう少し詳しく説明できるものもあります。
Ctrl + EとEnterでファイルを切り替える
たとえば、アプリのビジネス ロジックを含む PHP クラスと、そのレンダリングと出力に使用されるテンプレートの間で、2 つのファイルを頻繁に切り替える必要があると想像してください。
多くの開発者はキーボードからマウスに切り替え、ファイルのあるタブに移動してクリックし、スクロール ホイールで必要な部分を見つけます。 問題: 非常に遅いです。
Ctrl+Eを押してからEnterを押した方が良いのではないでしょうか?
Ctrl+E を押すと、最近使用したファイルのリストが表示され、すぐに Enter を押すと、現在のファイルの直前に使用したファイルに切り替わります。
戻りたい場合は、同じシーケンスをもう一度押すだけです。
これは、わずか 3 回のキーストロークで 2 つのファイルを切り替える最速の方法です。 これを 1 日に何百回も行う必要がある場合に、どれだけの時間を節約できるか想像してみてください。
Alt+Enter で意図的なアクションとクイックフィックスを表示
最新の IDE ではエラーが強調表示され、コードを改善するための提案が提供されます。 コードの不完全な部分または文書化されていない部分にカーソルを移動すると、電球アイコンが表示され、それをクリックすると、実行可能なアクションのポップアップ メニューが表示されます。
を押しても同じ操作ができます。 Alt+Enter
、はるかに便利です。
上のスクリーンショットの場合、PhpStorm は 2 つのオプションを提供します。関数に PHPDoc 仕様を追加する (これは非常に良いアドバイスです。注目してください)、もう 1 つは未使用のパラメーターを削除するです。
同じショートカットは、クラス プロパティのゲッターとセッターの作成、コンストラクターでのフィールドの初期化、未定義のメソッドとプロパティの追加など、他の多くの一般的なアクションにも使用できます。
Ctrl+Shift+Enter でステートメントを完成させます
このショートカットは非常に簡単であり、同時に非常に便利であり、その内容を正確に実行します。
たとえば、次のように入力すると、 $i = 0
そして、 を押します Ctrl+Shift+Enter
その直後に、PhpStorm は式にセミコロンを追加します。 入力すると if
その後のショートカットでは、PhpStorm が括弧などを追加します。
このショートカットをできるだけ頻繁に使用してください。 すべてのコードは標準構造で構成されているため、時間を大幅に節約できます。 構造の記述速度が向上すると、コードの記述も大幅に速くなります。
IdeaVim プラグイン
ショートカットを使用すると生産性が大幅に向上しますが、それだけでは不十分な場合は、次のレベルの IdeaVim プラグインを使用してください。
ご存知かと思いますが、 Vim は、コマンド ラインを介してリモート サーバーを管理するために、Linux オタクや Devops エンジニアによって広く使用されているコンソール テキスト エディターです。
Vim には 2 つの重要な特徴があります。
まず、学ぶのが難しいです。 第二に、それをよく知っていれば、効果があります。 GUI エディタよりもはるかに向上します テキスト編集の生産性は、どの。 また、キャリアの中で、Vim などのコンソール エディタを使用せざるを得なくなる状況もあるでしょう (たとえば、リモート Web サーバー上で何かを修正する必要があり、コンソールからしかアクセスできない場合など)。
しかし、Vim は PhpStorm とどのような関係があるのでしょうか?
そうですね、多くの開発者は Vim の効率性と最新の IDE の機能 (コード補完、クラス検索、高度な検索、ナビゲーションなど) を組み合わせたいと考えています。 その目的のために、IdeaVim プラグインが作成されました。
重要な注意事項: ここからは、Vim の基本を理解していることを前提としています。 そうでない場合は、ほぼすべての Linux ディストリビューションまたは openvimでアクセスできる vimtutor を使用して Vim の使用を開始できます。
プラグインのインストール
1. 「ファイル」、「設定」、「プラグイン」の順に移動し、プラグインの検索ボックスに「IdeaVim」と入力します。 プラグイン名の右にあるチェックボックスにチェックを入れて「適用」をクリックします。 2. PhpStorm を再起動します。 3. 「ツール」、「Vimエミュレータ」の順にチェックしてプラグインをオンにします。
4.元の PhpStorm ショートカットと Vim ショートカット (プラグインによって有効化される) は相互に競合する可能性があるため、これらの競合を手動で解決する必要があります。 「ファイル」、「設定」、「その他の設定」、「Vim エミュレーション」の順に移動します。 競合するショートカットのリストが表示されます。 このリストでは、PhpStorm ショートカットを使用するか、そのキー シーケンスにバインドされた Vim ショートカットを使用するかを選択できます。 以下のスクリーンショットで現在の選択を確認できます。 決定できない場合は、ショートカットを未定義のままにしておきます。 PhpStorm を初めて使用するときに選択を求められます。
プラグインの使用法
プラグインをオンにすると、編集領域が Vim のようになっていることがすぐにわかります。
- カーソルの形が変わり、Vim のように長方形になりました。
- エディターに何かを入力しようとしても、何も起こりません。
この時点から、Vim で行うのとまったく同じようにファイルの編集を開始できます。 h
, j
, k
, l
ナビゲーション用のキーと、 i
通常モードと挿入モードなどを切り替えるキーです。
ほぼすべての Vim ショートカットがプラグインでサポートされています。
同時に、すべての IDE 機能が引き続き存在するため、(Vim のように) キーボードだけを使用してテキストを非常に高速に編集でき、(PhpStorm の最新のワークフローのように) クラス、ファイル、使用法、定義の間を移動することもできます。
高度な検索
通常のテキスト エディタに対する IDE の最大の利点の 1 つは、高度な検索を実装できることです。
小規模なプロジェクトのみで作業したことがある場合は冗長に思えるかもしれませんが、クラス間の OOP 関係が複雑な大規模なコードベースで作業を始めると、それがいかに不可欠であるかが理解できるでしょう。
一般的な検索 ( Ctrl + F
) または検索と置換 ( Ctrl + R
)、しかし、何千ものファイルの中から特定のクラスの定義を見つける必要がある場合はどうすればよいでしょうか? それとも、数千行のコードを含むクラス内の特定のメソッドを見つけたい場合ですか? それとも、すべてのコメントを検索結果から除外したいのでしょうか? そこで役立つのが、PhpStorm のような最新の IDE です。
このセクションでは、PhpStorm での最も便利な検索のバリエーションを紹介します。
パス内で検索
通常の検索の後、最も簡単な検索は、プロジェクトのサブフォルダーにあるすべてのファイル内の特定の文字列を検索することです。 PhpStorm では非常に簡単に実装できるので、私は他の検索オプションよりも頻繁に使用しています。
たとえば、クラスの使用状況を検索します。 User
私のサンプルアプリでは。
1.プッシュ Ctrl + Shift + F
。 検索オプションを含むポップアップ ウィンドウが表示されます。 タイプ ‘ User
‘ をクエリ文字列に含めます。 [プレビュー] タブに多数の結果が表示されます。
2.ここで、「プレビュー」タブに切り替えて、そこで必要な結果を手動で見つけることができますが、一致する結果が 100 件を超えています。 退屈! もっと具体的に言ってみましょう。
まず、クラスの使用法を検索しているので、「単語全体のみ」オプションをチェックしましょう。 次のような結果を避けるのに役立ちます。 E_USER_ERROR
.
次に、コメントと文字列リテラルでの検索を除外し、次の条件で結果を制限しましょう。 .php
ファイルのみ。
また、プロジェクトのより具体的なサブフォルダーを指定することが合理的な場合もあります。 この場合、プロジェクト固有のコードはすべて app
フォルダ。
それでは、スコープディレクトリを次のように変更しましょう example-app/app
.
これで、次のような検索ウィンドウが表示されました。
検索パラメータをより具体的にしただけで、結果の数が数百件からわずか 24 件に減りました。
それぞれを手動で調べるのは非常に簡単です。 さらに、非常に便利なプレビュー タブがあるため、各ファイルを個別に開く必要さえありません。
日常的に、パス検索での検索は、私が行うすべての検索の約 80% をカバーします。 これは非常に便利なので、検索に他に何も使用しなくても、かなり効率的です。
宣言に移動
PhpStorm のもう 1 つの非常に重要な機能 (最新の IDE と同様) は、クラスと関数の使用法と宣言間をジャンプすることです。
新しいものを作成する関数があると仮定しましょう。 User
。 明らかに、すべてのメソッドとプロパティを覚えているわけではありません。 User
したがって、クラスの宣言を調べて、必要なすべてのアクションを実行する方法を決定する必要があります。 それにはいくつかの方法があります。
まず、クラス宣言を読み取り専用のクイック ポップアップ ウィンドウとして開くことができます。
カーソルを任意のクラスの使用法に移動して押すだけです Ctrl + Shift + I
。 読み取り専用ウィンドウが表示されます。
必要なデータをすべて調べて、最初のファイルに戻ることができます。 非常に速いです。 ファイルを切り替える必要さえありません。
ただし、前述したように、ポップアップ ウィンドウは読み取り専用なので、何かを変更することにした場合は、 User
クラスを調べているときに、別のショートカットが必要になります。 Ctrl + Shift + B
.
これにより、クラスに直接移動します。 変更を行った場合、次のコマンドを使用すると、簡単に最初のファイルに戻ることができます。 Ctrl + E, Enter
先ほど説明したシーケンス。
現在のクラスのすべてのメソッドをリストする
私が毎日使用している検索機能の最後のバリエーションは、「クラス構造による検索」です。 PHP クラスは非常に長く、特定のプロパティやメソッドを見つけるのが難しい場合があります。
押したら Ctrl + F12
クラス ファイルが開いている間、クラスの構造を示すポップアップ ウィンドウが表示されます。
メソッド名の入力を開始すると、入力したパターンに一致するメソッドのみが表示されます。
約 100 個のメソッドがあり (これは良い習慣ではありませんが、そのようなコードに遭遇する可能性があります)、そのうち 2 つを頻繁に切り替える必要があると想像してください。 普通の検索では夢中になってしまうかもしれません。
代わりにファイル構造検索を使用すると、各切り替えに約 5 回のキーストロークが必要になります。 入力するだけ Ctrl + F12
、目的のメソッドの名前を入力し始め、 を押します。 Enter
と宣言すると、その宣言が表示されます。
ところで、 Ctrl + F12
は便利なショートカットではないため、他のものに変更することを検討することをお勧めします。 個人的に私が使っているのは、 Alt + R
.
PhpStorm には他にも多くの検索メソッドがありますが、これら 3 つで日常の検索タスクのほぼすべてをカバーできます。
検索機能の要約
- 複数のファイル内で見つかったものを検索する必要がある場合は、パス内検索 (
Ctrl + Shift + F
)、検索オプション (フィルタリング) をできるだけ具体的にするようにしてください。 - クラスまたはメソッドのソースをすぐに確認する必要がある場合は、次を使用します。
Ctrl + Shift + I
クイック ポップアップ ウィンドウでそれを確認します (編集する必要がある場合は、次の方法で宣言に移動します)。Ctrl + Shift + B
その代わり)。 - 大規模なクラスがあり、その構造を調べたり、メソッドをすばやく切り替えたりする必要がある場合は、ファイル構造のショートカットを使用します。
Ctrl + F12
デフォルトでは。
すべての基本的な言語構造に対するライブ テンプレートの使用法
ショートカットを使用すると、コードをすばやく作成して移動できますが、オートコンプリートとライブ テンプレートというコードをさらに改善する方法があります。
基本的なオートコンプリートは非常に簡単なので、必ず知っておく必要があります。
クラス、メソッド、または変数の名前を入力し始めると、優れた IDE であれば、可能な末尾のリストが表示されます。 どれでも選択でき、最後まで入力する必要はありません。
とはいえ、ライブ テンプレートを使用すると、さらに多くのことを行うことができます。
このセクションでは、私が毎日の仕事で使用しているライブ テンプレートについて説明します。 これらを、基本的な言語構造、長い名前の関数、HTML チャンクの 3 つのグループに分類します。
基本的な言語構造
言うまでもなく、開発者は次のような標準的な言語構造を使用します。 while
, for
, foreach
, if
1 日に何度も入力するため、毎回最初から入力するのは非常に非効率です。 そのため、PhpStorm にはライブ テンプレートが組み込まれています。
人生を変えるようなライブ テンプレートの魔法を使用するには、PhpStorm を開いて次のように入力します。 forek
編集エリアで を押し、 Enter
。 これを見ると次のようになります。
PhpStorm はテンプレートを完全なテンプレートに置き換えました。 foreach
必要なすべての変数のサイクルと準備されたスタブ。 正しい変数名を入力するだけです。
押したら Ctrl + J
をクリックすると、コードの現在の場所に適用できる、現在サポートされているライブ テンプレートのリストが表示されます。 いずれかを選択できます。
お気づきかもしれませんが、非常に頻繁に使用されるいくつかの構造がここでは欠落しています。 たとえば、私はいつもライブテンプレートを見逃します。 while
サイクルを作ってみましょう!
「設定」、「エディタ」、「ライブテンプレート」の順に移動し、「PHP」を選択して、ポップアップウィンドウの右上にある緑色の「+」をクリックします。
「略語」フィールドに「wh」を入力し、「説明」フィールドに「while(bool_expr){…}」を入力します。 「テンプレート テキスト」フィールドには次の内容が必要です。
while($EXPR$) {
$END$
}
「テンプレート テキスト」テキスト領域の下にある「定義」リンクをクリックし、リストから「PHP」を選択すると、このテンプレートをどのようなコンテキストで使用するかがわかります。
では、その仕組みについて説明しましょう。
入力するとき wh, Enter
編集領域では、テンプレート テキストに置き換えられます。
カーソルは最初のテンプレート変数に移動します。 $EXPR$
この場合、任意の式を入力できます (例: $i > 0
)を押して、 Enter
また。
その後、カーソルは次の変数 (この例では 1 つだけです) に移動します。 $END$
すべての変数が入力された後にカーソルが移動する場所を示す特別な変数です。
変数は 1 つだけなので、 $END$
満たした直後 $EXPR$
をクリックすると、サイクル本体を入力する準備が整います。
頻繁に使用するすべての言語構造に対して独自のライブ テンプレートを作成します。 このような構造を最初から入力するのに毎日時間を費やすよりも、事前に時間を投資する方がはるかに優れています。
PHP 関数
残念ながら、PHP は関数名が長くて一貫性がない言語という評判があります。
幸いなことに、ライブ テンプレートを使用して短い略語に置き換えることができます。 たとえば、配列内にキーが存在するかどうかを適切に確認したい場合は、次の関数を呼び出す必要があります。 array_key_exists($my_key, $my_array)
.
標準のオートコンプリートを使用する場合でも、毎回入力するのは非常に面倒なので、そのような場合にはすべてライブ テンプレートを作成してください。
個人的には、array_key_exists には ‘ake’ を好みますが、他のものを選択することもできます。 「ake」ライブ テンプレートを作成する方法は次のとおりです。
HTML チャンク
最後に、ライブ テンプレートの最も一般的な使用法ではありますが、HTML チャンクの処理です。
まだライブ テンプレートを使用していない場合は、標準の HTML マークアップ要素を作成するという、退屈な (そして基本的には役に立たない) 作業をたくさん行っていると思います。 ライブ テンプレートは、上記で行ったことを実行することによってこの状況を変更しますが、「テンプレート テキスト」フィールドは HTML になります。
PHPDoc によるバグの回避
ここまで、PhpStorm の効率化に関するヒントとコツを学びましたが、待ってください。さらに多くのことがあります。 効率化が役立つのは効率だけではありません。プログラムを初めて実行する前であっても、バグを回避するのにも役立ちます。
PhpStorm は、すぐに使用しても明らかなエラーを通知します。
たとえば、ステートメントの後のセミコロンを忘れた場合は、赤色でマークされますが、その機能は簡単なので説明しません。
興味深いのは、PHPDoc 経由で PhpStorm に必要な情報を与えると、PhpStorm がより複雑なバグについて通知することです。
理想的には、PHPDoc 仕様はすべてのメソッドに対してチームに必須であり、可能な限り厳格に作成されます。 私たちの例を考えてみましょう User
また授業。 次の配列を返す関数があるとします。 User
オブジェクト:
デフォルトでは、これは文書化されていないため、他の開発者は戻り値の型を知らず、それを不適切に使用する可能性があります。
たとえば、他の開発者がユーザー名のリストを取得したいとします。 何らかの理由で、彼女はこう考えます。 User
オブジェクトには getName() メソッドがあります。 しかし実際にはそうではないため、開発者は次のような間違いを犯します。
PhpStorm は $user 変数について何も知らないため、これをバグとして扱いません。 そのため、気づかれないままになり、非常に厄介なエラーが発生することになります。
最初のオプションは厳密な型付けをオンにすることです。これは PHP7 で可能になりましたが、何らかの理由でそれができないと仮定しましょう。 おそらく私たちはレガシーコードを使って作業しているのでしょう。 この場合、放っておけば PhpStorm が役に立ちます。
これを機能させるには、関数ごとに PHPDoc を生成する必要があります。 これは一般に良い習慣であると考えられており、バグを回避したり、他の開発者と仲良くなったり、雇用主がソース コードを検査する面接に合格したりするのに役立ちます。
PHPDoc を生成するには、関数の名前にカーソルを移動し、 を押します。 Alt + Enter
、ポップアップメニューで「関数のPHPDocを生成」項目を選択し、押します Enter
また。
基本的な PHPDoc テンプレートが表示されます。
PhpStorm は戻り値が配列であると推測しましたが、それが次の配列であると推測できなかったことがわかります。 User
オブジェクトなので、代わりに「array」を「User[]」に変更することで、これを明示的に規定しましょう。
メソッドについて知っておくべきことを PhpStorm に伝えたので、話に戻りましょう。 getUserNames()
メソッド呼び出し:
PhpStorm が PHPDoc の戻り値の型宣言を解析できるようになったので、エラーを指摘し、正確に何が間違っているかについてヒントを与えることもできます。 PhpStorm を PHPDocs と組み合わせると、PHP を非常に厳密な言語にすることができます。 素晴らしい結果です!
PhpStorm は PHP 開発者だけのものではありません
取り上げられているすべてのトピックは PHP 開発を中心としていますが、PhpStorm は非常に強力な IntelliJ プラットフォームに基づいており、PHP の世界とはかけ離れたさまざまな言語、フレームワーク、技術スタックでの使用を可能にします。
フロントエンド開発
バックエンド開発者であっても、時々フロントエンドの問題を解決する必要があります。 これは、HTML マークアップの簡単な修正、REST クライアントへのパラメーターの追加、AngularJS での記述などで可能です。良いニュースは、これらすべてが PhpStorm で実行できることです。
基本的な経験則は次のとおりです。すぐにサポートされているかどうかを確認してください。 そうでない場合は、プラグインを探してみてください。
たとえば、JavaScript、CSS、および LESS や SASS などの一般的な CSS プリプロセッサは、追加設定なしでサポートされています。 AngularJS サポートはプラグインとして簡単に追加できます (インストール パスは IdeaVim プラグインと同じです)。 この考え方を使えば、考えられるほぼすべてのフロントエンド タスクを解決できるようになります。
データベースの操作
通常、アプリケーション データベースはコマンド ラインまたは MySQL Workbench などの特別なツールを介して管理されますが、ここでも PhpStorm が役立ちます。
画面の右端にある [データベース] をクリックするだけで、利用可能なデータベースのリスト (最初は空) と、共通編集領域と同様にオートコンプリート機能を備えたクエリ ウィンドウが表示され、非常に便利です。
PhpStorm は、ほとんどすべての最新のデータベースをサポートしています。 MySQL、PostgreSQL、Oracle Database、SQLite はそのままサポートされますが、MongoDB はプラグインのインストールによってサポートされます。
平均スタック
最後の、そして最も驚くべき非 PHP の例は、 MEAN スタック開発です。
MEAN は、MongoDB、ExpressJS、AngularJS、Node.js の略です。
これはトレンドの技術スタックであり、ほぼどこでも使用されています。 これは非常に高速であり、高速で軽量な Web サービスに非常に適しています。
PHP 開発者であっても、 PHP プロジェクトの補助ツールとしてNode.jsサービスを作成することがあります (WebSocket サービス、単純なチャットボット バックエンドなど)。
おそらくご想像のとおり、MEAN スタックのすべてのコンポーネントは PhpStorm でサポートされているため、MEAN スタック プロジェクトを作成する必要がある場合は、別の IDE が必要ないことに留意してください。 PhpStorm はその仕事を完璧に実行します。
PhpStorm の力をあなたの手に
PhpStorm の機能とこの記事で説明されている主要なスキルセットを使用すると、入力を終える前に効率を向上させ、バグを防ぐことができます。
この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。