B-Teck!

お仕事からゲームまで幅広く

【雑記】ブログで利用しているロゴを新しくしました!

f:id:beatdjam:20210512201858p:plain

今までジェネレータで作成したものを使っていたんですが、ロゴを刷新しました。
お願いさせていただいたのはフォロワーのLemon_orenoyomeさんです!
シンプルでかっこいいデザインが前から好きだったので依頼してみたところ対応してもらえました。

Boothでスタイリッシュなフォントやアイコンの販売をしたり、ロゴのコミッション依頼なんかを受けていたりします。 zipangcomplex.booth.pm

今後は個人サービスをリリースする等、なにかアイコン画像を使うタイミングでこの画像使っていこうかなと思ってます。
特に書く内容が変わるわけでも無いんですが、新しくなったB-Teck!を今後ともよろしくお願いいたします。

【雑記】毎日1コミットを目指す習慣を始めた

2分間コーディングのすすめ、コードを書く習慣のハードルを下げる を見て、2分間だと何も出来なかったので毎日最低1コミットをしようという活動を、年度頭あたりから始めてみた。

現状はこんな感じで、とりあえず1ヶ月以上継続できている。
f:id:beatdjam:20210512224736p:plain
↑の画像の作成には Grass-Graph / Imaging your GitHub Contributions Graph を利用しています。

内容は雑多で、

  • KotlinでPDFを扱うライブラリのサンプルコード
  • このブログのCSSを管理するもの
  • 業務で扱うことになったPythonの写経
  • Githubのプロフィールにしているmdのメンテナンス
  • 興味の出たScalaの本の写経

など。

もともと、家で開発をするというのがかなりのハードルになっていて、土日に気力を振り絞ってやるみたいになっていたところを、とりあえず毎日ネタ探してなんか書くぞ!となっていたり、積んでいたScalaの本を読み進められたりしていて、今のところはいい感じ。
これが義務的になっておざなりになってしまうとだめなんだろうけど…。
1日の作業時間は10分〜数時間で、明らかに無理そうな日用のネタを作っていたりする部分もある。

blog.beatdjam.com ↑でも書いたんだけど、勝手に自分の中に高めのハードルを設けて、それを超えられないことに苦しみを感じてしまいがちな部分があって、それを意識して低くして、成功体験を積んで自信を持てるようになれたらいいなという気持ちです。

【GAM/Python】Google Ad ManagerのAPIをPythonで叩く

サービスアカウント作成と連携

Google Ad Manager APIを利用するためにはOAuth2認証が必要。
いくつか方法があるけど今回はサービスアカウントを作成して認証されるようにします。

サービスアカウント作成

  • Google Cloud Platformのコンソールからサービスアカウントを作成します
  • 作成したサービスアカウントでjsonキーを作成します
    • このjsonは後にプログラムからAPIに疎通する際に利用します

Python用ライブラリを読み込む

googleads/googleads-python-lib

  • pipを推奨されてますがPoetryでも問題なく導入できました。
$ poetry add googleads
  • 先の手順で取得したjsonを credential.json として保存して参照しています。
from googleads import ad_manager
from googleads import oauth2
import os

# 認証ファイルのpathを取得
script_dir = os.path.dirname(__file__)
KEY_FILE = os.path.join(script_dir, 'credential.json')

# 任意のアプリケーション名
APPLICATION_NAME = 'sample'

def main(key_file, application_name):
    oauth2_client = oauth2.GoogleServiceAccountClient(
        key_file, oauth2.GetAPIScope('ad_manager'))

    ad_manager_client = ad_manager.AdManagerClient(
        oauth2_client, application_name)

    networks = ad_manager_client.GetService('NetworkService').getAllNetworks()
    for network in networks:
        print('Network with network code "%s" and display name "%s" was found.'
              % (network['networkCode'], network['displayName']))

if __name__ == '__main__':
    main(KEY_FILE, APPLICATION_NAME)

上記のコードを実行して
Network with network code "対象のネットワークコード" and display name "ネットワークの名称" was found.
が出力されれば疎通は成功です。
お疲れ様でした。