1 ポイント 投稿者 GN⁺ 2023-08-23 | 1件のコメント | WhatsAppで共有
  • Microsoftが、Excel内でPythonベースのデータ分析・可視化を行える統合機能をパブリックプレビューとして提供開始
  • 別途インストールせずにExcelのリボンからPythonにアクセスでき、既存の数式・グラフ・PivotTableと組み合わせて結果を調整できる
  • 新しいPY関数がPythonデータをスプレッドシートのグリッドに表示し、Anacondaとの協力によりpandas、statsmodels、MatplotlibなどをExcelで利用可能
  • 計算はローカルではなくMicrosoft Cloudで実行された後、ワークシートに戻され、MatplotlibやSeabornベースの可視化も作成できる
  • パブリックプレビューはMicrosoft 365 InsidersのBeta ChannelでWindowsから開始され、プレビュー終了後は有料ライセンスなしでは一部機能が制限される

Excelに組み込まれたPython分析

  • MicrosoftがExcelにPython統合機能を追加し、スプレッドシート内でデータを操作・分析できるようにした
  • ユーザーはExcelのリボンからPythonに直接アクセスでき、使い慣れたExcel環境を離れずに高度な分析作業を続けられる
  • Pythonで作成したプロットやライブラリの結果は、Excelの数式、グラフ、PivotTableと組み合わせてさらに調整できる

別途インストール不要の組み込み方式

  • Python統合は、Excelの組み込みコネクタとPower Queryの一部として提供される
  • 追加ソフトウェアのインストールや別途アドイン設定なしでアクセス可能
  • 新しいPY関数は、PythonデータをExcelスプレッドシートのグリッド内に表示する

Anacondaライブラリと可視化

  • MicrosoftはエンタープライズPythonリポジトリであるAnacondaと協力し、Excelで主要なPythonライブラリを使えるようにした
  • 利用可能なライブラリには以下が含まれる
    • pandas
    • statsmodels
    • Matplotlib
  • ExcelユーザーはPythonデータを基に、数式、PivotTable、グラフを作成できる
  • MatplotlibやSeabornなどのグラフライブラリで、以下の可視化を生成できる
    • heatmap
    • violin plot
    • swarm plot

計算はMicrosoft Cloudで処理

  • PythonコードはExcelスプレッドシート内で記述・使用されるが、計算処理はローカルのExcelではなくMicrosoft Cloudで行われる
  • 実行結果は再びExcelワークシートに返される

提供範囲とライセンス条件

  • Python in Excelのパブリックプレビューは、Microsoft 365 InsidersのBeta Channelで提供される
  • 初期提供対象はWindowsに限定される
  • Microsoftは今後、他のプラットフォームにも拡大する予定
  • プレビュー期間中はMicrosoft 365サブスクリプションに含まれる
  • プレビュー終了後は、有料ライセンスがない場合、一部機能が制限される

1件のコメント

 
GN⁺ 2023-08-23
Hacker News のコメント
  • 以前 Excel 開発者として働きながら Python を Excel に入れようとして失敗した立場からすると、今日のこのニュースはうれしい驚きだ
    7年ほど前、Excel チームを離れる機会があったのだが、当時の上司の上司が、私が Python を Excel に入れたがっていることを知って、残ればその仕事を任せると言ってくれた。6か月のつもりだった仕事が約3年のプロジェクトになり、Python 側はぼやけたまま、結局 JavaScript カスタム関数を Excel に入れる方向でリリースされた
    Python も AzureML v1 ベースで「クラウド上」で実行していたが、ローカル実行するかどうかをめぐって議論が行き来した。AzureML のパートナーチームでは組織再編、再ローンチ、再採用、PM の離脱があり、別のパートナーチームが、私たちのコードを JavaScript を外部プロセスで実行するために使えることに気づいたため、Python よりもその機能のリリースに多くの時間を使うことになった
    中核となる作業は、Excel の計算エンジンを変更して関数が非同期計算できるようにすることで、リモートエンドポイントが JavaScript であれ Python であれ、あるいは他の何かであれ、計算している間もユーザーがスプレッドシートの別の部分で作業を続けられるようにするものだった。以前は計算中にスプレッドシートがロックされ、時間がかかり終わりが見えない計算には向いていなかった。私たちが作ったものの一部が今回の機能に入っているのか気になる
    “Recalc or die”

    • 非同期 JavaScript 関数のおかげで、xlwings と Python を使った安定したカスタム関数をリリースできた
      Office.js の問題は、平均的な Excel ユーザーにとって npm 依存関係の塊のせいで始めるのが難しすぎる点で、プロの開発者でもかなり苦労する。ユーザーが Node.js を使わなくて済むようにできた点には満足している: https://docs.xlwings.org/en/latest/pro/server/officejs_custo...
    • 数年前にすでに動作する「Excel 内の Python」を作っており、リモートで SQL と Matlab/R も実行できた
      今は放棄したプロジェクト: https://alphawolfxl.com/
      ベータテストを頼んだ何人かに「会社は金を払わないだろう」と言われ、時間を無駄にしたという印象を受けてやめたのだが、今これを見ると複雑な気分だ
    • Microsoft がなぜ新技術のまともな例を作らなかったのか気になる。提供されている数少ない例はプログラマー向けだけだ
      全体として、Excel で JavaScript がどう動くのかを見られる実際に動くコードが不足していて、今はほとんど「フクロウの描き方」レベルに感じる
    • 社内の分析 API を呼び出すのにJavaScript カスタム関数を使っているが、作業はかなりやりやすかった
  • Microsoft Cloud だけを使う方式ではなく、ローカルでの Python 実行もサポートしてくれるとうれしいが、それでもこの機能だけで Excel を大きくモダン化できそうだ
    こうしたデータを見せるための Web サイト需要をなくせるかもしれない。以前の職場で社内の数人だけが使う分析 Web サイトを作ったことがあるが、そのときこの機能があれば十分これで置き換えられたと思う

    • この話をするといつも反発を受ける。ユーザーはただ Excel でデータを自由に分析したがっているのに、私のいる IT はそれを代行する Web アプリを作ろうとする。ユーザーは結局満足しない。そもそも望んでいたのは Excel だったからだ
      SQL Server でデータマートを作り、ETL ツールで分析に必要なデータを流し込めばいいだけだと何度も説明している。元データにはアクセスさせなければいい。それなのに皆、妙な目で見てきて、代わりに数百万ドル規模の Tableau 導入プロジェクトをやろうとする。ユーザーはそれを望んでいないのに、本当にあきれる
    • Excel チームで働いている。それがなぜ重要なのかを要約して bgruenbaum@microsoft.com に送ってくれれば、PM に伝える
      あるいは Excel Web/デスクトップのフィードバック UI から送ってもよい。PM たちはそのフィードバックをすべて読んでいる
    • Azure のインターネットアクセスのないハイパーバイザー分離コンテナで実行することには、いくつか重要な理由がある
      すべてのユーザーに一貫した体験を保証できる。時間がたつにつれてバージョンが分岐していく中で、各自がローカルの Python ディストリビューションを維持し、Excel と動作することを保証しなければならないと考えるとぞっとする
      Excel ブックを他のユーザーと共有したときに、計算がそのまま動作するようにできる。ばらばらのローカル Python インストールに依存するとそれはできず、ユーザーは大いにいら立つだろう
      セキュリティも大きい。ローカルユーザー権限で Python コードを実行できる Excel ファイルを開く状況を想像すればよい
      2つ目の点にも全面的に同意する。既存の IT インフラと統合される社内アプリを Python で作るのは、控えめに言ってももどかしい作業だ。Excel はほとんどどこでもすでに IT インフラの一部であり、プログラム可能なリアクティブキャンバスだ
      開示: この機能の設計チームで働いている
    • Microsoft Cloud で実行されるという点のおかげで、むしろ当社ではマクロより有用かもしれない
      ここではマクロはクライアントマシン上でマルウェアを実行する経路と見なされており、そのリスクを受け入れるほどの効用は大きくないと考えられている
    • クラウドに限定するのはある程度理にかなっている。Python を Excel ファイル形式の中核部分にすると、移植性が下がり、今後あらゆる互換性の厄介事が生じる可能性がある
  • ここには明らかに危険信号が見える。Excelの本質的な力は、ブックが独立して存在できることから来ているのに、これでプロセスが永遠にクラウドに縛られることになる。
    3年後に亡くなった同僚のブックを開かなければならないとき、この統合機能をベンダーが引き続きサポートしてくれるかどうかに左右される。
    どんな業務でも最初のステップが「ソフトウェアを再び動くようにする方法を探す」になるのはひどい。過去数十年の間に、Excel、Outlook、Wordのさまざまなアドインで何度も経験してきたし、それらのアドインは処理自体をリモートで行っていたわけでもなかった。

    • 「何も所有できないが、幸せになるだろう」が、ついにスプレッドシートにまで及んできたのか。机に向かって賃金労働で作るものすら所有できなくなる。
    • 正直、このほうが管理しやすそうに見える。Anacondaディストリビューションを使っているのだから、各ブックを特定のディストリビューションに紐づけ、更新やロールバックを可能にすれば、ローカルインストールを管理するよりずっと簡単になる。
    • クラウドだけでなく、サブスクリプションにも縛られる。サブスクリプションを解約したり、発表で有料モジュールかもしれないと言われていたそのサブスクリプションがなかったり、供給元から提供されたExcelでサブスクリプションがなかったりすると、そのExcelシートを使う時点ですでに問題が生じる。
    • ここ7年ほどは、クラウドでないスプレッドシートを使ったことがない。ただし重要度が高く寿命の長い作業にはExcelを使わないだろう。主にブレインストーミングや、発表資料にスクリーンショットとして入れる用途だ。
    • クラウドを使うかどうかに関係なく、この問題はすでに存在している。ExcelワークシートはすでにWebや別ファイルへの外部リンクを持てるし、そのWebリソースやファイルがなければ終わりだ。古いファイルは、現代のマシンではもう実行できないソフトウェアでしか開けないこともある。
      だから、ときどきバックアップを実際に復元してみたり、こうした場合には重要なファイルを検証したりすることが重要だ。
  • 「ExcelのPython」に興奮したが、「クラウドで実行」という文言を見て冷めた。これはクラウドサービスに縛りつける以外の理由がなさそうに見える。安全でないプリンターインクから私を守ってくれる、という感じにあまりにも似ている。
    普段はMS Office製品が好きで、好意的に見ようとするほうだ。ロックイン以外に、Pythonをクラウドで実行するよう求めるもっともらしい良い理由があるなら教えてほしい。

    • 危険信号だ。M$が人々を自社クラウドへ押し込んでいる。OneDriveでローカルファイルシステムを乗っ取るやり方は、すでに多くの人が経験した良い例だ。
      M$から離れるべき時点は、もう5年ほど前に過ぎていたと思う。WindowsからOfficeまで、すべての製品にすでに反消費者的な機能が入っている。
    • 顧客にローカルのPythonインストールを管理させない、というのは理由になり得る。
      もちろん、Excel+Pythonのパワーユーザーは自分のPythonランタイムを持ち込み、維持することに慣れている可能性が高いという点も理解している。
    • ほとんどのExcelユーザーは、Pythonをインストールして実行した経験がないからだろう。Pythonを知っている人にとっても、かなり面倒な作業だ。
      iOSやAndroid端末でExcelを使う人もいる。この方式なら、そうした人たちもスプレッドシート内のPythonを使い、読むことができる。
    • Gristもある。Excelのクローンではないが、スプレッドシート/ハイブリッドデータベースなので似たことの一部はできるし、何より数式にPythonを使え、ローカルで動かしたければセルフホスティングの選択肢もある。
  • 2005年に友人たちとResolver Systemsという会社を作り、Python対応スプレッドシートのResolver Oneを作った。
    残念ながら市場では伸びず、方向転換してオンラインのコーディング・ホスティング環境であるPythonAnywhereを作ったが、これはかなりうまくいき、昨年Anacondaに買収された。そして今、円環が閉じたというわけだ。
    はっきりさせておくと、Anaconda内でこの機能を作っているチームは、PythonAnywhereチームとは完全に別だ。同じ人たちだったなら、ハリウッド的な話として完璧だったのに。

    • 良い製品だった。そのピッチは覚えているし、ロンドンのPython金融ミートアップでも何度か会った。「Enthought Python Distribution」も覚えている。
      ただ、ResolverがIronPythonベースだったため、きちんと動かないライブラリがかなりあったのが問題だった。
    • 最初のアプリをPythonAnywhereで作った。ほぼ10年そこでも動き続けているものがある。
      PythonAnywhereのWebアプリ上でそのまま小さな修正ができるのが本当に良くて、GCP/AWSを使い始めたときにはそういう機能がかなり恋しかった。
    • PythonAnywhereは素晴らしい。他の人と同じように、Webプログラミングに初めて足を踏み入れた場所でもあった。
    • このニュースを聞いた瞬間、Resolver Systemsがすぐ頭に浮かんだ。
  • 「Pythonの計算はMicrosoft Cloudで実行される」という文言を見て、同僚が冗談で「MicrosoftですらWindows上のローカルPythonインストールを管理できないのかもね……」と言っていた。
    でも、Microsoftが本当にローカルPython環境の設定問題をついに解決し、ExcelがOS全体の標準Pythonパッケージマネージャーになる姿を想像すると面白い。
    $ excelpip install fastapi==9.11.23
    fastapi version 11.09.2023 を検索中…

    • 20年前にDebianのaptを触って以来、MicrosoftがWindowsのパッケージ管理を解決するのを待ってきた。皮肉ではなく、Microsoftの製品の複雑さと下位互換性への執着を考えると、むしろソフトウェア管理を前進させられる主体に見えた。
      問題領域を深く掘り下げ、オープンソース側から出てきたものを超えるパッケージマネージャーを再発明すると思っていた。
      その代わり今あるのは、Windows Update、Windows Features、Microsoft Store、Software Center、wingetだ。wingetはMicrosoftが作ったWindows向けパッケージマネージャーで、さらに別のMicrosoft製Windows向けパッケージマネージャーからインストールしなければならないツールだ。
    • こういう問題が思い浮かぶ。MicrosoftはLTSCパッケージセットを固定すべきなのだろうか。1世代遅れのExcelバージョンを使っている$GOV_AGENCYは、世界とどう協業するのだろうか。
  • LibreOffice はかなり前に空気を読むべきだった。原理的には Python スクリプティングは可能だが、あまりにも面倒で雑然としており、改善のロードマップもなさそうに見える。
    同じ警告は Linux デスクトップとそのアプリ全般にも当てはまる。ますます多くのプロプライエタリなプラットフォームがクラウドベースで、しばしば Python API を通じて既存アプリに高度な「AI」機能拡張を入れてくるだろう。
    オープンソース界のさまざまな流れがあまりにもサイロ化されているのが惜しい。部分の総和を超える潜在力が無駄になっている。

    • 多くの場合、人々を Excel や他のプロプライエタリ製品につなぎ止めているのは高度な機能ではなく、些細に見えることだ。
      LibreOffice のスプレッドシートと Apple Numbers で一番不満なのは、非連続選択範囲のコピー/貼り付けの扱いだ。
      例えば 5 行 3 列のデータで 1 2 37 8 9a b c の行を選択してコピーし、d e f の下に貼り付けると、Excel は選択した行だけを詰めて貼り付ける。LibreOffice と Numbers は間の空行まで保持する。
      この動作を変える設定は見つけられなかった。Excel も逆に間隔の保持を望む人にはいら立つかもしれないが、私は間隔を保持したいと思ったことがほとんどないので、LibreOffice と Numbers は不便だ。
    • LibreOffice はほぼ初期から Python スクリプティングを含んできた。
      人々があまり気にしない理由は、オフィススイートの最も人気のあるユースケースが Microsoft のファイル形式と相互運用することだからだ。
    • ScriptForge を確認してみる価値がある: https://help.libreoffice.org/latest/en-US/text/sbasic/shared...
      LibreOffice 内でスクリプトを実行するには、APSO script organiser が推奨されている: https://extensions.libreoffice.org/en/extensions/show/apso-a...
    • むしろ逆に見える。Python はスクリプティングがあまりに簡単なので、Excel が自分の棺に釘を打っているようなものだと思う。
      プログラミング言語を使ったことのない高齢ユーザー層が年を取り引退していく中で、Excel に Python を組み合わせる方法を学ぶ人は、結局 Python のほうを好むようになるだろう。より柔軟で拡張可能だからだ。
      基本的な計算表の用途以外に Excel を使う理由はない。誰かがスプレッドシートを求めてきたら、Python で生成を自動化し、二度と手で扱わなくて済むようにする。
    • LibreOffice には先に解決すべき別の問題がたくさんある。遅すぎる。
  • がっかりだ。
    「Excel の Python は現在、Windows でベータチャネルを実行しているユーザーに提供されています。この機能はビルド 16.0.16818.2000 から Windows 用 Excel にまず展開され、その後ほかのプラットフォームに提供されます。」[1]
    「Excel の Python は Windows 用 Excel で利用できます。この機能は Mac 用 Excel、Web 用 Excel、iPad 用 Excel、iPhone 用 Excel、Android 用 Excel では利用できません。サポートされていないプラットフォームでは Python を含むブックを表示することはできますが、Python セルを再計算するとエラーが表示されます。」[2]
    [1] https://techcommunity.microsoft.com/t5/excel-blog/announcing...
    [2] https://support.microsoft.com/en-us/office/introduction-to-p...

  • 「Python の計算は Microsoft Cloud で実行される」だなんて、遠慮しておく。

    • そこは自分も目に留まった。なぜこういうモデルを選んだのか気になる。
    • スプレッドシート製品群に優れた Python 統合を切実に望んでいるが、これは試す気すら起きない。
  • ちょっと待って。LibreOffice には何年も前から Python があったのに誰も気にせず、代わりに「本物の仕事」には 100% 互換の VBA が必要だと文句を言っていた。あの人たちは今どこにいる?

    • ここにいる。問題は 100% 互換の VBA だけではなく、Excel では動かない VBA ベースのスプレッドシートを作るために、まったく新しい API を学ばなければならないことだ。
      LibreOffice VBA が Office VBA と互換だったなら、古い Windows システムをどこかに保管し続ける理由はなかったはずだ。
      私たちがこれをやっている理由は金を稼ぐためで、Excel で動かない Excel スプレッドシートを買いたい人はいない。
    • Excel がより多くのことをできるのが気に入らないのではなく、LibreOffice に慣れた機能や強制的に使わなければならない機能がなく、いまだに不便なことがあるという話だ。
    • 顧客の誰かが LibreOffice を使っているなら喜んで使う。だが誰も使っていない。
      Linux で LibreOffice Calc を使って作業しており、Excel は Linux サポートがゼロなので、問題なく顧客に送れる程度の互換性があればいいのだが、まだその近くにも達していない。
    • 機能がいまいちなら人々は使わない。
      存在を知らなければ人々は使わない。
      他のものに慣れていれば、人々はそれを求める。
    • LibreOffice の問題は、Python サポートが文書上にしか存在しなかったことにあった。