パスワードを忘れた? アカウント作成
15006696 story
プログラミング

Microsoft曰く、Excelの数式は世界で最も広く使われているプログラミング言語 76

ストーリー by nagazou
ならばExcel方眼紙はアートだ 部門より
headless 曰く、

Microsoftによれば、Excelの数式は世界で最も広く使われているプログラミング言語だという(Excel Blogの記事The Registerの記事BetaNewsの記事Neowinの記事)。

しかしExcelの数式言語には再利用可能な独自の関数を定義するというプログラミングにおける基本的な要素が欠けており、それを補うため新たに「LAMBDA」関数を導入するそうだ。Excelでは既にJavaScriptやTypeScriptを用いてカスタム関数を定義できるようになっているが、LAMBDA関数を用いれば数式言語のみでカスタム関数を定義可能となる。カスタム関数は他のカスタム関数を呼び出すことが可能であり、カスタム関数を再帰的に実行することも可能だ。これにより、Excelの数式言語がチューリング完全になるとのこと。

LAMBDA関数は現在、Office Insiderプログラムのベータ版チャネルでWindows版およびMac版Excelに提供されており、リボンの「数式」→「名前の管理」でLAMBDA関数を参照する新しい名前(カスタム関数名)を追加すればカスタム関数が利用可能になる。LAMBDA関数の書式は「=LAMBDA(引数, 数式)」というもので、カスタム関数作成後は「=カスタム関数名(引数)」のように入力することで引数が数式に渡されて演算結果が得られる。「=LAMBDA(引数1, 引数2 [, 引数3 ...], 数式)」のように複数の引数を指定することも可能だが、引数がいくつまで指定できるかは説明されていない。また、LAMBDA関数を直接呼び出して使用することも可能とのことだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by hakikuma (47737) on 2020年12月08日 14時36分 (#3938169)

    「Excelの数式は世界で最も広く使われているプログラミング言語」
    と言いながら、同時に
    「独自の関数を定義するというプログラミングにおける基本的な要素が欠けており」
    と言っている。
    さらに「要素」とは、それが欠けていたら物事は成り立たないものを言う。
    つまりこの2行は、Excelの数式はプログラミング言語として成り立つべきものが欠けているにも関わらずプログラミング言語であると言っており、矛盾している。

    • by Anonymous Coward on 2020年12月08日 14時59分 (#3938199)

      > さらに「要素」とは、それが欠けていたら物事は成り立たないものを言う。
      言わない
      より厳密に言えば、「必要不可欠な要素」という表現があるように、欠けては駄目な場合と欠けても良い場合がある
      当然「基本的な基本」=「必要不可欠な要素」と言うわけでもない

      親コメント
      • by Anonymous Coward

        訂正
        誤「基本的な基本」
        正「基本的な要素」

    • by Anonymous Coward

      っ「再利用可能な」

    • by Anonymous Coward

      独自に関数定義できない言語なんて、いくらでもあるだろう。

      • by Anonymous Coward

        元のブログを見ると、関数定義じゃなくて、ループが構成できないことが「欠けている」ものだったらしいよ。

        • by taka2 (14791) on 2020年12月08日 18時05分 (#3938373) ホームページ 日記

          関連ストーリーにも挙がってるExcelのワークシート関数で作ったドラクエ3 [developers.srad.jp]では、
          循環参照を使ってループを実現してますね。「F9(再計算)でステップ実行」という、連続実行できない代物ですが…

          循環参照 = 再帰呼びだしなので、設定で「反復計算」を有効にしたら、とりあえずループはできるとは言えるかと思います。

          親コメント
        • by Anonymous Coward

          そんなもん工夫でクリアしているExcelマスターは沢山居るが。

          • by Anonymous Coward

            そこは工夫でなくVBAの学習などで乗り切るべきだと思うが……

            • by Anonymous Coward

              Excelマスターは縛りを楽しんで居る様にも思える。
              大抵VBAでやれば簡単な事をわざわざ関数だけでやろうとするだろ?

              • by Anonymous Coward on 2020年12月08日 20時40分 (#3938494)

                VBAを使うとマクロを実行してもらうという昨今の情勢では高いハードルを超える必要があるから数式で済むならそれに越したことはない

                親コメント
  • by Anonymous Coward on 2020年12月08日 14時32分 (#3938166)

    Excelでメールの送受信、Webブラウズ機能などが実装されていき、最終的にはExcel OSが開発されてExcel PCが販売される未来だな

    • by Ryo.F (3896) on 2020年12月08日 22時57分 (#3938589) 日記

      20世紀にEmacsで同じことを言ってた人もいたな。
      いや、EmacsはエディタでもOSでも無く、環境である、だっけ。

      親コメント
    • by Anonymous Coward

      ワープロ専用機があったんだから表計算専用機があっても良いとは思う
      リコーのマイツール搭載機ってそんな感じだったのかな

    • by Anonymous Coward

      表計算は有償オプションでいいから(家用とかはLibreOffice Calcあたりで代用するので)、その分本体値下げして。

      • by Anonymous Coward

        フロントエンドが表計算だから「Excel」なんだろ。
        本質的中身が何かは知らんが。

    • by Anonymous Coward

      もう全部できるよ。COMコンポーネントを張り付けられるしVBAからWin32 APIを呼ぶこともできるんだから。
      メールもWebブラウズもできる。

      • by Anonymous Coward

        OpenDoc…お前こんなところに…いやお前誰だ?!

    • by Anonymous Coward

      方眼紙機能も実装に含めて・・・

  • by Anonymous Coward on 2020年12月08日 14時19分 (#3938155)

    VBA使おうよ

    • by Anonymous Coward

      面倒だからLispを組み込もうよ
      ~というのは冗談っぽいが、なんでんかんでもExcelでまかなおうとして、なんでもかんでもExcelに機能追加するのは素晴らしいユーザー体験をもたらすのか?

    • by Anonymous Coward

      VBAで最新のJavaScript(ECMAScript)使えるならそれで良いんだがなぁ…。
      いいかげんVB6から離れたいだろ皆。

      リンクにあるjsでカスタム関数作れるのって知らなかった。コレ良いかもな。

      • by Anonymous Coward

        とりあえず開発に VSCode を使わせて欲しい
        VBA のエディタは色々と無理、というかもう嫌

        いや JavaScript 使えるなら凄く嬉しいのですが
        # 一応 WSH で JScript を使えるんですけどね

        • by Anonymous Coward

          それな
          いい加減VS Codeとの連携機能欲しい

        • by Anonymous Coward

          まだ、開発途中だけど無いわけじゃない。デバッガは、まだ非対応っぽいが実行は出来る。
          https://marketplace.visualstudio.com/items?itemName=local-smart.excel-... [visualstudio.com]

          まぁ、いまさらVBAとか使わずに普通にC#かVB.NETで書けば、Visual StudioでもVS Codeでも好きなもの使って開発できるけど。

        • by Anonymous Coward

          Visual Basic Editorの現状は、VBAはもう使わないでくれというMSのメッセージだと思ってる。
          少なくともこれ以上発展させる気は無いだろう。

          # その処理、本当にVBAでやらなきゃダメ?

          • by Anonymous Coward

            言語仕様上、構造化例外が入るだけで使い勝手が飛躍的に向上するのに、とは常々思ってたね。
            そんなに難しいことでもなさそう(エラーとラップとgotoでスパゲッティーにすれば今でもできる)なので、やらないのはVB6系統はおしまい! ってメッセージだろうと思ってた。

            #VBAは標準モジュールに関数作るぐらいが丁度良い。まさに今回のLAMBDA的な。

      • by Anonymous Coward

        EXCELでPython使えるようにする話はどうなったんだろう。
        おれもJavaScriptが使いたいが(TypeScriptならなおよし)、無理ならPythonでもいい。VBAはやだ。

        • by Anonymous Coward

          そういうのはPowerBIに任せてるんじゃないかな。
          python、Rが使える。

    • by Anonymous Coward

      「Excel」「プログラミング言語」の文字を目にして「すわ、VB202xとしてついにコンパイラ付きで独立か?」と期待したのに、読んでみてがっかり。

      • by Anonymous Coward

        自分も「VSのテンプレにExcelってのが出て来るのか」と一瞬思った。

    • by Anonymous Coward

      vba使うぐらいならEXCEL外部から他の言語でいじくるわ

  • by Anonymous Coward on 2020年12月08日 15時10分 (#3938207)

    じゃないのをプログラミング言語とは言わないような

    • by Anonymous Coward

      (全て)プログラミング言語はチューリング完全でなきゃならないのか?

      • by Anonymous Coward
        プログラミング言語はチューリング完全でなきゃならないですが
        チューリング完全なものがみなプログラミング言語であるとは限りません
        例:ライフゲーム、マインクラフト、プラレール、etc・・・
    • by Anonymous Coward

      Excelは関数の問題より、セル数の制限でチューリング完全にはならないような

      • by Anonymous Coward on 2020年12月08日 17時27分 (#3938342)

        Cだって現実の実装はポインタのビット数でメモリの制限がかかってるけど、それを以てCはチューリング完全ではないとは普通言わないような。

        親コメント
    • by Anonymous Coward

      というか今まで本当にチューリング完全じゃなかったんだろうか。すでにうっかりチューリング完全 [blogspot.com]になっていてもぜんぜん驚かないんだが

  • by Anonymous Coward on 2020年12月08日 15時11分 (#3938211)

    ラムダ式(無名関数)ですね。
    LISP の ((lambda (x y) (+ x y)) 2 3) や
    JavaScript の ((x, y) => x + y)(2, 3) が
    LAMBDA(x, y, x + y)(2, 3)

    • by Anonymous Coward

      引数に関数を渡せるわけではないので、Yコンビネーターは構成できないと思われ

  • by Anonymous Coward on 2020年12月08日 16時22分 (#3938277)

    実装後に、「おい、このランバダって何に使うんだ?」と聞いてくる職場のおっさんが目に浮かぶぜ

  • by Anonymous Coward on 2020年12月08日 17時31分 (#3938344)

    セルの挿入もできなかった職場のおじさまが、目を見張る成長をしました。
    vlookup, countifs など駆使したシートを作れるようになったのでした。
    このおじさまに教えるべき関数って何だと思いますか。(業務上、大した難しいことはやりません)

    関数は小文字派

    • by Anonymous Coward

      Accessかな…

    • by Anonymous Coward

      関数を極めるよりも、マスターやログの元データを集計が容易な正規化された(もしくはそれに準じた)テーブルにして、帳票とか見た目重視のUIとかは別のワークシートにセル参照で作る、というメンテナンス性に優れたブックを作れるようになると良い。
      こうしておけば変更や拡張もやりやすいし、将来ExcelからちゃんとしたDBに移行するのも楽になる。

      世の中のExcelに不満を持っている人の多くは、セル結合などを多用した見た目重視のワークシートに直接データを入れてしまう、または前任者が作ったそういうワークシートを使わされて、Excelデータは再利用できない、拡張不能と文句を垂れていることが多いと思う。

      • by Anonymous Coward

        拡張不能ってのは、ローカルビジネスルールちゃうん

  • by Anonymous Coward on 2020年12月08日 18時20分 (#3938387)

    クソの山にいくら味噌を混ぜてもクソはクソ。
    あまりにもクソがクソミソテクニックで活用されすぎて旨味を伴うクソが発明されたからといって、クソの味が中途半端に上がってしまうと
    クソだと認識せず差し出された味噌汁、いやクソ汁を飲まされる被害が発生しかねない。
    下手したら正真正銘のプログラム言語が事務系オフィスから駆逐されかねない。
    マジ勘弁してください。

    • by Anonymous Coward

      > 下手したら正真正銘のプログラム言語が事務系オフィスから駆逐されかねない。
      飽きたらお前らに発注が行くから駆逐はされんよ。
      ただし、そのクソコードを読んで、真っ当な言語に置き換える作業をする奴が必要だが。

typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...