| スピーカー |
トランスクリプト |
| マイケル・アッカーマン |
クリスティ。 |
| クリスティ・スペイン |
おはようございます。マイケルさん、お元気ですか。 |
| マイケル・アッカーマン |
元気ですか。 |
| クリスティ・スペイン |
素晴らしい。私が理解できないように、電子メールを閉じさせてください。 |
| マイケル・アッカーマン |
ええ、何も鳴らないようにコンピューターの設定を合理化しています。 |
| クリスティ・スペイン |
私がツールバーを叩いたことを私は知っています。 |
| |
すべてを手に入れたと思う。 |
| |
週末はどうですか。 |
| マイケル・アッカーマン |
よかったです。お元気ですか?週末はどうでしたか? |
| |
良い。 |
| クリスティ・スペイン |
あなたも暗闇の中で生きているんですね。 |
| マイケル・アッカーマン |
ヘレンは私たちを待っています。 |
| |
はい、そうですね。それで、本社にかなり近いので、実際のディスカバリーサミットに行く予定でした。 |
| |
本人出席。 |
| |
それも残念でしたが。 |
| |
そうだね、やあ。 |
| クリスティ・スペイン |
こんにちは。おはようございます。お元気ですか。 |
| ジョン |
良いことをしています。 |
| マイケル・アッカーマン |
ヨハン、君がそこにいるように、僕の後ろにも博学な壁を築く必要があるよ。 |
| ジョン |
クリックしてみました。 |
| |
そこにはこれとダニーの本があるので、認識できないでしょう。 |
| クリスティ・スペイン |
良さそうです。 |
| |
先週は混乱を招いてしまい申し訳ありませんでした。 |
| |
お二人とバーチャルでお会いできて嬉しいです。 |
| |
私はノヴァゾーンをサポートするプレミアチームの一員なので、いずれにしても私を皆さんに割り当てるべきではなかったと思います。 |
| |
そうですね、いくつか確認する必要があることがあります。お二人ともディスプレイを 2010 年 19 月 19 日に設定していますか。 |
| |
私はします。 |
| ジョン |
もう一度確認させてください。 |
| クリスティ・スペイン |
素晴らしい。 |
| |
そして |
| |
音が良ければ、ロゴをつけている人はいないと思います。 |
| |
著作権侵害を引き起こす可能性のあるものが視界に入らないようにしてください。後ろにある本が問題になるかどうかはわかりません。 |
| |
はい、念のためそうしましょう。 |
| マイケル・アッカーマン |
そのうちの 1 つは、元 JMP ディスカバリー サミット基調講演者から構成されています。 |
| ジョン |
誰ですか。 |
| マイケル・アッカーマン |
ああ、そうではなかった。彼は来て、そのことについて話してくれた。 |
| クリスティ・スペイン |
ああ、その本は持っています。 |
| マイケル・アッカーマン |
ええ、ええ。 |
| ジョン |
私はしていません。 |
| |
メールから保存したものはありませんが、メールからそのまま取り出すことができます。 |
| マイケル・アッカーマン |
私はウェブカメラを腕に取り付けていて、それを自分の前や後ろ、上下左右に動かすことができるので、永遠にいじっているような気分になります。 |
| クリスティ・スペイン |
ああ、それはいい考えですね。 |
| |
一度も、一度も私を正しい場所に見たことがなかった。 |
| |
そして、誰もがすべてのアプリをOutlookまたはI am Teamsで実行します。 |
| |
そういう感じ。 |
| マイケル・アッカーマン |
親しいチームには通知は届きません。 |
| クリスティ・スペイン |
時間は30分ありますね。それで合っていますか。 |
| マイケル・アッカーマン |
はい、それが私の理解です。 |
| クリスティ・スペイン |
君たちもそうなるかな。 |
| |
理想的には、ただ始めて、そのまま進みたいのです。 |
| |
切り替えるたびに画面のテスト共有を実行しますか。 |
| マイケル・アッカーマン |
ある時点で私の画面とあなたの画面を切り替える予定なので、まずは私の画面を共有させてください。 |
| |
音を共有する必要はありません。 |
| |
それで。 |
| マイケル・アッカーマン |
ここから始めてみましょう。 |
| クリスティ・スペイン |
こんにちは、アレックス。 |
| |
わかった。 |
| マイケル・アッカーマン |
それで、私たちはそれをやりました、それをやりました、それをやりました、そして、私たちはあなたに引き継がれました。 |
| ジョン |
はい、私たち自身で画面共有を制御します。Producer Dude を使用できます。 |
| クリスティ・スペイン |
はい、そうするべきです。 |
| |
ああ、背景が素敵ですね。 |
| ジョン |
ありがとう。 |
| クリスティ・スペイン |
それは私が持つべきです。 |
| マイケル・アッカーマン |
もっと統一感を持たせることができればと思います。 |
| ジョン |
いいえ、私たちは独自の個人を持つべきですが、私はそうしませんでした。 |
| |
はい。 |
| クリスティ・スペイン |
はい、マイケルに話を移しましょう。 |
| ジョン |
うん。 |
| |
画面上でのリンクはあまり行わないと思います。ほとんどは会話の後、画面共有を行うことになります。 |
| マイケル・アッカーマン |
画面を共有している間、何が見えるかはわかりません。 |
| クリスティ・スペイン |
そうですね、録音が戻ってきたらですね。 |
| |
4つの異なるものが手に入ります。 |
| |
バージョンによっては、あなたが含まれているものと含まれていないものがあります。ジェフ・パーキンソンがすべてを編集するかどうかはわかりません。そのため、彼がどのバージョンを選ぶかはわかりません。 |
| |
彼は講演者にそのように見せたかったのではないかと思います。 |
| マイケル・アッカーマン |
画面上ではそう見えると思います。 |
| |
ちなみに、右クリックすればアイコンをオフにすることもできます。 |
| ジョン |
混乱したウィンドウを管理すると、次のようになります。 |
| クリスティ・スペイン |
まあ、それは本当に難しいことなんですね。 |
| ジョン |
そうそう。 |
| |
それで右クリックして表示するとどうなりますか。 |
| マイケル・アッカーマン |
ええ、彼はそれが大丈夫、クールだと思ったようです。 |
| |
正確にどこだったか覚えていないので。 |
| |
おい、俺はデスクトップにアイコンを表示させたことは一度もない、ただそこに何かがインストールされただけだから、もしそれをオンにしたとしたら、それは同じだ。 |
| ジョン |
うん。 |
| クリスティ・スペイン |
それで、マイケル、終わったら、画面共有で「わかりました。引き継ぎます」と言って、そこから進めていきます。休憩は特にありません。言い換えると、そうです。 |
| マイケル・アッカーマン |
そして私の部屋には黄色のフィルターがかかっています。 |
| クリスティ・スペイン |
ああ、あなたの好きな赤いライトがありますね。 |
| マイケル・アッカーマン |
そうですね、私は憂鬱になります。 |
| クリスティ・スペイン |
私はそういったものに投資したことがありません。私の机はとても小さいですが、ここにはたくさんのスペースがあります。 |
| マイケル・アッカーマン |
ええ、私は早くに独立したのですが、上司が私のマイクの品質とカメラの品質について文句を言い続けていたので、私は「よし、新しいマイク付きカメラを買ってくれ」と言いました。 |
| クリスティ・スペイン |
よかったですね、私はこの新しいヘッドセットを買っていません。 |
| マイケル・アッカーマン |
すぐにドアを閉めさせてください。 |
| クリスティ・スペイン |
ああ、そうですね、ペットの友達や走り回っている子供がいる場合は、それは重要です。 |
| ジョン |
うん、いいよ、どっちもそうでもない、うん、ドアを閉めておこう。 |
| クリスティ・スペイン |
そしてヨハン、あなたの居住地はどこですか。 |
| ジョン |
会社で。 |
| クリスティ・スペイン |
私のよりもいいですね。 |
| |
完全である。 |
| ジョン |
ああ、そうだったんですね。 |
| クリスティ・スペイン |
と結婚した友人がいます。 |
| |
コペンハーゲンの男の人がデンマーク出身なので、私たちはそこへ遊びに行きました。 |
| |
ああ、美しいですね。 |
| クリスティ・スペイン |
わかりました。それでは、皆さんの会社名と概要のタイトルを述べていただければ幸いです。 |
| |
これは録音用ではありません。これはジェフが自分のものを識別するためのものです。 |
| マイケル・アッカーマン |
名前は確かです。私の名前はマイケル・インクリメントです。私はノボザイムズに所属しています。要約のタイトルは写真をアップロードするのと同じくらい簡単です。 |
| |
パッケージと請求書について正確なことは忘れてしまいました。 |
| クリスティ・スペイン |
大丈夫ですよ。 |
| マイケル・アッカーマン |
皆さん。 |
| ジョン |
そして私の名前はUNです。 |
| |
また、意味がありません。 |
| クリスティ・スペイン |
これを録画してディスカバリー サミット カンファレンスに投稿し、一般公開する予定ですが、その際にこの録画の使用許可は得ていますか。 |
| マイケル・アッカーマン |
私たちもそうします。 |
| |
行くときは。 |
| ジョン |
ああ、ごめんなさい。気のせいだったの。 |
| クリスティ・スペイン |
はい、それで。 |
| |
皆さんのためにカメラをオフにしておきます。 |
| |
誰も私に会いたがらない。 |
| クリスティ・スペイン |
準備はできていると思いますが、皆さんは準備はできていますか。 |
| マイケル・アッカーマン |
まずは私の画面から始めましょう。 |
| クリスティ・スペイン |
準備が整ったら、時間を見てみましょう。 |
| |
909なので、技術的には939までありますが。 |
| |
ヒューズの増減は問題ありませんので、いつでも準備してください。 |
| マイケル・アッカーマン |
皆さん、こんにちは。本日は「Y'All」での講演へようこそ。これは、Novozymes社でJMPアドインの共有、更新、そしてグローバル企業全体でのスクリプトのメンテナンスを自動化するために構築したアドインパッケージマネージャーです。私はマイケル・アッカーマン、共同プレゼンターはヨハン・オルセンです。 |
| |
今日は、Y'All についてお話しし、このツールキットもご紹介したいと思います。興味のある方はぜひ... |
| |
個人利用や組織で利用したい方は、このツールキットの入手方法や使い方、そしてY'Allとは何かをぜひ知っておいてほしいと思います。まずは、Y'Allについて、そしてY'Allをなぜ作ったのかについてお話ししましょう。 |
| |
Y'Allの主な機能とユーザーエクスペリエンスについて。それでは、ヨハンが、このツールキットの使用時にユーザーが目にするであろうものを解説します。 |
| |
ユーザーが Y'All ツールキットを操作するときにその背後で何が起こっているのかを舞台裏で説明し、その後、要約と概要を説明します。また、目的に応じて Y'All が興味深いと思われる場合は、組織で Y'All を導入するためのヒントも紹介します。 |
| |
私たちはノボザイムズという会社のデータサイエンティストです。共同プレゼンターはヨハン・オルセンです。彼は農業および産業バイオソリューションの応用研究を専門とするデータサイエンティストです。 |
| |
私はノボザイムズの同じグループに所属するシニアデータサイエンティストです。Y'Allについて、あるいはその他何かございましたら、こちらに連絡先を記載しておりますので、お気軽にご連絡ください。 |
| |
Johanのメールアドレスはjpko@novozymes.comで、JMPユーザーコミュニティではJPKOです。私のメールアドレスはmxak@novozymes.comです。 |
| |
JMP ユーザー コミュニティの Michael Akerman と Michael mxak がお手伝いします。皆さんについて、あるいは私たちが構築したものや取り組んでいるものを改善する方法について、ご質問やフォローアップ、コメントなどがありましたら、お気軽にご連絡ください。 |
| |
私たちはノボザイムズで働いています。ノボザイムズは世界的なバイオテクノロジー企業です。私たちは持続可能性のための生物学的ソリューションを構築しています… |
| |
…そして世界中のあらゆる産業のパフォーマンス向上とコスト削減に貢献します。農業、バイオ燃料、家庭用品、食品・飲料、動物用医薬品など、様々な産業を支援しています。 |
| |
…これらの生物学的ソリューションを活用しています。世界中に6,000人以上の従業員がおり、その中には数百人のJMPユーザーがいます。 |
| |
私がこのことを言及する理由は、私たちがサポートし、協力している JMP ユーザーの非常に大規模なコホートがあり、彼らは皆 JMP を使用して作業し、JMP で何かを構築しており、それがまさに皆さんのインスピレーションとなっているからです。 |
| |
当社の目的は、「成長する世界でより良い暮らしを実現するための生物学的な答えを共に見つけ、明日を考え直そう」です。 |
| |
先ほど申し上げたように、ノボザイムズには非常に大規模な JMP ユーザー集団が存在します。 |
| |
そこで私たちは、JMP スクリプトと JMP アドインをより簡単に操作できるようにし、コードの再利用性と検索性を高めたいと考えました。 |
| |
まず第一に、更新を簡単にしたいと考えました。ノボザイムズ社全体で、人々が処方箋をメールでやり取りしていることに気づきました。 |
| |
JSLファイルを個人のネットワークドライブで送信している人もいました。中にはフラッシュドライブに入れて配布している人もいました。私たちは、新規および更新されたJMPスクリプトの配布をできるだけ簡単にしたいと考えていました。 |
| |
コードを保護するアーカイブを作りたかったのです。JMPのユーザーは多く、この取り組みは組織にとって大きな価値を生み出しています。 |
| |
つまり、貴重なコードがすべて保存され、バックアップされ、アーカイブされる中央リポジトリです。 |
| |
また、時間の経過とともにバージョンを追跡したかったので、スクリプトが変更されたり、改善されたりするにつれて、それらの変更を確認し、時間の経過とともにそれらの変更を追跡できるようにしたいと考えました。 |
| |
また、スクリプトの発見と再利用を容易にしたいと考えました。JMP 開発者であれば... |
| |
...JSL スクリプトを記述する開発者であれば、他の開発者が記述した関連スクリプトを見つけて、それを改良したり... |
| |
それらを基に、あらゆるニーズに対応できます。そのため、これらのスクリプトを簡単に取得して活用できるようにし、また、組織内の他のメンバーが便利だと感じるJSLの関数を共有、インポート、再利用できるようにしてください。 |
| |
これを実現するために、3つのコンポーネントを組み合わせました。Pythonビルドスクリプト、GitLabインターフェース、そしてJSLロード・アップデートスクリプトです。これらはすべてこのツールキット内で連携して動作します。 |
| |
Python ビルド スクリプトは、Python 3 以上で実行される自動化されたスクリプトであり、JSL ファイルを自動的に解析してアドイン メニュー構造に構造化します。 |
| |
また、アドイン定義ファイルも作成します。インポート可能なカスタム関数スクリプトを生成し、これらの再利用可能なユーティリティ関数をすべてJMPスクリプトインデックスとJMP IDEに追加します。そして、それらをすべて.jmpaddinファイルに圧縮してユーザーが使用できるようにします。 |
| |
GitLabは、ユーザーがアドインスクリプトを操作したり、アドインビルダー自体を操作したりするためのインターフェースです。GitLabは、GitHubのオープンソースの代替、あるいは競合製品です。 |
| |
これは Novozymes 社内で公開されており、この中央リポジトリにスクリプトをアップロードするための、非常に簡単なポイント アンド クリック ユーザー インターフェイスが提供されています... |
| |
...これらすべてのスクリプトが保存され、ビルドが実際に実行される場所です。 |
| |
そして、継続的インテグレーションと継続的デプロイメントを表す CICD パイプラインは、Python ビルド スクリプトを自動的に実行し、リリース バージョン チャネルとベータ バージョン チャネルの両方を通じてアドインを配布するため、ユーザーは次のいずれかを利用できます... |
| |
...安定した品質管理されたリリース、または開発者であれば、このツールキットで使用される各スクリプトの最新バージョンのクイックリリースを頻繁に受け取ることができます。 |
| |
最後に、JSLのロードスクリプトと更新スクリプトがあります。JMPが起動し、このアドインが読み込まれると… |
| |
...確認すると、選択したチャネル(ベータチャネルまたはリリースチャネル)で新しいバージョンがないか確認し、そのアドインパッケージのダウンロードと更新を提案します。これにより、カスタム関数がスクリプトインデックスにインポートされます。 |
| |
JMPユーザーの皆様から、Y'Allへのスクリプト投稿をとても簡単に受け付けています。ソーシャルメディアに写真をアップロードするのと同じくらい簡単です。 |
| |
ユーザー インターフェースにアクセスし、アップロード ボタンをクリックすると、数秒以内に Y'All のベータ チャネルで利用できるようになります。 |
| |
これらのスクリプトは自動的にバージョン管理され、保存されます。また、JMP アドインは自動または手動で更新されるため、JMP を開くと、Y'All が更新を提案します... |
| |
...または、ユーザーは Y'All メニューから Y'All を手動で更新することもできます。 |
| |
スクリプトを開発している開発者の方向けに、迅速なビルドとテストのためのベータ版チャンネルをご用意しています。スクリプトを更新したり変更したりするたびに、アドインの最新バージョンを入手できます。また、管理された導入と品質管理のためにリリースチャンネルもご用意しています。 |
| |
これにより、発見可能かつ再利用可能な JSL ファイルが提供され、Novozymes や Y'All のユーザーによって送信されたスクリプトのファイル構造を調べて、中を見て確認できるようになります... |
| |
...自分の目的に近いスクリプトを見つけて、自分の目的に合わせて修正します。 |
| |
また、スクリプト インデックスに便利なユーティリティ関数も追加しました。その小さなスクリーンショットをご覧ください... |
| |
...左側の JSL エディターに入力すると、ビルド スクリプトによって、インポート可能で再利用可能な関数が、JMP スクリプト インデックスに自動的に追加されます。その際、この関数の動作と使用方法を説明する便利な小さな doc 文字列も追加されます (存在する場合)。 |
| |
Y'Allにデモ用として収録したコードの一部について、少しお時間をいただきたく存じます。Novozymes社内で使用されているコードの多くはNovozymes社のシステムに固有のものであり、社外では使用できません。 |
| |
そこで、JMPユーザーコミュニティに既に投稿されていたスクリプトをいくつか抜粋し、デモ用に公開しました。これらのスクリプトはそのまま残しても構いませんし、Y'Allから削除しても構いません。 |
| |
…望み通りです。Xan GreggとCraige HalesによるJSONパーサースクリプトも用意しました。JMP Discovery Summit 2020で発表されたデータクリーニングスクリプトアシスタントも用意しました… |
| |
…ジョーダン・ヒラーとミア・スティーブンスによるものです。ディスカバリー・サミット2020では、ハイディ・ハードナーとセルカイ・オルメズによる画像テーブルツールも紹介されています。 |
| |
Nick HolmesによるColor row selection.jsl。Byron Wingerdによる複数Y軸チャートと自動検証設定は、JMP Discovery Summitでも発表されたと思います… |
| |
...昨年 Mike Anderson によって開発され、Riffyn データ キャプチャ ソフトウェアである Riffyn Nexus 用のインポート可能な関数スイートができました... |
| |
…Riffynが作成したAPIを、Riffyn Tools JMPアドインから許可を得て統合・利用しています。これはNovozymes社内で頻繁に使用するツールです。Riffynをご利用の他のユーザーも、このコードを自由にお使いいただけるよう、ここに含めました。 |
| |
さて、それでは早速ライブデモに移りたいと思います。まずはユーザーエクスペリエンス、そしてY'Allツールキットを操作する際にユーザーが目にする画面や操作方法についてです。このデモについては、共同プレゼンターのJohanにバトンタッチします。 |
| |
ヨハン、ミュートになっています。 |
| ジョン |
ありがとう、マイケル。 |
| |
申し訳ありません。画面を共有させてください。 |
| |
これを見ていますか? |
| マイケル |
はい。 |
| ジョン |
よし。 |
| |
マイケルが言ったように、Y'All を使用するユーザー エクスペリエンスについて説明します。 |
| |
Y'Allのユーザーになるということは、実に3つの段階に分かれています。ほとんどのユーザーは、JMPに組み込まれたプラットフォームのように使っています。彼らは… |
| |
…スクリプトをポイントしてクリックし、本来の目的に沿って実行します。スクリプトを提供してくれる大規模なユーザーグループも存在し、その方法についても検討しています… |
| |
簡単なスクリプトを投稿していただいても構いません。また、より高度な作業を行う開発者とメンテナー(??)の小グループも存在しており、それらについても少しずつ貢献していきたいと考えています。 |
| |
まずはY'Allの本当に簡単な使い方から。インストールは、GitLabリポジトリに作成されたビルドアーティファクト(??)へのリンクをクリックし、JMP編集ファイルをダウンロードしてJMPで実行するだけです。 |
| |
これで更新が要求されましたが、今回はキャンセルするつもりです。メニュー バーに Y'All メニューがあるのがわかります... |
| |
…マイケルが言及したデモスクリプトをいくつか使ってみます。これらのスクリプトはY'Allパッケージの一部ではなく、デモ用に同梱されているだけなので、ここでは詳しく説明しません。ただ、とりあえず触ってみることにします… |
| |
...おっと、有効にしてください。申し訳ありませんが、すでに有効になっているようです。ベータ テストを有効にして、何かを作成し始めるとすぐに確認できるようにします。 |
| |
ほとんどのユーザーはベータテストを無効にしており、メジャーリリース(数週間に一度)後にJMPを起動するとアップデートの通知が表示されます。ただし、ベータテストを有効にしているユーザーの場合、ベータブランチのアップデートは1日に数回から週に数回程度まで、頻繁に行われる可能性があります。 |
| |
これが、基本的に一般ユーザーにとっての利点です。 |
| |
これにスクリプトを貢献したい場合は、いくつかの方法があります。一つはGitLab UIを使うことです。先ほど見たメニュー構造は、GitLabのUIにも反映されています。 |
| |
...ディレクトリ構造は... |
| |
...リポジトリです。新しいリポジトリを作成します... |
| |
...メニューやサブメニューを追加するのは、新しいディレクトリを作成するだけです。ここでは、これを...と呼びましょう。 |
| |
...「デモ」 |
| ジョン |
そしてそれを追加します。 |
| ジョン |
スクリプトを追加したい場合は、JMP IDE で簡単に作成できるので、非常にシンプルになります。 |
| |
こんにちは世界。 |
| |
これで十分でしょう。実はもう少し細かい点があります。メニュー項目にツールチップを表示しやすい名前を付けるために、[???] またはコードマジックを実装しました。つまり、最初にコメントアウトして記述すると、おっと、ということになります。 |
| |
あなたも。 |
| |
メニュー名。 |
| マイケル・アッカーマン |
皆さん。 |
| |
メニュー名。 |
| ジョン |
Y'Allメニュー名 |
| マイケル・アッカーマン |
古い習慣。 |
| ジョン |
こんにちは、と呼びましょう。それから、皆さんのツールチップ。 |
| |
では、これを保存してみましょう。 |
| |
どこかに、ええと、デスクトップとかに。それからここにアップロードします。 |
| |
それはテストでしたか? |
| マイケル・アッカーマン |
スクリプトでしたが、大丈夫だと思います。 |
| ジョン |
今... |
| |
このファイルをアップロードすると、自動化された [聞き取れない] のパイプラインがトリガーされます。 |
| |
[聞き取れない] システムでは、まずリポジトリを複製し、次に... |
| |
...その後アドインをビルドし、JMPの再起動時にプロンプトが表示されます。 |
| ジョン |
すべての編集を更新します。 |
| ジョン |
更新を選択すると、テスト スクリプトを含むデモ メニューが表示されます。 |
| |
これがJMPにスクリプトを提供する最も簡単な方法です。Gitの使い方に慣れている方は、より一般的なGitワークフローもご利用いただけます。ここでバッチウィンドウを開きます。ちょっと… |
| |
リポジトリをクローンできます。さて、戻ってみましょう。ここで紹介している内容の一部は、ここで使用しているGitLabに特有のものです。 |
| |
しかし、他のリモート リポジトリ コーディング、コード ホスティング システムでも同様です。 |
| |
これでリポジトリのクローンが作成され、ローカルシステムにリポジトリの完全なミラーが作成されます。先ほどと同様に、ここにミラーリングされたディレクトリ構造が表示されます。それでは、次のものを作成できるか試してみましょう… |
| |
別のスクリプト。 |
| |
これについては、Y'Allメニュー名が改善されました |
| |
こんにちは。 |
| |
そうだとしましょう、もしかしたら今回は… |
| |
...代わりにプロンプトを開きます。 |
| |
それはHello Worldと表示します。 |
| |
さて、今回はJMPに付属の組み込み関数の一つを使ってみます。スクリプトのインデックスを見てみましょう。 |
| |
...Y'All utils を検索してください。 |
| |
errorModal 関数を見つけてください。使い方については、ここに簡単なドキュメント文字列が付属しています。 |
| |
そしてすでに輸入されているので... |
| |
Y'All utils errorModal |
| ジョン |
そして、私たちはただ「Hello World」と言うことができます。 |
| ジョン |
これを見てみましょう。 |
| |
私たちのリポジトリに... |
| |
…デモ版を公開しました。そしてコードをプッシュしてください。 |
| |
これで、コードがリモート リポジトリにプッシュされ、CICD パイプラインがトリガーされ、あっという間に... |
| |
...数秒で、パイプラインの実行を確認できるはずです... |
| |
…もうすぐです。 |
| |
まだ始まってません。 |
| |
ちょっとずつ慣れてきたかな… |
| |
…焦る。そうか。 |
| |
それで、Y'Allのアップデートを確認すると、確かに新しいアップデートが見つかります。それで終わりですか? |
| |
更新を選択します... |
| |
...アドインが追加され、デモには改善された Hello World が表示されるようになりました。 |
| |
はい、これがユーザーデモの内容だったと思います。 |
| マイケル・アッカーマン |
ありがとう、ヨハン。それでは、画面共有を再開します。よろしければ。 |
| ジョン |
はい。 |
| マイケル・アッカーマン |
このユーザーエクスペリエンスが実現されている裏側で何が起こっているのか、少し詳しく見ていきたいと思います。それでは、Visual Studio Codeでこのコードを見てみましょう。 |
| |
Zipファイルをダウンロードすれば、どこでも見ることができます。少し見やすくするために、Zenモードに切り替えます。それでは始めましょう。 |
| |
これは、Johan がスクリプトをアップロードするたびに実行される GitLab CICD パイプラインです。そこで彼は Git リポジトリにアクセスしました… |
| |
…そして彼はプラスボタンを押してスクリプトをアップロードし、CICDパイプラインを起動しました。これは、サーバーがその状況にどのように反応すべきかを定義する小さなスクリプトです。 |
| |
事前ステップとビルドステップ... |
| |
...Git リポジトリと、Johan の新しいスクリプトを含むその中のすべてのファイルを作業ディレクトリにクローンしました。 |
| |
…ランナーと呼ばれるこの処理モジュールは、そのコードを処理できます。そしてそれをビルドし、ビルドステージを実行して… |
| |
CD(ディレクトリ変更)して、ビルドディレクトリに移動し、Pythonビルドスクリプトを実行します。本当に簡単です。新しいファイルをすべて作業フォルダに複製し、そのフォルダに移動して、Python 3でPythonビルドスクリプトを実行するだけです。 |
| |
それでは、Pythonビルドスクリプトを見てみましょう。Ctrl + Tabキーで移動します。build_yall.pyです。 |
| |
これはかなり長いコードですが、もしこれを見ていて、どのようにコードを読み進めていけばいいのかを知りたい場合は、一番下までスクロールして、このprocess関数まで進んでください。def processと書かれています。 |
| |
これはY'Allをビルドし、ステップバイステップで実行するためのメインコードです。これから、このコードを少し覗いてみましょう。 |
| |
まず最初に、Pythonスクリプトがメニュー階層を構築します。それでは、その中身を見てみましょう。src/scripts以下のフォルダ構造を参照し、ネストされたPython辞書を作成しています。 |
| |
そして、見つかったすべてのJSLファイルを、そのJSLファイルの名前、ツールチップ、ファイルの場所を含む辞書に取り込みます。つまり、基本的にはフォルダごとにネストされた辞書を構築し、それをクロールしていくのです。 |
| |
次に、各JSLファイルのコマンド名をチェックします。これらのファイルを解析し、Johanがスクリプトの先頭に挿入したY'Allメニュー名とY'Allツールチップを探します。 |
| |
JMPのアドインメニューのボタン名とツールチップの内容を定義します。Y'Allをインストールすると、Y'allメニューが表示されます。ボタンの名前と、マウスオーバー時のツールチップの内容を定義します。 |
| |
Y'Allメニュー名やY'Allツールチップのような魔法のコマンドが見つからない場合は、ツールチップのないスクリプト名にフォールバックします。つまり、Johanが示したように、test.jslは単にtestになります。 |
| |
メニュー内のコマンドの辞書はアルファベット順に並べられているので、簡単に見つけることができます。ただし、ヘルプと設定メニューは上部にポップアップ表示され、常にメニューの上部に表示されるようになっています。 |
| |
ヘルプと設定は重要です。そして、その情報はすべてJMPcustファイルに書き込まれます。 |
| |
したがって、.jmpcust ファイルは、本質的には、JMP に対してどのように行うかを定義する一種のマークアップ言語ドキュメントです。 |
| |
メニュー ボタンが何であるか、メニュー自体がどこにあるか、ツール ヒントが何であるか、これらはすべてこの .jmpcust ファイルで定義されます。 |
| |
Ctrl + TabキーでY'Allに移動して、これがどんな感じか見てみましょう。メニューの定義がぎっしり詰まったページです… |
| |
メニューの名前と内容も確認しましょう。ヘルプと設定メニューには、「Y'Allアップデートの確認」や「ベータテストモードのオン/オフ」などが含まれています。 |
| |
したがって、Python スクリプトは、この write jmpcust file 関数を使用してそれを自動的に書き込みます。 |
| |
次に、アドイン定義ファイルを作成します。addin.defとversion.txtです。addin.defは、ちょっと例を挙げて説明しますが… |
| |
JMP がアドインを識別し、バージョン番号と、サポートされている JMP の最小バージョンを見つけるために使用する説明の一部です。 |
| |
12としていますが、これは12より前のバージョンについては心配する必要がないように、私たちの恣意的な選択です。実際に作業を始める場合は、Pythonコードでこの値を変更できます。ご覧のとおり、アドインバージョンもここで定義されています。 |
| |
そして、これを version.txt というファイルに書き込むと、addin.def で見たのと同じ整数が version.txt にも書き込まれることになります。 |
| |
理由は、これはリモートから読み取れる小さなファイルだからです。サーバー上のJMPでHTTP経由で開くことができます。 |
| |
...そして、version.txtファイルのバージョン番号をざっと確認して、現在のバージョンと比較してみましょう。現在インストールされているバージョンがversion.txtと一致しない場合は… |
| |
…つまり、アップデートする必要がある、あるいは少なくともアップデートできるということです。ここで使用するバージョン番号は、UTCタイムゾーンで実行された日時です。 |
| |
そして、これを基本的に 1970 年からの秒数に変換します。つまり、これは日付と時刻の形式に戻すことができる整数です。 |
| |
2つの数値を整数ベースで比較できるので便利です。大きいか小さいかを簡単に確認でき、それを日付に変換することもできます。つまり、JMPにバージョン番号を保存するのに非常に効率的な方法です。 |
| |
ついに。 |
| |
次に、先ほど作成したアドインデプスファイルを使って、カスタム関数スクリプトを作成します。これは少し奇妙で説明が難しいのですが、できるだけ簡潔に説明したいと思います。 |
| |
JMPにはカスタム関数を定義する方法が2つあります。1つはJMPスクリプト言語のfunctionという関数を使う方法で、その機能についてです。ここでは、utils.jslとy'allのimportablesサブディレクトリについて説明します。 |
| |
Function は、他の場所から呼び出したり使用したりできるカスタム関数を定義します。これは名前空間を使って定義できます。つまり、この場合は Y'All utils という名前空間を使用します。 |
| |
関数名は recode if です。引数はこれらの通りで、ここにはドキュメント文字列と関数コードが書かれています。 |
| |
JSLでカスタム関数を記述する2つ目の方法は、新しいカスタム関数 function を使うことです。これは function とは異なります。これはJMP 14で追加されたと思います。 |
| |
新しいカスタム関数は、関数を JMP スクリプト インデックスと JSL IDE に追加して、その関数の操作を非常に簡単にし、ドキュメントのある他の場所で再利用できるようにします。 |
| |
つまり、この関数の利点は、JMP のどのバージョンまで遡って機能するかさえわからないということです... |
| |
...以前はJMPを使っていました。新しいカスタム関数の利点は、より堅牢になり、ドキュメントとJMPスクリプトのインデックスが利用できること、そしてJSL IDEで色付けして表示できることです。 |
| |
コードを書く際のヒントです。新しいカスタム関数は気に入っていますが、JMP 14より前のバージョンをサポートしたいと思っています。そこでビルドスクリプトを… |
| |
...ここでは、基本的にインポート可能なディレクトリを解析し、その関数 function function function に一致する関数定義を探します... |
| |
JSLでdoc stringを使っています。スラッシュとアスタリスクで区切られたdoc stringを解析し、新しいカスタム関数に取り込もうとします。ここで例をご覧ください。 |
| |
私たちはその recode if 関数を取得し、それを Y'All utils 名前空間の recode if と呼ばれる新しいカスタム関数に自動的に書き換えます。 |
| |
プロトタイプ、説明、そしてスクリプトインデックスのカテゴリがあり、そこにすべてが表示されます。つまり、JMP開発者はこれらをすべて自動的に利用できます。つまり、JSLで古い関数を使ってコードを書いても、このJMPスクリプトインデックスを利用できるということです。 |
| |
Y'Allビルドスクリプトを自動的に使用することで、...機能を実現できます。プロセスコードまでスクロールダウンしてください。 |
| |
ここまで書き終えたら、アドインをビルドします。JMPアドインは修正されたZip形式を使用しています。Python 3を使ってZip圧縮し、YALL.jmpaddinに名前を変更すると、CICDランナーが動作している作業ディレクトリに配置できます。 |
| |
したがって、このビルド スクリプトが完了した後のこの CICD パイプラインの最終ステップは、その作業ディレクトリに移動して成果物をアップロードすることです。 |
| |
ビルド アーティファクトは GitLab CICD の概念であり、YALL.jmpaddin と version.txt の 2 つのファイルを取得してサーバーにアップロードし、特定の URL で利用できるようにします。 |
| |
そのため、URL は常に一貫しており、GitLab でこれを実行しているブランチに関連付けられています。つまり、ベータ バージョンの場合とメイン リリース バージョンの場合では同じです。 |
| |
さて、JMP では -- 飛び越えてみます、ハハ!... |
| |
autoUpgrade.jsl へ。ここでアドインの新しいバージョンを確認します。JMP が読み込まれると、Y'All はこの自動アップグレードスクリプトを実行します。 |
| |
GitLabリポジトリで新しいバージョンを検索します。ここで、ベータモードかメインモードかに関係なく、ベータフラグが読み込まれていることがわかります。 |
| |
そして、そのモードの特定のチャンネルを確認します。つまり、… |
| |
選択したチャンネルに基づいて、特定のURLからアクセスします。ベータモードの場合はベータチャンネル、メインモードの場合はメインチャンネルを参照します。そして、YALL.jmpaddinファイルとversion.txtを探します。 |
| マイケル・アッカーマン |
では、そのバージョン番号とインストール済みのバージョン番号を比較し、異なる場合はユーザーにアップデートを要求します。ヨハンの画面に表示されたダイアログボックスをポップアップ表示します。 |
| マイケル・アッカーマン |
…アップデートを希望するかどうかを尋ね、バージョン番号を通知します。そして、アップデートを希望するかしないかを選択できます。 |
| |
それで。 |
| |
実際にはそれだけです。すべてはユーザーのために、舞台裏で行われます。GitLab UIのプラスボタンを使ってファイルをアップロードし、スクリプトをアップロードして新しいビルドを作成します。 |
| |
...JMP アドイン、つまり Y'All JMP アドインを作成し、同じリポジトリに接続している他のユーザーが利用できるようにします。 |
| |
これらはすべてバックグラウンドで実行されます。ユーザーにとっては、JMPのホットスポットからJMPスクリプトを保存し、GitLabリポジトリにアップロードするのと同じくらい簡単です。 |
| |
そこで、Y'All の特徴をまとめてみたいと思います。 |
| |
スクリプトの投稿は非常に簡単です。ご覧のとおり、ファイルをアップロードしたり、JSLスクリプトをアップロードして公開したりするための便利なユーザーインターフェースが備わっています。 |
| |
さらに、自動バージョン管理とコードアーカイブも備わっています。これらはすべてNovozymesのサーバーに保存されたGitLabの中央リポジトリを通じて行われるため、すべてが追跡・保存されます。 |
| |
…永久に。自動更新により、開発者はスクリプトをユーザーに簡単にリリースでき、常に最新バージョンを利用できます。 |
| |
…適切に動作し、品質管理されたスクリプトです。ベータチャンネルとリリースチャンネルがあります。 |
| |
ベータチャンネルは基本的に即座に構築され、新しいスクリプトが皆さんに届いてから数秒以内に利用可能になり、頻繁に更新されます。一方、リリースチャンネルは、よりゆっくりとしたペースでリリースされる仕組みになります。その仕組みについて少し触れておきたいと思います。 |
| |
GitLabリポジトリのブランチ構造はこちらです。多くのアップデートを含むベータブランチ、リリースブランチ、そしてメインブランチがあります。Novozymesで私たちが行っていることは――これは完全にユーザーの選択次第です―― |
| マイケル・アッカーマン |
…リリースしたい状態になったら、このベータブランチを取得します。ベータとリリース間のマージリクエストを開き、リリースブランチに移動します。これにより、スクリーンリリースブランチは実質的に凍結されます… |
| マイケル・アッカーマン |
...コード バージョンでこれを実行し、このリリース ブランチでコードをロックします。 |
| |
ベータ版はまだ変更される可能性があります。ベータ版ではスクリプトの追加や変更が引き続き可能です。しかし、リリースは凍結されています。私たちは品質チェックを行い、準備が整い、状態に満足したら… |
| |
...これをメインにリリースしてそこにマージすると、Y'All のメイン ブランチ ユーザーが利用できるようになります。 |
| |
発見可能なコードがあります。すべてが中央リポジトリ上のファイル構造で利用可能です。開発者はスクリプトを閲覧して… |
| |
…類似のものを見つけて、それを基に構築したり改善したりできます。また、スクリプトインデックスに自動的に追加され、開発者が利用できるユーティリティ関数も用意されているため、開発者はコードブロックを再利用して、例えば… |
| |
...データベースクエリなどもデモとして用意しています。Y'Allをご覧いただければ... |
| |
...Y'AllがインストールされたJMPスクリプトインデックスの名前空間。PostgreSQLデータベースクエリとPostgreSQLデータベースツールもいくつか含まれており、使用方法のデモとして組み込んでいます。 |
| |
これらすべては、ユーザーが作成した JSL スクリプトを JMP で開始し、Y'All ユーザー ベースの他のユーザーと共有することで実行されます。 |
| |
GitLabにアクセスし、ユーザーインターフェースで、Y'Allで必要なメニューの場所と一致するサブディレクトリにアップロードします。つまり、デモやテストにアップロードしたい場合は… |
| |
…それをsrc/scripts/demos/demosサブディレクトリに配置すると、自動ビルドパイプラインが起動し、Pythonビルドスクリプトが起動して構造を解析し、アドオンをビルドします。 |
| |
…アドインをGitLabサーバーに再アップロードします。するとJMPが新しいアップデートを見つけ、自動的にダウンロードしてJMP内のY'Allアドインを更新するよう促します。そして、そのスクリプトはベータチャネルのユーザーにわずか数秒で利用可能になります。 |
| |
Y'Allにご興味をお持ちいただけましたら幸いです。ご自身または組織でY'Allのご利用にご興味をお持ちいただけましたら幸いです。そこで、Y'Allのご利用開始に役立つヒントをいくつかご紹介します。 |
| |
JMPユーザーコミュニティでこのビデオをご覧になっている場合、JMPユーザーコミュニティに投稿されているZipファイル(同じページにあるはずです)には、開始するために必要なすべての要素が含まれています。一部は修正が必要ですが、いくつかは実際に試していただけるデモコードです。 |
| |
ぜひダウンロードしてご覧ください。ZIPファイル内のPythonビルドスクリプトは、ネイティブのPython 3ライブラリを使って構築されています。ビルドシステムにはPython以外は何もインストールされていません。標準的なPython 3インストール環境であれば動作するはずです。 |
| |
GitLabでCICD(継続的インテグレーションとデプロイメント)向けに提供している中央リポジトリストレージと自動化機能は、他のプロバイダーでも利用可能です。GitLab、GitHub、Azure、AWSはすべて同様の実装を備えています。 |
| |
膨大なオプションのエコシステムが存在するため、実装の詳細は組織ごとに異なります。 |
| |
残念ながら、CICDパイプラインファイルgitlab-ci.ymlをご自身のシステムで自動実行したい場合は、修正が必要になります。Novozymes社の社員でない限り、現状のままでは動作しません。 |
| |
内部ベータ データベースを反映したユーティリティ関数内の接続文字列はすべて、ODBC の my underscore 接続アンダースコア文字列に置き換えられました。 |
| |
これらの関数のいずれかを使用する場合は、作業ディレクトリ内のコードにアクセスし、データベースを反映するように文字列を変更する必要があります。 |
| |
改めて、Y'Allにご期待いただければ幸いです。Y'Allにご興味を持っていただければ幸いです。ご意見、ご質問、ご感想などございましたら、私またはヨハンまでお気軽にご連絡ください。 |
| |
…彼らと一緒に。このコードを活用して改良したり、このツールキットを活用して面白い使い方をしたりしていただければ、どんな貢献でも大歓迎です。ありがとうございます。 |
| クリスティ・スペイン |
はい、よかったです。 |
| マイケル・アッカーマン |
時間。 |
| クリスティ・スペイン |
合理的で完璧、そうそう。 |
| マイケル・アッカーマン |
そうですよね。 |
| |
ヨハンがJMPは望んでいないと言ったことは問題ではありません。 |
| クリスティ・スペイン |
あなたが知っている。 |
| マイケル・アッカーマン |
おそらくほとんどの人は感染しないのではないかと思います。 |
| クリスティ・スペイン |
新しい言葉としては気に入っています。 |
| ジョン |
そのため、それを使用しないように言われたため、名前を変更する必要がありましたが、私が持っていたバージョンを削除していなかったため、困惑しました。 |
| |
以前にインストールされました。 |
| |
それで、自分がすでにベータ版を使っていたことに気づいたとき、ちょっと戸惑ってしまいました。 |
| |
とにかく。 |
| クリスティ・スペイン |
はい、それはいいと思います。でも、とても興味深くて素晴らしかったです。皆さんもこれを見て喜ぶと思いますので、ご参加くださり本当に感謝しています。 |
| |
言ったように、ジェフが編集するためのビデオをアップロードするつもりですが、それがいつ完了するかはわかりません。 |
| |
いずれにせよ、皆さんは 10 月にそのすべてを見ることになるでしょうが、何か起こったら必ずお知らせします。 |
| |
改めてお礼申し上げます。 |
| ジョン |
通常の JMP に関する新しい種類のものが登場しました。 |
| マイケル・アッカーマン |
あなたがどこか別の場所にいると言っていることについては、ちょっと。 |
| |
うん。 |
| ジョン |
皆さんのディレクトリ。 |
| クリスティ・スペイン |
はい、本当にありがとうございます。わかっています。 |
| |
病気に対して多大な努力をしてくれて、本当に感謝しています。 |
| マイケル・アッカーマン |
喜んで。 |
| |
ありがとう。 |
| マイケル・アッカーマン |
次のアップの後は素早く動きます。 |
| クリスティ・スペイン |
はい、もちろんお二人にお会いできて嬉しかったです。 |
| |
次回に期待します。 |
| |
少なくともマイケルとは直接会って、ヨハンにも会ってみたいですが。 |
| |
うん。 |
| マイケル・アッカーマン |
彼が、特にサミットなどでプレゼンテーションをしたり、過去に実際に会ったりするなら、ローリーではすべてのものがオープンしている週なので、丸一週間のように活動できるのです。 |
| |
計算会議。 |
| |
地元の従業員の集団に会います。 |
| ジョン |
そうすると、旅費の予算について議論する方が簡単かもしれませんね。 |
| クリスティ・スペイン |
2つで1つは権利だ。 |
| |
うん。 |
| ジョン |
よし。 |
| クリスティ・スペイン |
さて、皆さん、残りの月曜日を楽しく過ごしてください。素晴らしい一週間になりますように。ありがとう。 |
| |
あなたも、またすぐにお話できるでしょう。 |
| ジョン |
さよなら。 |
| |
さよなら。 |