日: 2024年2月26日

  • 伝説のフィーンドロードの神殿–冒険に満ちた英語表現

    伝説のフィーンドロードの神殿–冒険に満ちた英語表現

    この記事を読んで学べること:

    • 英語で冒険や発見を描写する方法
    • ミステリアスな場所を表す語彙の使用
    • 豊かな想像力を刺激する表現の探求

    今回の表現: “Somewhere within this complex, there’s a shrine to the Fiendlord. I heard there’s treasure to be found there as well.”

    日本語訳: 「この建物群のどこかに、フィーンドロードの神殿がある。そこには宝物もあると聞いた。」

    文法解析: このセンテンスは、特定の場所についての情報と、それに関連する興味を引く詳細を提供しています。「there’s a shrine」は存在を示す表現で、”I heard” は第二手の情報を伝えるフレーズです。

    他の表現との違い:

    オリジナルの表現似た表現使い方の違い例文
    there’s a shrinethere lies a sanctuary“there’s a shrine” は一般的な表現。「there lies a sanctuary」はより詩的で古風な響きがある。“In the heart of the forest, there lies a sanctuary untouched by time.”

    英語学習者として覚えておくべきポイント: 冒険や探索に関連する話をする際は、「shrine」という言葉が神聖な場所を表すのに適しています。「I heard」は噂や未確認の情報を伝える際に役立ちます。

    解説: ビジネスでのコミュニケーションにおいては、’I heard’ のような表現は、未確認の情報を伝える際に便利ですが、事実を確認することが重要です。また、’shrine’ のような言葉は、会社の中核となる価値観や文化について話す際に比喩的に使用することができます。

  • MSALを使ってOneDriveにユーザー代理でアクセスする

    MSALを使ってOneDriveにユーザー代理でアクセスする

    はじめに

    Microsoft Graph APIを使用すると、Microsoft 365のデータにアクセスできます。この記事では、Microsoft Authentication Library (MSAL) を使用してOneDriveにユーザー代理でアクセスする方法と、遭遇したいくつかの問題の解決方法を紹介します。

    OneDriveへのアクセス

    MSALを用いたアクセストークンの取得

    まず、MSALを使用してアクセストークンを取得します。以下の例では、ユーザーネームとパスワードフローを用いています。

    import msal
    
    def acquire_token_by_username_password():
        client_id = "--クライアントID--"
        tenant = "--テナント名またはID--"
    
        authority_url = f'https://login.microsoftonline.com/{tenant}'
        app = msal.PublicClientApplication(client_id=client_id, authority=authority_url)
        return app.acquire_token_by_username_password(
            username=settings.get('user_credentials', 'username'),
            password=settings.get('user_credentials', 'password'),
            scopes=["https://graph.microsoft.com/.default"])
    
    
    

    GraphClientを使用してOneDriveのデータにアクセス

    トークンを取得したら、GraphClientを使用してOneDriveにアクセスします。

    from office365.graph_client import GraphClient
    
    client = GraphClient(acquire_token_by_username_password)
    drive_items = client.me.drive.shared_with_me().execute_query()
    for item in drive_items:
        print(f"Drive Item url: {item.web_url}")
    
    
    

    遭遇した問題とその解決方法

    認証エラーの解決

    認証時にinvalid_clientというエラーが発生した場合、クライアント秘密キーまたは証明書が正しくない可能性があります。ConfidentialClientApplicationクラスを使用して、証明書を用いた認証を試みます。

    import os
    import msal
    
    cert_path = '/path/to/your/certificate.pem'
    with open(cert_path, 'r') as f:
        private_key = f.read().strip()
    
    authority_url = f'https://login.microsoftonline.com/{tenant}'
    app = msal.ConfidentialClientApplication(
        client_id=client_id,
        client_credential={"private_key": private_key, "thumbprint": thumbprint},
        authority=authority_url)
    
    

    タイプエラーの解決

    TypeError: 'dict' object is not callable というエラーに遭遇した場合、GraphClient コンストラクタがコールバック引数を期待しているため、辞書を直接渡すのではなく、トークンを返す関数を渡す必要があります。

    def acquire_token():
        # トークン取得のコード
        return msal_app.acquire_token_on_behalf_of(user_assertion=id_token, scopes=["https://graph.microsoft.com/.default"])
    
    graph_client = GraphClient(acquire_token)
    

    まとめ

    この記事では、MSALを使用してOneDriveにユーザー代理でアクセスする方法と、遭遇した問題の解決策を紹介しました。Microsoft Graph APIは強力であり、これを使用することでMicrosoft 365のさまざまなサービスと連携できます。