見出し画像

【LAMBDA / XLOOKUP】Googleスプレッドシート新関数 動向 -2

これは本編のシリーズネタとは別で、旬の動向を書いた雑談記事です。
といいつつ、こっちの方が最新ネタだからか人気ですが。。

以前投稿した
【LAMBDA / XLOOKUP】Googleスプレッドシート新関数 動向 -1

という記事の続きです。いよいよヘルパー関数が登場しました。

※ Googleの新サービスの展開状況はアカウントによって差があるようです


Googleスプレッドシート 新関数展開状況(2022/09/16 時点)

ついにフル装備。パーフェクトジオング 状態になりました~。

✅LAMBDAが使える
✅名前付き関数機能が使える
✅MAP、REDUCE、BYROW などヘルパー関数が使える
✅XLOOKUP、XMATCHが使える
✅モバイルアプリ版 での利用 Android
✅モバイルアプリ版 での利用 iPhone/iPad 

mir管理の フリーGmail 2つ、GoogleWorkspaceでの状況

自分のアカウントでは今回発表されたすべての関数、機能が使えるようになりました。

アプリ版での利用については、アプリを最新版にアップデートが必要と思われます。

また前回にもお伝えしましたが、アプリ版では「名前付き関数」(自作関数)については、定義されたものを利用することはできますが、作成や編集は出来ません。(メニューにないです)

こことか引数の説明が アプリ版では出ない

同様にアプリ版では 自作関数を利用時に、関数の説明(自分で記入した説明)が表示されません。他の人に使ってもらう時は、その点も注意です。

今回は、前回の記事をアップした翌日 2022/09/12 から使えるようになった ヘルパー関数 を触った感想をざっくり紹介、あと そもそもLAMBDA関数が理解できない人用に チャラい解説をします。


消えた ISOMITTED の謎 を追わない

ヘルパー関数の感想を書こうと思った矢先、
青ブレザーに蝶ネクタイの探偵を名乗る少年?が!

あれれー、おっかしいぞ? おじさーん、Excelの LAMBDAヘルパー関数は 7つって書いてあるのに、Googleスプレッドシートだと 1つ足りないよ。

警部、亡くなったのは ISOMITTED氏 だと判明しました。
小〇郎くん、まさか この6人の中に犯人がいると言うのかね!?

事件発生・・・ではありません。
単にGoogleが不要と判断したってことでしょう。

引数があるか・ないかを判定するという、独特な関数揃いのヘルパー関数の中でも異質な存在だった ISOMITTED。

引数を省略可能として 初期値が設定できるってのは、自作関数を作る上で魅力的だったので残念です。

VLOOKUPの 第4引数の「検索方法」みたいな、要は切り替えフラグを設定する際に、省略可で省略の場合はデフォルト値って方が簡単ですよね。あんな感じのイメージ。

※VLOOKUPは デフォルト値が 近似値一致なので、わざわざ FALSE (または 0 )をいれてましたが、XLOOKUPではデフォルト値が 完全一致に 改善されました。

ちなみにOMITTEDの日本語 訳は「省略」
まさか自分が「省略」されてしまうとは・・・。

GASの自作関数だと、引数の初期値は単に = 0 とか入れとけばいいんで簡単。それに比べ LAMBDAでの自作関数だと、たぶんISOMITTEDがないと引数省略は出来なそう

まぁ無くてもいいんですが、あった方が嬉しいですね。

もしかすると、 王大人の「死亡確認!」状態で、後で奇跡的に生き返りましたーって感じで仲間に加わるかもしれませんw(男塾あるある)



ヘルパー関数 ざっくり感想・分析まとめ

ヘルパー関数 6種をざっくり使ってみて、その感想と分析をまとめてみました。

使いどころやリアルな式の解説(掘り下げ)は、今後の雑談記事、もしくは本編記事の方の QA(お題)型でそのうちやりたいと思います。


ヘルパー関数 を3分類に

6種あるけど、大きく分けると3分類って感じでしょうか。

公式ではない勝手な分類です (こういう時パワポ使っちゃう)

仕事忙しい時ほど、こういうしょーもない資料作りたくなりますw

利用頻度が高く、わかりやすい BYROW・BYCOL が 行列系
配列を返す MAP・MAKEARRAY が 配列系
累積値を返す REDUCE、その過程も返す SCAN が 累積系

って区分になるかなと。

厨二的ファンタジー思考だと、よくある魔法の6属性に例えるなら

火 BYROW
水 BYCOL
風 MAP
土 MAKEARRAY
光 REDUCE
闇 SCAN

真面目に最新関数を知りたい人にはまったく意味ないネタです

って感じでしょうか。(なんとなくのイメージ)

火のバイロウとか、光のリデュースって響きが好きなだけかもw

でも、基本だけどなんだかんだ使える BYROW,BYCOLが火・水ってのはハマってるし、

縦横無尽をかけめぐる器用そうな MAPと渋めだけど実力者っぽい MAKEARRAYが、風と土ってのもしっくりくる。

そして最強クラスの REDUCEと、その影(途中の軌跡)を出力するSCAN が光、闇っていうイメージ。

誰かに擬人化してもらいたいもんだ。


ヘルパー関数を マトリクス分析

この6つをさらに、マトリクス分析(四象限に配置)してみましょう。

現時点での評価です

なんだかんだで、GASというか javascriptでも Arrayプロパティ最強の(なんでも出来る) REDUCEが、最強で万能だけど扱いが難しいかなと。(五条先生みたいな感じ?)

SCANはREDUCEの途中経過を返す関数で REDUCEに近いんだけど、結果が配列となるが 故に制限があるんで少し活用シーンが制限されそう。

BYROWは、少し制限あるけどわかりやすくて使いどころ多そう。列毎の処理は行単位より出番減るかなってことで その下に BYCOL。

MAPは便利(器用)だけど Arrayformulaで代用できること多いしなー。MAKEARRAYは独特で現時点では真の力が見えないけど、なんかポテンシャルは高そうだなと。これが一番今後評価がブレそう。

2022.09.16 時点での評価なので、今後  卍解 しちゃう関数が出てきて 評価が大きく変わる可能性もあります。


ヘルパー関数利用時の注意点

便利なヘルパー関数ですが 幾つか制限や注意点があります。
特に GAS でmap や reduce に慣れている人は違和感を感じるかも。

■ヘルパー関数利用時の注意点
 ・添字 (iに該当するもの) がない
 ・セル範囲を引数として取得した場合でも 二次元配列ではない
 ・出力する結果は、配列のネスト(入れ子)が原則できない

なかなか悩ましい注意点(制限)です。
ただ、いずれも回避策(やり用)があります。

その辺りのテクニックや 個々のヘルパー関数の特徴どんな時シーンで活用できるか?という解説は別の機会に。



LAMBDA関数のチャラい解説

こんなイメージ

個々のヘルパー関数を取り上げる前に、今回は「そもそもLAMBDA がよくわからん」って人の為の 解説(捉え方)を少し書いてみようかなと。

ただ本職(Googleの中)の人からすると、なに適当なこと書いてるんだ!って突っ込まれそうなので、あくまでもチャラい解説という位置づけです。厳密さを求める人や mirより詳しい人は読み飛ばしてください。

まず、大前提として LAMBDAラムダ と読みます。
ランバダ ではないです。これは大丈夫ですね?(昭和世代向け)

Excel の LAMBDAは結構前から話題になってたイメージですが、一般ユーザーへの展開は今年 2022年からだったんですね。ネットで情報発信してる人たちは Office Insider で先行お試し利用してたってことですね。

Excelでの一般提供から 約半年での Googleスプレッドシートへの導入ってことで、かなり早い輸入だなと感じます。



LAMBDAは関数ツクールである

LAMBDAを理解するには、この考え方が一番しっくりくるかなと。

XLOOKUPと同列に捉えてはダメです。XLOOKUPが プレイして楽しい 完成度の高いゲーム(エルデンリング)としたら、LAMBDAはゼルダ BotWでもマリオカートでもなく、RPGツクールやマリオメーカーのようなもの

つまり、すぐに開封してプレイするゲーム(関数)では無いんです。

LAMBDAは RPGツクールの関数版、いわば「関数ツクール 」だと思ってください。

RPGツクールは知ってますよね? RPG(ロールプレイングゲーム)を自分で作って公開できるゲームというか、ツールソフトです。

これでRPGを自作しようとする人はどんな人か?

RPGを結構やり込んでいて、RPGの定番パターンやお約束を理解していて、市販のRPGに対して、改良点や改善点といった自分なりの考えや自分独自のストーリーをもっている。でも、さすがにプログラミングで自作するのは厳しい

こんな人が多いんじゃないでしょうか?

RPGに触れたことがない、RPGは詳しくない。こんな人がいきなりRPGツクールに手は出しませんよね? 市販の完成している RPGゲームで遊んだほうがいいです。もしくは、RPGツクールで他の人が作成・公開したものを遊ぶべきです。

LAMBDAもそういうもんだってことです。


LAMBDAは 大人になってから

上級:プログラミングで簡単なゲームが作れる
  → GASで自作関数作成やシート処理が出来る

中級: RPGツクール(ノーコードツール)でゲームが作れる
  → LAMBDAを活用して便利な関数が自作できる

初級:RPGよくわからない。(まずは市販品でプレイを)
  → 関数よくわからない。(まずは基本関数利用を)
 

あくまでも非エンジニアの上級~初級です

別に 18禁ってことじゃありませんw

LAMBDAは、VLOOKUPやIF関数 がよくわかってない ボウヤ(初級者)が手を出すものじゃないってことです。

ある程度関数を使った上で不便を感じていたり、複数の関数を使った複雑な式をもっと簡単にしたい、それでも出来ない処理を実現したい! こんな思いがある人が使った方がいいです。

RPGに詳しくない人がRPGツクールでゲームを作成したところで、みんなが遊んでくれるようなゲームは作れませんよね?

それと一緒です。

上では LAMBDAはノーコードツールに近いような書き方をしていますが、ノーコードというには、若干ハードルは高いかもしれません。

もちろん、初級者でも LAMBDAを色々いじって、自分用数式を作成してみる。人の式を解読して勉強するのは良いと思います。

でも、順番としては 既存関数や XLOOKUPから学ぶことをお勧めします。そっちの方が即役立ちます。



名前のない怪物(LAMBDA)でも 良い

EXCELのLAMBDAの解説は、「セルの中に入力して使う関数ではありません」とか「名前定義の中で使う関数です」って論調が多いですが、これはExcel側には LETという関数があるからです。(Excel的にはこれで正しいと思います)

Googleスプレッドシートで LAMBDAを使う場合は、別に名前付き関数にする必要性はありません

名前付き関数化する:
 我ながら素晴らしい出来のゲームができたんで公開しよう
 → LAMBDAで凄い自作関数が出来た。
 名前を付けて再利用したり、他の人にも使ってもらおう

LAMBDA式そのまま使う:
 とりあえずゲーム作成して動いたけど、改良しつつ自分だけで楽しもう
 → LAMBDAで式作ったけど、今回だけの利用って感じだし、
 そんな凄い処理じゃないんで名前つけずに使っておこう

こんな感じで、必要に応じて「名前付き関数」にすれば良いです。


ヘルパー関数は 無料の「課金 追加パック」

そして今回追加されたヘルパー関数は、 ゲームにおける「課金 追加パック」みたいなもんだと思ってください。

プログラミングでいえば、ライブラリみたいなもんでしょうか。

無くても頑張れば自作できるけど、使った方が簡単に完成形に近づける。
要は痒いところに手が届く チートツールです。

これが、REDUCE使ったら 500円、MAPは1回 200円といった 課金制だったり、ガチャ制度で SSSレアの REDUCE全然でなくて、今回も MAKEARRAYだったー。なんて仕組みなら 使うの躊躇しますがw

無料で全部使い放題ですから、ヘルパー関数は使わなきゃ損ってことです。


LAMBDAを使うときの ツボ

LAMBDAを使うときの、mir的なツボです。
以下を意識するとよいかなーと思います。

  1. 変数(都度変わる範囲や値)は全て引数にする

  2. 2回以上登場する数式は引数化する

  3. 引数はなるべく絞り込んで少なくする

  4. 複雑な式は LAMBDAをネスト(入れ子)して使う

  5. エラーが解消できない時は エディタにコピペで インデントつける

細かい理由はここでは説明しませんが、今後個々のケースを取り上げた際に触れていきたいと思います。

以上を踏まえた上で、関数ツクールしたい! って人には、今回の記事は雑談すぎて参考にならなかったとしても、今後の記事は(たぶん)参考になるかと思います。是非 noteの フォロー登録を。

これは今後も 要チェックやで!



ちなみに ヘルパー関数のヘルプは 2022/09/16時点では日本語未対応です。
↓ BYROW以外もリンク先の下部から飛べます。



■このシリーズの次の記事


この記事が気に入ったらサポートをしてみませんか?