Baby step - 思考と実験の足跡

日常のちょっとした、気になって試したこと集です。

Graph APIを使った開発をする上で参考になったリンク集

目的

Microsoft系のサービスは種類が多く、また似た用語も多いです。 それゆえ検索しても関連しない記事がヒットすることも...

今回は Graph API開発に関連しそうなリンクをまとめました。

なお、用語の予習をしたいという方はこちらも併せてご覧ください。

cf. Azure Active Directoryについてまとめてみた - Baby step - 思考と実験の足跡

各種URL

Microsoft Graphとは

Microsoft Graph ドキュメント | Microsoft Docs

ドキュメントのルートです。 ページ数が膨大なので、ここを目次代わりに眺めると良さそうです。

アプリの移行計画チェックリスト - Microsoft Graph | Microsoft Docs

初めて検索した時「Microsoft Graph」と「Azure AD Graph」の両方がヒットして、なんのこっちゃとなった思い出があります^^

Azure AD Graphは開発が終了しており、Microsoft Graphに移行するように言われています。

チュートリアル

Microsoft Graph チュートリアル | Microsoft Docs

Graph APIを利用して開発する際のチュートリアルです。 サーバー、ネイティブアプリ、シングルページアプリケーションごとにいくつかの言語でチュートリアルができます。

Microsoft Graph を使って Ruby on Rails アプリを構築する - Microsoft Graph | Microsoft Docs

わたしはRubyチュートリアルを試しました。 ※ 先述のサイト内にある「Ruby」をクリックしたものと同じです。

  • Azure Portalへの登録
  • Omniauthを使ったAzureとのOAuth2.0認証
  • OAuthを利用したサインイン&サインアウト機能の実装
  • Outlook 予定表から予定を取得
  • Outlook 予定表に新たなイベント(予定)を作成

といった内容が解説されています。

サイト・アプリケーション設定

Microsoft Azure Portal | Microsoft Azure

サインインをすることで、ユーザーやアプリの登録など、AzureADの操作ができます。

チュートリアルで一度アクセスするのですが、それゆえ(?)検索キーワードを度々忘れて迷子になっていました。 「azure portal」でググると出てきます。

権限

Microsoft Graph アクセス許可一覧が知りたい – DialogPlay - TIS株式会社

利用可能なAPIは膨大です。 どんなAPIがあるか、利用するためにどのような権限が必要か、を眺めておくといいでしょう。

ユーザーなしでアクセスを取得 - Microsoft Graph | Microsoft Docs

アプリには、ユーザー個々人が認証を行い、自分のカレンダーなどにアクセスするものだけでなく、組織単位で認証を行い、テナント全体に対してAPI操作を行うものもあります。

なお、テナント単位で権限が必要なAPIを利用する場合、グローバル管理者の権限が必要です。

※ 権限が不要なAPIを利用する場合、クラウドアプリケーション管理者の権限で十分です。

cf. 「管理者の承認が必要」のメッセージが表示された場合の対処法 | Japan Azure Identity Support Blog

エラー応答

Microsoft Graph のエラー応答とリソースの種類 - Microsoft Graph | Microsoft Docs

ステータスコードとその説明が書かれています。 一部の詳細な例外についても触れられています。

OAuthアクセストーク

構成可能なトークンの有効期間 - Microsoft identity platform | Microsoft Docs

Azureが発行するトークンの種類が載っています。 トークンことの有効期間一覧も載っています。

cf. 構成可能なトークンの有効期間 - Microsoft identity platform | Microsoft Docs

先日調査しましたが、開発者側からアクセストークンの有効期限を変更するのは大変そうでした...。

cf. GraphAPIで利用するアクセストークンの有効期限を変更するには - Baby step - 思考と実験の足跡

AzureAD ユーザー設定

Member ユーザーと Guest ユーザーについて | Japan Azure Identity Support Blog

やや細部の話ですが、AzureADに登録するユーザーには「メンバー」「ゲスト」の2タイプがあります。 ゲストの場合は、できる操作が制限されます。

テナント外のユーザーを招待する場合は基本的にゲストとなります。 ※ 設定すれば変更できるようですが

楽天ひかり + Buffalo WSR-2533DHP3 で開通手続きをする前に知ってほしい1つのこと

背景

2020年の12月に、楽天が「モバイルとひかりを一緒に契約すると、どちらも1年間月額料金が0円」というキャンペーンを打っていたので、試しに契約してみました。

楽天ひかりは「繋がりにくい」などの評判もあるようですが、月々かかるのは1年間工事費用だけ。 最悪使えなくても諦められる金額だったので、まあいいかな〜と。

契約し、開通手続きも終わり、いよいよ使える...と思いましたが、設定にだいぶ手間取ったので手順をまとめます。

※ あくまで解決手段の1つとしてご認識ください

IPv6ルーター選び

楽天ひかりはIPv6なので、ルーターIPv6に対応している必要があります。 選択肢が色々あり悩みましたが、比較的レビューが高かったこちらにしました。

item.rakuten.co.jp

設定方法

結論から書くと、以下の3ステップです。

  1. WSR-2533DHP3 | バッファロー を開く
  2. セットアップガイドの「B 新規設置編」を手順2Aの6まで行う(WiFiに接続するまで)
  3. 楽天ひかりのIPv6サービスを利用する方法 | バッファロー を行う

※ 上記のセットアップガイドは、WSR-2533DHP3 購入時に同梱されているセットアップガイドとおなじです。

ハマりどころ

楽天ひかりのIPv6サービスを利用する方法 | バッファロー のリンクを見つけられるか、が全てです。 「楽天ひかりの場合は設定方法が違う」という記述はセットアップガイドになかった(はず)なので、ググって見つけないと最悪利用できないかも。。

よく見たエラー2つ

セットアップガイド通り進めても「初回設定が完了せずインターネット接続ができません 」と表示される

接続確認画面 にアクセスするよう言われ、アクセスすると「接続成功」と言われたんですが、ネットにはつながってなかったんですよね〜。。

cf. 初回設定が完了せずインターネット接続ができません | バッファロー

こちらは解決できない(楽天ひかり用の設定をするしかない)ので、無駄に時間をかけないよう。。

複数端末で接続を試みているとき、エアステーションに「他のユーザーがログイン中です」と表示される

こちらはルーターの電源を入れ直せばOKです。

cf. インターネットに接続させる方法(簡易版) | バッファロー

まとめ

ネット回線系はハマりやすいものの基本的に一度しか起きないため、知見を活かしにくいのが困りものですね^^ これから契約する方のお役にたてばいいなと思っています。

※ 繰り返しですが、解決策の1つであることをご留意ください

女性or夫婦のミニマリストはどんな人がいるのか?

背景

わたしはミニマリストを目指して、できる限り物を減らしたいなと思っています。 とはいえ減らしすぎても楽しみは減るので、

  • 自分が迷わないぶんだけ
  • 大事にできる(メンテナンスが苦にならない)ぶんだけ

持つように心がけています。

しかし、結婚すると家は共用。妻にも近い考えを持ってほしくてミニマリストの勧めをした時に、

ミニマリスト思考は、何かにストイックな人たちが人たちがやるから男の人が多いイメージ」

という意見をもらいました。

言われてみれば、確かにそう。 ミニマリストとして紹介される方々って、単身の男性が多い。

女性や夫婦の事例ってあまり聞かない...。

そういった具体的な実例もないままに方針を考えるのはよくないと思い、まずは実例を調べてみました。

実例

「女性 ミニマリスト」「夫婦 ミニマリスト」で調べてみました。

感想

有名人でミニマリストの方は少なそう、に感じました(ざっくり調べただけなので、実はいるのかもですが)。

また、ミニマリストの方々の持ち物と比べて、妻の持ち物が決して多いわけでもなさそうでした。 自分が使わない分ピンとこなくて、ただ目についただけのようです。

自分の結論としては、妻にミニマリストを勧めることはしないということと、収納・片付けがしやすい&綺麗な部屋づくりをする、という方針に切り替えようと思いました。

次回引っ越しするときはそれぞれの部屋を作り、個人の部屋には干渉しない、というのもやってみたいな〜

防災バッグを作ったら心がスッキリした話

背景

年始で計画に関心が高まっていたのもあり、メンタリストDaiGoさんの「倒れない計画術」を買いました。

amzn.to

その本の前書きで、段取りについて触れられていたんですね。

「昔は旅行前にあれもこれもと用意して時間がかかっていたが、いまは予め3種類のバッグにパッキングして目的に応じてそれらをもっていくだけ。これこそが段取り。」

これらを読んで、

  • そういや地震のたびに「防災バッグを作らなきゃ」と頭によぎるなあ...
  • 近所に出かけるときも、旅行に行く前も、あれこれ準備してて無駄な時間だなあ...

こんなことが頭をよぎりました。

じゃあ熱量が高いうちにやろう、ということで防災バッグを作ってみました。

やったこと

Step. 1 ユースケース洗い出し

わたしの場合は以下の6つでした。

  • 家用
  • カフェ用
  • お出かけ用
  • 仕事用
  • 旅行用
  • 防災用

Step. 2 それぞれに必要そうなものを洗い出す

例えばカフェ用はこんな感じ

  • 財布(クレカ)
  • ポーチ(目薬、アロマ、マウススプレー、ペン)
  • ノート
  • 小物(マスク・名刺入れ・ティッシュ・買い物袋)
  • 資料(本, iPad

防災用はこんな感じ

  • 長財布(厳禁・マイナンバー・クレカ)
  • パスポート
  • 2日分の着替え
  • 雨合羽
  • スマホバッテリー
  • 服用消臭スプレー
  • 食料(水2L×2、サバ缶×6、割り箸×6)

Step. 3 まとめる

ひと通り書き出したら、まとめてみましょう。

わたしの場合は、カフェ用と防災用にまとまりました。

  • 仕事用: カフェ用 + ノートパソコン
  • 旅行用: カフェ用 + 日数分の着替え + 充電器 + 美容(化粧水・乳液・ヘアブラシ)

ベースのカフェ用を作っておけば、仕事用や旅行用も少ない手間でカバーできます◎

※ 旅行用の美容グッズもまとめておくと良さそうと良さそうですね(書きながら気づいた

いざ災害が起きたときは、これらのバッグ2つにWiFiスマホを持って逃げればOK。

感想

妙な不安が減りました。 いままでは地震のたびに「どれ持っていこう、どこにあるんだっけ」とあたふたしており、無駄に消耗していました。

今回バッグを作ることでルールがシンプルになったので、だいぶ心がスッキリ。

また、生き残る上で自分に本当に必要なモノって案外少ないんだなと実感します。

改善したいこと

作っていく中で自然と出てきます。

  • こんな重さで本当に逃げられる? もっと軽くないと無理じゃない?
  • 水2L×2は軽くできない? ポータブル浄水器ってないのかな?(ありそう
  • サバ缶以外に栄養価が高く備蓄できるものって何かないかな?
  • リュック自体ももっと軽く雨にも強いものにしたいな
  • スマホの充電器はソーラーだと良さそう
  • できる限りデータはクラウド上に寄せたほうが良い
  • PCを買い替えた時に基本同期すればOK、という状態に近づけたい
  • 現金は500円玉や1000円札でも持っておこう

etc...

まとめ

求めるレベルは「準備する時間を減らす」だけでなく「考えなくて良くする」ということ、そしてその効果を改めて実感した機会でした。

Azure Active Directoryについてまとめてみた

背景

Azure Active Directory(AAD)を使ったOAuth認証の機能開発をしました。 AADだけでなくMicrosoftのサービス自体に不慣れで、用語の理解に時間がかかりました。 実装を行う上で重要だった用語や概念についてまとめました。

用語の定義

Azure Active Directory

概要

  • Azureのサービスの1つで、Azureに契約すると自動で使える
  • IDaaSの1つ(SasSの認証基盤)
  • ユーザー、アプリケーション、アクセス制御を一元管理できる

ActiveDirectoryとの違い

AAD AD
サーバ クラウド オンプレ
プロトコル SAML,OpenIDConnect,OAuth, kerberos
ディレクトリアクセス RESTベースのAAD Graph API LDAP
ドメイン マルチテナント フォレスト、ドメインという単位

cf. 【初心者向け】AzureActiveDirectoryとは何なのか - Qiita

テナント

概要

  • グループのようなもの
  • 組織内のユーザー・アプリに対してポリシーを設定しセキュリティを高める
  • 組織利用のアプリケーションとリソースに対してidとIAMを提供するもの

注意点

テナントは概念が曖昧で、少なくとも以下3つを指すことがある

  1. MSと契約した企業
  2. グループ会社を含めた企業全体
  3. AzureADディレクト

cf:

組織アカウントと個人アカウント

組織アカウント

  • AADで管理されたアカウント
  • MSOffice365のアカウント
  • 個人で自由に取得できず管理者に依って作成される

個人アカウント

  • MSアカウント
  • 個人が任意のemailで作成できるアカウント ※ AADに登録されているメールドメインでは新規取得できない

cf. Microsoft Azureを利用する前に必ず知っておきたいこと P10

yahooメールでエイリアスを設定してみた

背景

Yahooメールを取得して20年ほどになるのですが、だいぶ迷惑メールが増えてきました。 (Yahooメールが問題ではなく、色々と登録した結果広告メールが届くようになっただけなのですが)。

気が向いたタイミングで都度フィルタを設定してたのですが、1つ1つ送信元を確認してフィルタするのは骨が折れるんですよね。。

なにかないかと探してみたら、エイリアス機能があることがわかりました。

エイリアスを設定してみた話をします。

設定方法

Yahooメールのエイリアスは「セーフティアドレス」という名称のようです。

具体的な設定方法はこちらにまとまっていました。

cf. 複数メールアドレスを作るエイリアス機能/Yahoo!メール,捨てアド │ andropp(あんどろっぷ)

なおセーフティアドレスは10個まで作れるようです(執筆時点)。

使ってみた感想

基本的に普段のメールアドレスと同様に使えます。

良かった点としてはフィルタがラクになったことですね。 セーフティアドレスごとに目的を設定し、アドレスの宛先ごとにフィルタすればOKになったので、設定の手間は減りました。

デメリットとしては、新しいサービスなどに登録する時メールアドレスの文字列を忘れてしまうことですかね^^ (いままでは文字列を覚えていたので)

まあ辞書ツールに入れれば解決するので、そのぐらいの問題です。

まとめ

Yahooメールのフィルタが大変な時には選択肢に入れてもいいかと思います◎

GraphAPIで利用するアクセストークンの有効期限を変更するには

背景

ユーザーではなくアプリケーションに権限を持たせてGraphAPIを操作するアプリを開発しました。

cf. ユーザーなしでアクセスを取得 - Microsoft Graph | Microsoft Docs

アクセストークンの有効期間は、アクセストークンを取得するAPIのレスポンスより60分とわかりました。

セキュリティ的に、アクセストークンの有効期限をより短く指定したほうがいいのでは? と思い、アクセストークンの有効期限をを 変更する方法を調べてみました。

調査結果

アクセストークンの有効期間は10分から1日の範囲で指定できることがわかりました。

有効期限を長くするほどセキュリティリスクが高まり、短くするほどパフォーマンスが落ちるというトレードオフになっています。

cf. 構成可能なトークンの有効期間のプロパティ

有効期限を変更するには Azure AD PowerShellが必要とのこと。 また、トークンの有効期限ポリシーはテナント全体orアクセスされるリソースに対して設定されるらしい。

cf. カスタム Azure AD アプリのトークン有効期間の既定値を変更する | Microsoft Docs

うーん、気軽に変更できる感じではなさそうだ。。

まとめ

  • アクセストークンの有効期限は、アプリ開発者側で変更するのは難しい
  • アプリを利用するテナント管理者に、AzureAD PowerShellを使ってポリシーを設定してもらうのが良さそう

という理解をしました。

アプリ開発者側でPowerShellを使えば有効期限を変更できるかもしれないのですが、その場合アプリを許可したテナント側でしているポリシーを上書きしてしまうリスクがあるんですよね。。 (本当に上書きするか、は試せていません)

AzureAD周りは難しい。。