【Trailhead】「Apex の使用開始」解答と解説

スポンサーリンク

日々すこーしずつ進めながら書き残していく、Trailhead の Challenge 挑戦の足あと。

今回は前回の内容とまったく別のテーマになってしまいますが、Apex について勉強したかったので先にこちらの記事を作成しました。
今後も公式ページに記載されている順番を無視して、自分が解いた順にとりあえず記事をスピード重視でアップしていこうと考え始めました。
なので順番はけっこうぐちゃぐちゃになるかもしれませんが、どうぞよろしくお願いします。

もしかしたら内容に間違いが存在するかもしれませんので、その点についてはご了承ください。
もしも間違いを発見した場合にはコメントなどにて教えて頂けるとありがたいです。

 


 

Apex の基礎とデータベース >
Apex の使用開始

Trailhead ページ :
https://trailhead.salesforce.com/ja/modules/apex_database/units/apex_database_intro

 

●Challenge 問題文

Create an Apex class that returns an array (or list) of strings.

Create an Apex class that returns an array (or list) of formatted strings (‘Test 0’, ‘Test 1’, …). The length of the array is determined by an integer parameter.

  • The Apex class must be called ‘StringArrayTest’ and be in the public scope.
  • The Apex class must have a public static method called ‘generateStringArray’.
  • The ‘generateStringArray’ method must return an array (or list) of strings. Each string must have a value in the format ‘Test n’ where n is the index of the current string in the array. The number of returned strings is specified by the integer parameter to the ‘generateStringArray’ method.

 

●解答と解説

記事の冒頭にも書いた通り、今回は Apex について学んでいきます。

Apex とは Salesforce で書くことができるプログラミング言語です。
詳細については公式の Apex 開発者ガイドなども覗いていただきたいのですが、Apex の特徴として基本的に Java と同じ要領で書くことができるというものがあります。
ですので、Java に習熟しているひとにとっては結構触りやすい言語になると思います。

 

では、さっそく Challenge にとりかかっていきます。
まずは英文の和訳から。
Google 翻訳先生の力も借りつつ解読だー。

 文字列の配列(またはリスト)を返す Apex クラスの作成
Create an Apex class that returns an array (or list) of strings.

 

 ( ‘Test 0’、 ‘Test 1’、… のように)書式設定された文字列の配列(またはリスト)を返す Apex クラスを作成してください。
Create an Apex class that returns an array (or list) of formatted strings (‘Test 0’, ‘Test 1’, …).

 配列の長さは、整数パラメータによって決まります。
The length of the array is determined by an integer parameter.

 

 その Apex クラスは ‘StringArrayTest’ という名前にし、 public スコープでなければなりません。
The Apex class must be called ‘StringArrayTest’ and be in the public scope.

 その Apex クラスには ‘generateStringArray’ という名前の public static メソッドが必要です。
The Apex class must have a public static method called ‘generateStringArray’.

 ’generateStringArray’ メソッドは文字列の配列(またはリスト)を返す必要があります。
The ‘generateStringArray’ method must return an array (or list) of strings.

 各文字列は ‘Test n’ の形式で値を持たなければなりません。ここで、n は配列内の現在の文字列のインデックスを表します。
Each string must have a value in the format ‘Test n’ where n is the index of the current string in the array.

 返される文字列の数は ‘generateStringArray’ メソッドの整数パラメータによって指定されます。
The number of returned strings is specified by the integer parameter to the ‘generateStringArray’ method.

問題で指定された要素を持つ Apex クラスを作成する、という内容の Challenge になっています。
Apex の初回 Challenge なので、内容は比較的簡単です。

 

では、まず Apex クラスを新規作成するところから始めます。
Apex クラスを作るには『開発者コンソール』を利用すると使いやすいと思うので、それの使い方から解説します。

最初に、画面右上の『自分の名前』のボタン(画像の①)を押します。
すると小メニューが出てくるので、その中の『開発者コンソール』(画像の②)をクリックすると……

別ウィンドウで開発者コンソールが開かれます!
この開発者コンソールは eclipse で使用できるコマンドが一部使えたりもするのでとても便利です。

ちなみに、こちら↓の操作でも開発者コンソールを開くことができます。
参考にどうぞ。
設定(画像の①)>ビルド>開発>Apex クラス>開発者コンソール(画像の②)

 

開発者コンソールを開いたら、まずは今回必要になる Apex クラスを作成します。

File>New>Apex class で新規クラスに名前を入力するための設定ウィンドウが出てきます。

作成する Apex クラスの名前は Challenge の問題文の中で指定されていました。
StringArrayTest と名付けます。

ここまで終われば、あとはコードを書いていくだけ!
問題の要件を満たすように Apex クラスの中身を作っていきましょう。

 

最初に私が書いたコードはこんな感じ↓になりました!

これで解けるかな?
『Challenge を確認』ボタンを押してみるよー。

 Challenge は完了していません…以下の点を見直してください。
Challenge Not yet complete… here’s what’s wrong:

 ’generateStringArray’ メソッドの実行に失敗しました。
Executing the ‘generateStringArray’ method failed.

 メソッドが存在しないか、static でないか、適切な数の文字列が返されません。
Either the method does not exist, is not static, or does not return the proper number of strings.

あれ。
エラーが出てきてしまった。

どこかしら間違えているから通らないらしい。
間違えてる箇所をいろいろ探してみて……

あっ。
もしかして「’generateStringArray’ メソッドの整数パラメータ」っていうのは、メソッドの中で自分で定義するんじゃなくて、メソッドに引数として渡されるってことなのかな。
というわけでさっそく修正。

generateStringArray() メソッドの中で整数 num の中身を指定してあげるんじゃなくて、引数として整数 num を受け取る仕様に変更してみました。
この状態に直してから、もう一度『Challenge を確認』ボタンを押してみる……

やったー!!
無事に Challenge を達成することができました!

 

今回学習した Apex についてですが、注意点がいくつかあります。

まず一つ目ですが、「Apex における整数型は Integer と書く必要がある」ということ。
Java などで整数型は int と書くことができますが、Apex だと int と書いても正しく認識してくれません。
必ず Integer と書く必要があります。
ここは Java などに慣れているひとほど間違えやすいと思いますので注意しましょう。

次に二つ目の注意点が、「java のように .toString() を使うことはできない」ということ。
Java で整数型→文字列型に型変換する場合は .toString() と書けました。
しかし Apex では .format() を使う必要があるみたいです。
(参考サイト ⇒ Force.com : Apex で数値を文字列に変換したい : memo

今回の注意点をまとめると、
・整数型は int ではなく Integer と書く!
・整数型→文字列型 の型変換では .format() を使う!
というようになります。
Apex の仕様なので覚えておきましょー。

 

というわけで以上、Challenge を達成することで 500 ポイントを獲得することができました。
次回はさらに Apex を学んでいきますよー!

スポンサーリンク