[備忘録] MacBook(M1)にclaspを入れてみた

前回はTypeScript環境を構築しました。
totin-tech.hatenablog.com

今回はclaspを入れていきたいと思います。
※参考:GAS用のCLIツール clasp を使ってGASをローカルで開発して実行するの巻。 - Qiita

①GASのAPIの設定をONにする
ここからGoogle Apps Script APIをオンにする。
f:id:totin_3:20210520165511p:plain

②claspをインストールする
「npm install -g @google/clasp」と入力して実行。すると12個の高い脆弱性が見つかったとの文章が…
しかし、全ての問題に対処するには「npm audit fix」を実行してねと表示されているので実行したところ、、、
f:id:totin_3:20210520175337p:plain

今度は「npm i --package-lock-only」を実行してロックファイルを作成してねと言われるので、そのようにすると脆弱性は0になったと表示されました。
f:id:totin_3:20210520175636p:plain

しかし再度「npm install -g @google/clasp」を試したところ、12個の脆弱性が健在だったので、再度「npm audit fix」を実行してから「npm install -g @google/clasp」を実行しましたが、何も変わらず同じことの繰り返し…
よく分からないので、とりあえず脆弱性のことは一旦置いておいて、、、

③claspにログインする
「clasp login」と実行して、Googleアカウントにアクセスできるようにする。実行すると、ブラウザが立ち上がるのでアカウントを選んでアクセスを許可する。許可すると「Logged in! You may close this page. 」と表示される。 f:id:totin_3:20210527165652p:plain
f:id:totin_3:20210527165704p:plain:w300
f:id:totin_3:20210527165706p:plain:w300

※今回はclaspをインストールするところまで。というのも、やっぱり脆弱性が気になるのでdockerを入れて動かしてみようかなと。
次回はdockerインストール編です。

[備忘録] MacBook(M1)にTypeScriptの実行環境を作ってみた

ことの発端はクラメソさんの下記記事。自分でもやってみよ〜と思ったら、ソースコードが「.gs」ではなくて「.ts」だったので(記事内にも、開発言語:Google Apps Script(TypeScript)との記載あり)、TypeScriptとはなんぞやと思い調べてみました。

くらめその情シス:Slackから取得した情報で情シス業務を数値化してみた | DevelopersIO

 

・TypeScriptとは

TypeScriptは、JavaScriptを拡張して作られたプログラミング言語Javaよりも短く分かりやすいコードが書ける)。

TypeScriptで書かれたコードをコンパイルするとJavaScriptのコードに変換されるため、JavaScriptファイルが実行できる環境ならすぐに使えて、JavaScriptライブラリもTypeScriptから使用できるなど、互換性の高さが特徴。

 

Javaの環境は入れてないしJavaは触ったことがあるので、初めてのTypeScriptを触ってみようと、TypeScriptの環境を入れてみることにしました!

他にもGASでコードを共有できる「google/clasp」というのがTypeScriptのサポートを開始したとのことも理由の一つです。

※2021.5.21現在:もしかしたらclasp、M1にはまだ対応されていないかも?インストールしようとしたら脆弱性のメッセージが消えなかったので、claspインストールはちょっと保留中

 

・claspとは

Googleドライブ上のGASプロジェクトを操作できるCLIツール(CLI(コマンドインターフェース):文字列で操作するコマンドプロンプトとか(コマンドプロンプトWindows専用CLIツール))。以前はWebエディタ上でしかコードを書けなかったのが、自分の使い慣れたエディタ上で書けるようになった。

SVNGithubみたいにソース管理ができるため、複数人での開発もしやすい。

 

それではTypeScriptを使えるように環境構築していきましょう!

TypeScriptをインストールするためにはnpmが必要。

TypeScriptファイルはJavaScriptに変換された上で実行されるため、まずはJavaScriptが実行できる環境を整える。今回はJavaScriptをデスクトップで使用できる「Node.js」というプラットフォームを使用。Node.jsをインストールすると、パッケージ管理ツールのnpm(Node Package Manager)も自動的にインストールされる。

参考:TypeScriptを入門者向けに解説!JavaScriptとの違い…|Udemy メディア

 

1. 「homebrew」をインストール

・homebrewとは

Macのパッケージ管理ツール。何かをインストールしようとした際の、「ファイルをDLして、それを実行して、他にも必要なものをインストールして…」等の一連の作業をコマンド1行で一発で自動的に行ってくれる。

※パッケージ:実行ファイルや設定ファイル、ライブラリ等を一つのファイルとしてまとめているもの。

 

私のMacはM1チップなので、下記M1用のHomebrewをインストールします。

 ※PC情報

   OS:macOS Big Sur

   Ver. 11.3.1

   メモリ:8GB

インストールコマンド掲載サイト:The Missing Package Manager for macOS (or Linux) — Homebrew


①ターミナルを開いて、赤枠内の「/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"」をコピペしてエンター。

f:id:totin_3:20210518135508p:plain

 

PWを求められるので、入力してエンターすると「This script will install:」とインストールが始まる。途中Press RETURN to continue or any other key to abort」と表示されるので、エンターをクリックすると処理が続く。

f:id:totin_3:20210518145434p:plain

③途中Warningが出るが、インストールは完了する。

その後パスを追加しないといけないので、「echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/ユーザー名/.zprofile」を入力して追加する。

f:id:totin_3:20210518153022p:plain

 

④続いてeval "$(/opt/homebrew/bin/brew shellenv)"」と入力して実行すると、無事brew help」brew --version」も使えることが確認できる(「--version」は「-v」でも可)。

f:id:totin_3:20210518185359p:plain

f:id:totin_3:20210520131053p:plain

 

※余談※

最初、④の「eval "$(/opt/homebrew/bin/brew shellenv)"」をすっかり見逃しており、③の「echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/ユーザー名/.zprofile」実行後すぐにbrew help」を入力して実行してしまい、そんなコマンドないよとエラーになってしまいました。

うまくパスが追加できなかったのかと思い、lsコマンドで「.zprofile」の場所を調べたら、ちゃんと「echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/ユーザー名/.zprofile」で指定した通り/Users/ユーザー名/.zprofile」にあるし、更にcatコマンドで「.zprofile」の中身も確認してみましたがちゃんと「eval "$(/opt/homebrew/bin/brew shellenv)"」って書いてありました…

f:id:totin_3:20210518182257p:plain

色々調べた結果、、、

・zprofileとは

ログインシェルの場合に1度だけ読み込まれる。

 参考:zshの設定ファイルの読み込み順序と使い方Tipsまとめ - Qiita

・ログインシェルとは

ログインして最初に動くシェルのこと。

参考:https://wa3.i-3-i.info/word11274.html

 

今までの一連の処理は、一番初めに立ち上げたターミナル上で行っていたので、これがログインシェルということになり、もう一つターミナルを立ち上げた先で「brew help」を実行すると、無事「brew help」も「brew --version」も使えるようになっていました!

※「Command + N」で新規ターミナル起動可

かなり道草食いましたが、一つ勉強になりました^^;

 

2. Node.jsをインストールする

①nodebrewをインストール。brew install nodebrew」を入力して実行。

 ※現在の最新Ver.はこちら→nodebrew — Homebrew Formulae

f:id:totin_3:20210518215412p:plain

※Ver.を確認したい場合は「nodebrew --version」を入力して実行(「--version」は「-v」でも可)。

f:id:totin_3:20210518220113p:plain

 

3. Node.jsをインストール

①nodebrewでインストールする。

今回の場合、個人でお試し開発したいだけなので安定版をインストールするため、nodebrew install-binary stable」を入力して実行、、、ところが…エラーになってしまいました。「nodebrew setup」を実行してから、再度行うと無事インストール完了

※参考:MacにNode.jsをインストール - Qiita

f:id:totin_3:20210518224442p:plain

 

※余談※

「stable」で安定版をインストールしたはずですが、インストールされたVer.は「v16.1.0」となっています。下記サイトでは、最新版が「16.1.0」で、推奨版(安定版)が「14.17.0」となっているのですが…

※参考:Node.js

f:id:totin_3:20210518230228p:plain


念の為、「14.17.0」もインストールしておこう(インストールしたVer.は切り替え可能)と思い、「nodebrew install v14.17.0」を入力して実行してみましたが、エラーになりました。下記色々試してみましたがダメでした…

・インストール可能なVer.一覧表から「v14.17.0」をコピペして使用

 ※「nodebrew ls-remote」で一覧表示可
・入力コマンドを変えてみた(「nodebrew install v14.17.0」、「nodebrew install-binary v14.17.0」、「v14.17.0」の「v」無し)

・「curl -L git.io/nodebrew | perl - setup」でnodebrewを再インストール

 ※既にnodebrewはVer.1.1.0(最新)

・「nodebrew selfupdate」でnodebrewのVer.をアップデート

 ※既にHomebrewはVer.3.1.7(最新)

macOS Catalina 10.15.7では問題なくインストール可

・他のVer.(v16.0.1の1つ前のv16.0.0はインストール可、v14.17.0の1つ前のv14.16.1は不可)

f:id:totin_3:20210518233657p:plain

 

ちなみに、CatalinaのMacでは、wgetコマンドでnodebrewをインストールしていたので、「wget」と「curl」の違いかなとも思い、「brew install wget」でインストール後再度「nodebrew install v14.17.0」をしてもダメでした。

※参考:Macでwgetコマンド を使ってみるメモ - Qiita

 

そもそも、「Can not fetch: https://nodejs.org/dist/v14.17.0/node-v14.17.0-darwin-arm64.tar.gz」で表示されているURLは有効なのかcurlコマンドでヘッダ情報「curl -I "https://nodejs.org/dist/v14.17.0/node-v14.17.0-darwin-arm64.tar.gz"

」で調べたところ、、、404エラー(Not found)になっていました^^;

今更ながら「nodejs m1 support」で調べてみると、M1はv16.0.0から対応されたようですね。もっと早くに調べていればよかったです…またもや道草…

※参考:Apple M1サポートのNode.js v16.0.0がリリース | TECH+

f:id:totin_3:20210519005631p:plain

 

②nodeを有効化する。

「①」の段階では、「v16.1.0」がインストールされたけど「current: none」になっていて有効化されていないので、「nodebrew use v16.1.0」で、インストールしたVer.を有効化する。

f:id:totin_3:20210519182650p:plain

 

③最後に、echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zprofile

」で環境パスを通して、念の為catコマンドで.zprofileの中に追記されていることを確認して、ターミナルを立ち上げ直して「node -v」を実行して有効化した「v16.1.0」が表示されれば成功。

f:id:totin_3:20210519183736p:plain

f:id:totin_3:20210519184338p:plain


4. Typescriptをインストール

「npm install -g typescript」を入力して実行する。「新しいnpm Ver. 7.13.0が使えるようになった」とのアナウンスとインストールコマンドが表示されましたが、肝心のTypescriptについての説明が何もなかったので、tsc -v」でTypescriptのVer.を確認すると無事「Version 4.2.4」がインストールされたようです。

ちなみに、私のNode.jsはVer.16.1.0なので、npmのVer.は7.11.2のままにしておきました(npm help nmpコマンドで、現在のnpmのVer.確認可)。

※参考:リリース一覧 | Node.js

f:id:totin_3:20210519193535p:plain


※Typescriptが動かせるかどうか、テスト(「Hello World」を表示)する
①適当に作業用フォルダを作成し、tsc --init」を実行してTypeScriptファイルをJavaScriptファイルに変換する際の設定書(tsconfig.json)を作成

 

f:id:totin_3:20210520122906p:plain

 

②フォルダ内に下記のような tsファイルを作成。

f:id:totin_3:20210520120736p:plain

 

tscを実行して、TypeScriptファイル→JavaScriptファイルにコンパイルすると、jsファイルが生成される。その後、nodeコマンドで先程生成したjsファイルを実行すると、無事Hello World!」が表示されました。

f:id:totin_3:20210520125414p:plain

 


・おわり

ここまで長い道のりでした。。。今回はこれにて終了です。

[備忘録] SlackのメッセージをTrelloのカードに追加する方法

前回Slackのワークフローを使用してリクエストフォーマットを作成したので、それをTrelloに自動的にカード追加できるようにしたいです。

 

・理想

Slackでこのように投稿したら、、、

f:id:totin_3:20210511191235p:plain

Trelloの「情シスQ&A」の「PC -Repair」に、こんな感じでカードが作成されて欲しい(緊急度に応じて、ラベルも色分けできると良いなあ)。

f:id:totin_3:20210511191252p:plain

 

しかし残念ながら、Slackのワークフローに追加できるアプリはこれらのみ。Trelloがありませんね…

f:id:totin_3:20210511170135p:plainf:id:totin_3:20210511170155p:plain

 

それならば…Zapierをかまして、Slack→Zapier→Trelloに連携できるか試してみました。

Zapierにログイン後、画面左上の「+」にカーソルを合わせると、「MAKE A ZAP」に変わるのでクリック。

f:id:totin_3:20210511172049p:plain

 

Slack→Trelloなので、「1. Trigger」は「App Event」の「Slack」を選択。

f:id:totin_3:20210511172444p:plain

 

Triggerのその他項目は、下記のように設定。

・Choose app & event - Trigger Event:New Message Posted to Channel

・Choose account - Slack account:自分のアカウント

・Set up trigger - Channel:help-情シス

         - Trigger For Bot Messages?:Yes

・Test triger:テストとして表示させたいメッセージを選択

 

「2. Action」は「Trello」を選択(検索すると出てきます)。

その他項目は下記のように設定(設定項目のみ記載)。

・Choose app & event - Action Event:Create Card

・Choose account - Trello account:自分のアカウント

・Set up action - Board:情シスQ&A

        - List:PC -Repair

        - Name:Thread Ts Time, Text(カードのタイトル部分に表示される)

        - Description:Text(カードの説明部分に表示される)

        - Card Position:Top(リストの一番上にスタックしていく)

        - URL Attachements:Permalink

        (カードの説明の下に対象のSlackメッセージのURLが表示される)

 

実際にSlackから投稿してみると、下記のようになりました。

f:id:totin_3:20210511191557p:plainf:id:totin_3:20210512142501p:plain

 

Zapierの「Set up action」の設定時から気付いてはいたのですが、、、時間がズレてますね。
実際のメッセージ投稿日時は「2021.5.11 19:08」ですが、「2021-5-11T10:08:16Z」となっています。

それとメッセージ投稿者が「表示名」ではなく、「ユーザー名」になっていました。Slackのアカウント設定で変更できるので、ユーザー名と表示名は揃えておいた方が良さそうです。

そして「New Message Posted to Channel」としたばかりに、スレッドに自動投稿された返信メッセージまで登録されています。これだと、その後スレッドでやりとりした内容も新規カードとして追加されてしまいます。

 

それならば、更にスプレッドシートを間にかまして、下記のように試してみました。

f:id:totin_3:20210512173049p:plain

こんな感じでスプレッドシートにシートを作って、、、

f:id:totin_3:20210512153703p:plain

f:id:totin_3:20210512153711p:plain

 

GASで、B列にデータが入力されたらA列に日時が入るように作って、このままだと手動でセルにデータを入力しても日時が入らないのでトリガーを「編集時」に設定して、、、

f:id:totin_3:20210514111942p:plain

 

ZapierでTriggerを「1. New Spreadsheet Row in Google Sheets」、Actionを「Create Card in Trello」と適宜設定して、、、

 

Slackから投稿するとなぜか依頼日が入っておらず(下図16行目は手動で入力したもの。手動入力だと日時が自動で入りましたが、17行目のSlackから入力したものに関しては日時が入りませんでした)、、、

※上記不具合は、トリガーを「編集時」→「変更時」に修正すると手動入力でもSlackから自動で入力されても無事日時が自動入力されました。セルにデータが新規で入るから「編集時」かと思っていたのですが、行が追加されるってことで「変更時」なのかもしれません。

参考?:https://developers.google.com/apps-script/guides/triggers/events

f:id:totin_3:20210512162513p:plain

f:id:totin_3:20210512162518p:plain

 

Trelloにはこんな感じで登録されました(PC故障時、Zapierの「Set up action」で「Custom Labels」に緊急度を設定したのですが、カードを開かないと見えないんですね。見えるのは色を設定した時のみのようです)。

f:id:totin_3:20210512163241p:plain

f:id:totin_3:20210512163727p:plainf:id:totin_3:20210512164040p:plain

 

ちなみに、Slackでリクエスト送信後、スプレッドシートへはすぐに登録されたのですが、Trelloへの反映は1分くらいかかりました。

[備忘録] Slackのワークフローでリクエストフォーマットを作成してみた

Slackの有料版に、「ワークフロー」と言う機能があります。

有料版か…と思いつつ、きっとそこそこ社員数が多い会社では有料版を使用しているところが多いのでは?と思い、試しに有料版に切り替えて実際に触ってみました🤓

 

・ワークフローを作成する

 1. 有料版Slackで、画面左上のワークスペース名(①)をクリックして、「ツール(②)」の「ワークフロービルダー(③)」をクリック。

f:id:totin_3:20210507170946p:plain

 

2. ワークフロービルダーの画面が立ち上がります。既にいくつかテンプレートが用意されていますが、今回はPC修理依頼のフォーマットを作成したいので、参考にできそうなテンプレートがありません。

理想としては、下記のようなフォーマットにしたいです🧚🏻

・PCの種類:Mac/Win/Other から選択(必須)

・不良内容:文章を入力してもらう(必須)

・いつから:カレンダーで入力してもらう/数値を入力してもらう(必須)

・原因:文章を入力してもらう(必須)

・自分で試したこと:文章を入力してもらう(任意)

・備考:文章を入力してもらう(任意)

f:id:totin_3:20210507171246p:plain

 

ネットでワークフローを検索すると、出張申請のフォーマットのテンプレートが見つかったので、こちらを参考にしたいと思います。

 

3. 画面左の「ダウンロード例」をクリックしてテンプレートをDL。「travel_exception_request.json」と言うファイルがDLされました。

※画面は日本語に翻訳済

f:id:totin_3:20210507172642p:plain

 

4. ワークフロービルダーのテンプレート画面に戻って、画面右上の「インポート」をクリック。「travel_exception_request.json」を選択して「開く」をクリック。

f:id:totin_3:20210507173527p:plain

 

5. 「ワークフローに名前を付けます」とあるので任意の名前を付ける。

※名前を付けずにTravel Exception Requestのままで次に進んでも、後で変更可能

f:id:totin_3:20210507181149p:plain

 

6. それぞれの項目を「編集」ボタンをクリックして編集していく。最後に「公開する」ボタンをクリックして完成!

f:id:totin_3:20210507183832p:plain

 

 

ショートカットを作成すると、対象チャンネル上のショートカットボタン(雷マーク)が活性化するのでクリックすると、先程作成したショートカットが選択可能になっていました!

f:id:totin_3:20210507184455p:plain

 

ちなみにショートカットで依頼するとこんな感じ。自動で返信もされるので良いですね!

f:id:totin_3:20210507184942p:plain

 

ただ、これだと自動でTrelloには登録されないので、、、(ワークフロービルダーで、「ステップを追加」とやると、アプリと連携させることができるようですが、対象アプリの中にTrelloはありませんでした)

次回はTrelloに連携できる方法を調べて別記事としてUPしたいと思います。

[備忘録] SlackにTrelloを連携させてみた

Slackを利用されている会社さんって結構多いと思うのですが、

今回は下記のような業務を想定してSlackとTrelloを連携させてみました。

・情シス宛に社員が質問/依頼したい場合、Slackでメッセージを送る

・質問/依頼メッセージをTrelloに登録してタスク管理する

 

・SlackにTrelloをインストールする

1. Slackの画面左下の「アプリを追加する」から、「Trello」を検索

f:id:totin_3:20210430092952p:plain

 

2. Web上でTrelloが立ち上がるので、左側のアイコン下の「Slackに追加」をクリック

f:id:totin_3:20210430093124p:plain

 

3. 別画面に遷移するので、「Slackに追加する」をクリック

f:id:totin_3:20210430093230p:plain

 

4. 連携させたいワークスペースを選択(今回は2つあるうちの「test」を追加)

f:id:totin_3:20210430103157p:plain

 

5. Trelloのワークスペース画面が立ち上がるので、「Add to Slack」をクリック

f:id:totin_3:20210430103324p:plain

 

6. 「許可する」をクリック

f:id:totin_3:20210430103737p:plain

 

7. Slack画面の左下の「App」に無事追加されました🎉

f:id:totin_3:20210430102442p:plain

 

※アンインストール方法

1. Slack画面左下の「App」から対象アプリをクリック(①)し、アプリの詳細画面を開き(②)、その他を開いて(③)、設定をクリック(④)

f:id:totin_3:20210430105346p:plain

 

2. ブラウザでTrelloのページに遷移するので、画面一番下の「アプリを削除する」から削除可能

f:id:totin_3:20210430111430p:plain

 

・情シス宛に社員が質問/依頼する際の専用チャンネルを作成してTrelloを連携させる

1. チャンネルを作成し(今回は「help-情シス」)、「/invite @trello」と送信

f:id:totin_3:20210430102558p:plain

 

※連携されたかは、該当チャンネルの詳細画面(①)の「その他(②)」から、「xxx内のアプリを表示する(③)」で確認可能

f:id:totin_3:20210430145035p:plain

 

2. Trelloのワークスペースボードをリンクさせる(今回は「情シスQ&A」と言うワークスペースボードをリンクさせます。※testと言うワークスペース内には、2つのワークスペースボード(「xxx」と「情シスQ&A」)があり、更に「情シスQ&A」内には「PC-Repair」と「Add Account」と言うリストがあります)

「情シスQ&A」のURLをコピーし、「/trello link https://trello.com/xxxxxxxx」と送信。

f:id:totin_3:20210507133235p:plain

f:id:totin_3:20210507142142p:plain
 

3. 「Join」をクリックすると無事リンク完了🎉

※今回は「PC-Repair」のリストにリンクさせましたが、もし別のをデフォルトにしたい場合は「Join」左横の「Change Default List」より選択可能。

f:id:totin_3:20210507141620p:plain

※ちなみにワークスペースボード上に何もリストがない場合(今回の場合「情シスQ&A」内に「PC-Repair」も「Add Account」も何もない場合)、「カードを作成するには少なくとも1つのリストを作成する必要があります」とのメッセージが表示されます。

Trello上でリストを作成後、「/trello set-list 番号」とメッセージを送信すると、ボード内のリストがリンクされます(番号は、ボード内左側から1、2、・・・と割り当てられているようです)。私の場合、「/trello set-list 1」とやると「PC-Repair」が、「/trello set-list 2」とやると「Add Account」がリンクされます。

f:id:totin_3:20210507142907p:plain


・専用チャンネルにメッセージを送って自動でTrelloにカードとして登録する

Trelloとリンクできたので、「/trello add xxxx」でカード追加できるようになりました!

f:id:totin_3:20210507152132p:plain

 

が、カードを追加してもただのリストの名前でしかないので、情シス側がもう少し見やすいように、そしてリクエストする側もフォーマットに沿ってリクエストしやすい感じにしたいので、良い方法がないか検討してみます 🤔

また、Slackチャンネル1つにつき1つのリストとリンクするので、依頼内容に寄ってリストを分けられると良いかもとか思ったり。。。

※良い方法思いついたら、別記事としてUPします!

f:id:totin_3:20210507152342p:plain



 

[備忘録] jamf NOW を触ってみた(登録デバイス内のアプリ更新編)

・登録したデバイス内のアプリを更新する方法

私の場合、登録したデバイスにはデフォルトの設計書を割り当てているので、「Blueprint」画面の「Default」の「Apps」画面に自動更新したいアプリを登録することになります。その前に、「App」画面上で対象アプリを事前に登録しておく必要があるようです。

今回は、ちょうど私のiPhone上で「Pages」が Ver. 11.0 に更新可能だったので、「Pages」を自動更新したいと思います!

 

1. 「App」画面で「Appを追加」をクリック。

f:id:totin_3:20210330150120p:plain

初回のみ、「App Store以上のことを行いたいですか?」とのポップアップが表示されます。Jamf NOW Plus にアップグレードすれば、App Store に登録されていないアプリ(組織独自で開発した業務アプリとか、Google Chromeとかパッケージイメージ形式で配布されているアプリ等)も追加することができるようです。

※詳しくはこちら→ Jamf Nowのプランと価格

f:id:totin_3:20210330150143p:plain

 

2. 検索バーに「Pages」と入力して「検索」をクリック。

f:id:totin_3:20210330150207p:plain

 

3. 検索結果内の「Pages」の「My Appsへ追加」をクリックするとポップアップが表示されるので、「追加」をクリック。

f:id:totin_3:20210330150245p:plain

 

4. 「Blueprint」画面の該当設計書(Default)の「Apps」画面で、「Appを追加」をクリック。

f:id:totin_3:20210330150319p:plain

 

5. ステップ3で追加した「Pages」が表示されているので、選択して「Appを追加」をクリック。

f:id:totin_3:20210330150350p:plain

ちなみに、新規で追加できるアプリが何もない状態だと、使用可能なアプリがないのでAppsページからアプリを追加してくださいとのメッセージが表示されます。

f:id:totin_3:20210330150442p:plain

 

6. 「デバイス」画面で、該当デバイス(私のiPhone)の「iPad および iPhone の App」上で、該当アプリ(Pages)の横の「・・・」マークから「⇄マネージドへ変換」をクリックして「インストール済、マネージド」に変更します。該当デバイスに「"mdm-na1.jamfcloud.com"にApp "Pages" の管理を許可しますか?Appデータは管理対象になります。」とのメッセージが表示されるので、許可します。

※キャプチャは「Keynote」を例にしています。一旦マネージドに変更すると非マネージドには戻せないようです。

f:id:totin_3:20210330163125p:plain

 

7 (iPhone(任意のデバイス)のみアップデートする場合). 

「インストール済、マネージド」になった「Pages」の横の「・・・」マークから「デバイス上でアップデート」をクリック。「xxx の iPhone の Pages をアップデートすることになります。」というポップアップが表示されるので、「アップデート」をクリック。

無事、iPhone上で「Pages」が読み込み中になってバージョンがアップデートされました!

iPhone上でアップデートされる際は、iPhone画面上に特にメッセージ等は表示されず、しれっと読み込みが始まりました。iPadでも試したところ、挙動は同じでした。

アップデートが完了しても、iPhoneの「App Store」上で「利用可能なアップデート」項目内には「Pages」が残ったままでした(再起動しても変わらず)。ただし、「設定」画面上でアプリのバージョンを確認すると更新されていることが確認できたし、更新後のアプリのアイコンの名前には青い丸が付いていました。iPadで試したところ、iPadの「App Store」上では、「最近のアップデート」に移動していました。iPhoneのバージョンはiOS 14.4.2(最新)、iPadのバージョンはiPadOS 14.4.1(1つ前)です。

その後iPhoneの「App Store」上で「アップデート」したところ、「Pages」がインストール中になってアップデートが始まりました。もちろん、アップデート前後でバージョンに変化はありませんでした(既にアップデートされているので)。

※既にアップデートしたアプリを再度jamf画面の「デバイス上でアップデート」しても、jamf画面上ではアップデートしようとしますがそのうち止まります(デバイス上でも何も起きません)。

f:id:totin_3:20210330171510p:plain

 

7' (他のデバイスもまとめてアップデートする場合).

同じ設計書を割り当てているデバイス全てに適応させたい場合は、「Blueprint」画面の該当設計書の「Apps」画面で、アップデートしたいアプリの横の「・・・」マークから「アップデート」をクリック。「Blueprint によりすべてのデバイスの Keynote がアップデートされます」とのポップアップが表示されるので、「アップデート」をクリック。

こちらも無事、複数デバイスで対象アプリのアップデートが確認できました!

※ステップ6で、マネージドに変換せず「インストール済、非マネージド」の状態のままでステップ7'を実行しても、アプリはアップデートされませんでした。

※既にアップデートしたアプリを再度「アップデート」しても、「すべてのデバイスの xxx が Blueprint によりアップデートされます」とのメッセージが表示されますが、各デバイス上では何も起きません。

f:id:totin_3:20210330163659p:plain

 

7'' (同じ設計書を割り当てているけど、任意のデバイスだけにアプリを入れたい場合).

ステップ1〜3で「App」画面に対象アプリを追加し、「デバイス」画面で各デバイスの「iPad および iPhone の App」画面を参照すると、設計書外(ライブラリの追加 app下)にアプリが表示されているので、ステップ6のようにマネージドに変換後「デバイス上でアップデート」すると、このデバイス上でのみアップデートされます。

f:id:totin_3:20210330175539p:plain

 

余談:アプリを更新する際、「デバイス」画面上の「同期」ボタンで実行するのかと思いクリックしたところ、「インベントリを同期しますか?」とのポップアップが表示されました。

同期後はデバイスダッシュボード画面上の「最終インベントリ」の日時が更新されていて、その際「容量」とか「オペレーティングシステム」とかが更新されるのだと思います。

ちなみに、わざわざ手作業で同期せずとも自動で毎日更新されます。

f:id:totin_3:20210330182043p:plain

 

 

[備忘録] jamf NOW を触ってみた(デバイス登録編)

こんにちは!MDM初心者(今まで触ったことすらない)です。

 

MDMツールの選定は、対応デバイスやセキュリティレベル、価格(何台から契約できるかとかも含めて)、使いやすいかどうか等がポイントとなってくると思いますが、とりあえずそのうちの1つ「jamf」を試しに使ってみました。

自分用の備忘録としてさらさらっとメモしていきます。

※APNs接続〜実際にデバイス登録まで

 

・個人利用で手を出しやすい「jamf NOW」の無料アカウントを作成した(3台まで無料)

www.jamf.com

 

・デバイス登録事前準備:APNsに接続させる

ログインして「デバイス」をクリックすると「まだデバイスがありません」と表示されています。

 

1. 「APNsに接続」をクリック。

f:id:totin_3:20210329124252p:plain

 

2. 「ダウンロード Certificate Signing Request.plist」をクリックして証明書署名要求をDL。

f:id:totin_3:20210329125020p:plain

 

3. 「Appleプッシュ証明書ポータルを開く」をクリック。

f:id:totin_3:20210329125323p:plain

 

4. Apple IDを入力。

f:id:totin_3:20210329125417p:plain

 

5. コードを入力。

※コードが画面中央に表示されてちょうど入力画面を隠してしまうので、ポップアップを横にずらします

f:id:totin_3:20210329125520p:plain

 

無事ログインできました!

6. 「Create a Certificate」をクリック。

f:id:totin_3:20210330112514p:plain

 

7. 利用規約をチェックして「Accept」をクリック。

f:id:totin_3:20210330112617p:plain

 

8. 「ファイルを選択」をクリックして、ステップ2でDLした「Certificate Signing Request.plist」を開きます。

f:id:totin_3:20210330112714p:plain

 

9. 必要であれば新しい証明書にメモを付けます(ここでは適当にJamf Now)。

※DL後、ファイルの詳細を見てみたけど、「Jamf Now」なんてどこにも表示されていませんでした。なんのメモだったんでしょうね🤔

「Upload」をクリック。

f:id:totin_3:20210330112822p:plain

 

10. Confirmation画面になったら、「Download」をクリックしてAppleプッシュ証明書(MDM_ JAMF Software, LLC…)をDL。

f:id:totin_3:20210330112920p:plain

 

11. Appleのポータルを閉じて、jamf画面の「次へ」をクリックして下記の画面に遷移します。

f:id:totin_3:20210329133708p:plain

 

12. 証明書をドラッグ&ドロップするか「閲覧」をクリックして、ステップ10でDLしたプッシュ証明書(MDM_ JAMF Software, LLC…)をアップロード。これでJamf NOWアカウントとApple間の接続が可能になる!

f:id:totin_3:20210329134103p:plain

 

13. 証明書の有効期限は1年間で、更新時にApple IDにお知らせが届くようにもう一度Apple IDを入力して「保存」をクリック。

f:id:totin_3:20210329134356p:plain

無事設定が完了しました!

f:id:totin_3:20210329134708p:plain

 

・デバイス登録方法

 デバイスをクリックすると、事前準備時とはちょっと違う画面になりました。

登録方法は「自動登録」「オープン登録」「デバイスを登録(手動?)」の3種類ありそう。

f:id:totin_3:20210329140306p:plain

 

・自動登録

Apple Business/School Manager を使用している場合、ゼロタッチ導入(Appleバイスの電源を入れたあとjamf NOWの管理設定を自動で適応することができたり、業務で使用するアプリをApple Storeで一括購入してApple IDが設定されていないデバイスにも配布することができる)ができるみたいです。

※Device Enrollment program は利用できなくなったみたい。

  参照→ Jamf Now Help Center

f:id:totin_3:20210329140618p:plain

 

・オープン登録

登録したいデバイスの使用者に登録用URLを送り、使用者に設定してもらうことで登録ができるみたいです。

f:id:totin_3:20210329160401p:plain

 

・デバイスを登録(手動?)

今現在実際に使用しているデバイス(今こうしてjamf画面を開いているデバイス)を登録する方法のようです。

※デフォルトの設計書のまま構成プロファイルをDLして開こうとしたら、mac画面上で「プロファイルをインストールしたい場合は、”システム設定”で確認してください」というポップアップが表示されました。

f:id:totin_3:20210329161746p:plain

 

・デバイスを登録(オープン登録)

試しに自分のiPhoneを登録してみました!

 

1. オープン登録画面で、「オープン登録を有効にする」にチェックを入れ、アクセスコード、期間を設定して「設定を保存」後、QRコードiPhoneで読み込んでみました。それがこちらの画面。

「Start Enrollment」をタップ。

f:id:totin_3:20210329163934p:plain

 

2. 構成プロファイルをDLしようとしているのを「許可」。

f:id:totin_3:20210329164318p:plain

 

3. プロファイルがDLされたので、「閉じる」をタップ。

f:id:totin_3:20210329164537p:plain

 

4. 設定> 一般> プロファイル から、DLしたプロファイルをタップして、「インストール」。

※一番最初は自分で設定〜プロファイルに遷移させなくても、自動でこの画面が出てきたかも。一旦削除して、再度同じ操作したら自分で遷移させないといけなかったけど、このキャプチャを見るに、もしかしたら自動で表示されてたのかも(初めて操作したのは昨日のことで忘れてしまいました😓)

f:id:totin_3:20210329164612p:plain

 

5. 警告が表示されるけど「信頼」をタップ。

f:id:totin_3:20210329170723p:plain

 

6. インストール完了!

f:id:totin_3:20210329170838p:plain

jamfのデバイス画面にも表示されていました!

f:id:totin_3:20210329171029p:plain