リストのブロック
  
    「リスト」タブのブロックは次の通りです。
  
  
    
    リストブロック一覧
  
  準備
  
    これ以降の説明のために「リスト」という名前の新しい変数を作成します。
  
  
    
    新しい変数を作成する(1)
  
  
    
    新しい変数を作成する(2)
  
  空のリストを作成する
  
    用意した変数「リスト」に空のリストをセットするには、次のようにします。
  
  
    
    変数「リスト」に空のリストをセットする
  
  
    空のリストに値をセットするには「指定位置に項目を設定する」を使います。
  
  任意の項目を初期値としたリストを作成する
  
    「以下を使ってリストを作成」ブロックを使うと、任意の項目を初期値として持つリストを作成することができます。
  
  
    
    項目数が不定のリストを作成するブロック
  
  
    初期値として "リンゴ", "オレンジ", "バナナ" をもったリストを作成するには次のようにします。
  
  
    
    変数「リスト」に初期値をもったリストをセットする
  
  
    デバッグ用ウィンドウには リンゴ,オレンジ,バナナと表示されます。
  
  追加する項目を増減させる
  
    ギアアイコンをクリックすると、追加する項目を増減させることができます。
  
  
    
    追加する項目を増減する(1)
  
  
    左側(背景がグレー)の「項目」をマウスで選択し、ドラッグ&ドロップで右側の任意の位置に挿入すると、その部分に新しい項目をセットできるようになります。
  
  
    
    追加する項目を増減する(2)
  
  指定位置の値を返す/削除する
  
    リストの任意の位置を指定して、値を取り出すことができます。
  
  
    
    指定位置の値を返すブロック
  
  
    位置は 1 から数えます。次の例は1番目の値をデバッグウィンドウに表示するものです。
  
  
    
    変数「リスト」から1番目の値を取得する
  
  
    デバッグ用ウィンドウには リンゴと表示されます。
  
  取得, 取得して削除, 削除
  
    このブロックは「取得」「取得して削除」「削除」を指定できます。
  
  
    
    取得処理を指定できる
  
  
    各操作を行った後、リストがどのように変化するかをデバッグウィンドウを使って確認してみます。
  
  
    
    処理したあとのリストを確認する
  
  
    
      
	
	  | 処理 | 
	  処理による出力 | 
	  処理後のリストの内容 | 
 	
	
	  | 取得 | 
	  リンゴ | 
	  リンゴ,オレンジ,バナナ | 
	
	
	  | 取得して削除 | 
	  リンゴ | 
	  オレンジ,バナナ | 
	
	
	  | 削除 | 
	  - (デバッグブロックも使えない) | 
	  オレンジ,バナナ | 
	
      
    
   
  位置の設定
  
    このブロックは位置の設定方法も指定できます。「# (指定位置)」「位置:後ろから」「最初」「最後」「ランダム」を用意しています。
  
  
    
    位置を指定する方法
  
  
    
      
	
	  | 位置の指定 | 
	  結果 | 
 	
	
	  | # 1 | 
	  リンゴ | 
	
	
	  | 位置:後ろから 1 | 
	  バナナ | 
	
	
	  | 最初 | 
	  リンゴ | 
	
	
	  | 最後 | 
	  バナナ | 
	
	
	  | ランダム | 
	  (不定) | 
	
      
    
   
  リストの指定部分のコピーを作成する
  
    リストの開始位置と終了位置を指定し、その範囲をコピーした新しいリストを作成することができます。
  
  
    
    リストの指定部分のコピーを作成するブロック
  
  
    元のリストの2番目から3番目までをコピーし、新しいリストを作成する場合は次のようにします。
  
  
    
    部分リストの作成
  
  
    デバッグ用ウィンドウには元リストはリンゴ,オレンジ,バナナ,桃と表示されます。新しく作成した部分リストはオレンジ,バナナと表示されます。
  
  サブリストの作成方法を指定する
  
    サブリストの作成方法を指定することができます。選択肢によって、数字の指定方法も変わります。
  
  
    
    部分リストの作成方法を指定する
  
  
    ここでは元のリストをリンゴ,オレンジ,バナナ,桃とします。
  
  
    
      
	
	  | 作成方法の指定 | 
	  指定例 | 
	  結果 | 
	  説明 | 
 	
	
	  | #からサブリストを取得 | 
	  2, 終了位置:3 | 
	  オレンジ,バナナ | 
	  2番目から3番目まで | 
	
	
	  | 端から#のサブリストを取得 | 
	  2, 終了位置:3 | 
	  バナナ | 
	  リストの長さ(4)から2を減じた、2番目の次(3番目)から3番目まで | 
	
	
	  | 最初からサブリストを取得 | 
	  終了位置:3 | 
	  リンゴ,オレンジ,バナナ | 
	  リストの最初から3番目まで | 
	
      
    
   
  
  指定の値が最初(最後)に出てくる箇所を探す
  
    
    指定の値が最初(最後)に出てくる箇所を探すブロック
  
  
    リストに指定したアイテムが最初または最後に出現する箇所を探し、その数値(N番目)を返します。
    図の場合は「2」を返します。
    図の例でブロックの条件を「最後の出現箇所」とした場合は「4」を返します。
  
  リストが空かどうか調べる
  
    リストが空、つまり要素が一つも含まれていない場合にtrueを返します。そうでない(一つ以上の要素が含まれている)場合はfalseを返します。
  
  
    
    リストが空かどうか調べるブロック
  
  
    検索結果が見つからない場合にエラーとする、という場合は次のようなブロックになります。
  
  
    
    リストが空かどうかを確認する
  
  リストの長さを調べる
  
    リストに含まれている要素の数を返します。
  
  
    
    リストの長さを調べるブロック
  
  
    検索結果が1件以上ある場合にエラーとする、という場合は次のようなブロックになります。
  
  
    
    リストの長さを確認する
  
  項目AをN回繰り返したリストの作成
  
    
    項目AをN回繰り返したリストを作成するブロック
  
  
    指定した値を複数回繰り返してリストを作成します。図の場合、"*;" を5回繰り返したリスト(*,*,*,*,*)が作成されます。
  
  リストのコピーを逆順にする
  
    
    リストのコピーを逆順にするブロック
  
  リストを逆順にします。図の場合、「いちご,りんご,メロン,マンゴー,レモン」の順で返します。
  指定位置に項目をセットする
  
    「指定位置に項目をセットする」ブロックを使うと、リストに値を加えることができます。
  
  
    
    指定位置に項目を設定するブロック
  
  
    空のリストに値をセットするには次のようにします。要素は "1" から数えます。
  
  
    
    リストに値をセットする
  
  
    デバッグ用ウィンドウには リンゴ,オレンジ,バナナと表示されます。
  
  挿入
  
   リストの途中要素に値を挿入することができます。
  
  
    
    リストに値を挿入する
  
  
    デバッグ用ウィンドウには 桃,リンゴ,オレンジ,バナナと表示されます。
  
  リストのコピーを並び替える
  
    
    リストのコピーを並び替えるブロック
  
  
    リストの並び替えを行うブロックです。数値とアルファベットを昇順/降順に並び替えます。
    アルファベット順の場合、大文字を含む文字列が優先され、小文字は大文字を含む文字列より後ろに並びます。
    アルファベット順(大文字・小文字の区別無し)の場合は小文字が優先され、大文字を含む文字列とともにアルファベット順に並びます。それぞれ、次のような出力結果になります。
  
  
    
      
      
        | 種類 | 
        並び順 | 
        結果 | 
      
      
        | アルファベット順 | 
        昇順 | 
        James,Liam,Noah,Oliver,liam | 
      
      
        | アルファベット順(大文字・小文字の区別無し) | 
        昇順 | James,liam,Liam,Noah,Oliver | 
      
      
        | 数値順 | 
        昇順 | 
        23,68,97,123,124 | 
      
      
    
   
  テキストとリストの変換
  
    テキスト(文字列)とリストを相互に変換することができます。
  
  
    
    テキストを分割してリストにするブロック
  
  テキストからリストを作る
  
    テキストからリストを作ることができます。区切り文字を指定します。この例ではわかりにくいですが、各要素が空白(スペース文字)で区切られており、区切り記号も1つの空白を指定しています。
  
  
    
    テキストからリストを作る
  
  
    デバッグ用ウィンドウには リンゴ,オレンジ,バナナ,桃と表示されます。
  
  
    類似のブロックに SPLIT があります。両者は空白要素の扱いが異なります。SPLIT は空白要素を無視します。
  
  リストからテキストを作る
  
    リストからテキストを作ることもできます。同じように区切り文字を指定します。ここでは区切り文字を "," と指定しました。
  
  
    
    リストからテキストを作る
  
  
    デバッグ用ウィンドウには リンゴ,オレンジ,バナナ,桃と表示されます。
  
  
    類似のブロックに JOIN があります。両者は空白要素の扱いが異なります。JOIN は空白要素を無視します。
  
  [応用] モデルの検索結果からリストを作成する
  
    モデルのデータを取得するブロックを使うと、条件に合致した(複数の)モデルの検索結果をリストとして扱うことができます。
  
  
    
    予約リストを取得するブロック
  
  
    詳細は「モデルの操作 > 取得(リスト)」をお読みください。
  
  [応用] モデルの項目からリストを作成する
  
    サンプルとして「ミニテスト」モデルを用意してみます。これはミニテストの実施日、教科、生徒の組み合わせで点数を管理しています。
  
  
    
    「ミニテスト」モデル
  
  
    ミニテストごとの成績管理を行います。具体的には最大値、最小値、平均値、中央値、標準偏差を管理する、とします。
  
  
    
    「ミニテスト成績管理」モデル
  
  
    ミニテスト成績管理の登録時に「実施日」と「教科」を検索条件とし、ミニテストのリストをつくってみましょう。
  
  
    モデルのデータを取得するブロックを使い、検索条件に(ミニテスト成績管理モデルの)主キー値をセットします。
  
  
    
    実施日と教科で絞り込んだミニテストのリスト
  
  
    次のブロックで、ミニリストの「点数」だけを集めた、「点数リスト」を用意することができます。
  
  
    最初に空のリストを用意し、「指定位置に項目を設定する」ブロックを使ってミニリストの点数項目だけを集めています。
  
  
    
    ミニテストの集合から「点数リスト」を作成する
  
  
    リストの最大値や最小値を取得するブロックと組み合わせることで、計算処理を行います。
  
  
    
    「点数リスト」から最大や最小、平均を求める