読者です 読者をやめる 読者になる 読者になる

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubAPIツールを改良したい

これまで作ったGitHubAPIツールを改良したい。

これまでの成果

リモートリポジトリ一覧取得

GitHubリポジトリ一覧(仮)
GitHubリポジトリ一覧ページの基礎ができた

最低限はできているか。しかし都度API発行しているから実行に時間がかかる。また、リクエスト上限を消費する。ローカルDB化して解決したい。一覧取得だけなら認証不要なAPIが使えるのでそれを使っているが、リクエスト上限数が少ないはず。

二要素認証でGitHubAPIを叩いてみた

二要素認証でも取得できる。でもこのバッチはAccessTokenとかをハードコーディングしてしまっている。また、ワンタイムパスワードの取得にWinAuthというGUIツールを使っている。このため完全自動化はできていない。

リモートリポジトリ新規作成

リポジトリ作成バッチ(漏洩防止版)

今はこれを使っている。リポジトリの削除と編集のバッチも含まれている。今回は主にこれを改良したい。

AccessToken取得

GitHubのAccessToken一覧を取得するバッチをつくったが、失敗していた。作成済みAccessTokenはAPIから取得できないようだ。AccessToken新規作成ならできるらしいが、そのバッチを作っていなかった。すっかり忘れていた

現状と改良予定

項目 現状 改良
実装言語 Batch Python
HTTP通信 curl.exe requests.post(...)
アカウント情報取得 q(.tsv) SQLite3

問題点

Windows Batchが悪い。Python化して改善したい。

  • Batch
    • 言語的に使えない&使いたくない
    • Windows上でしか動かない
  • 文字コード問題
    • BatchはCP932だが、GitHubAPIはUTF-8
    • POSTデータをUTF-8にするため、一旦ファイル出力している
      • curl.exeのファイル読込機能のおかげで可能
      • 一々ファイル出力するため実行速度低下&ディスク劣化する
      • たまに出力タイミングのせいか失敗する

改良点

できれば改良したいことを列挙する。どこまでできるかは未定。

  • Batch→Python
    • HTTP通信(curl.exe→requests.post())
    • データ取得(q(.tsv)→SQLite3)
      • O/Rマップライブラリ調査~実装
    • データ暗号化について検討
    • リポジトリ作成時にローカルDBへ登録(リポジトリ一覧取得用)
  • 二要素認証の対応
    • OTP生成ライブラリ調査~実装
    • QRコード解析ライブラリ調査~実装
  • Python→exe
  • CUIGUI
    • 対象ファイル一覧
    • Markdownビューア調査~実装
    • 秀丸ファイラから実行
  • プロジェクト一式作成
    • .gitignore, ReadMe.md, LISENCE.txtの作成
  • バックアップ作成
    • 圧縮ファイルを作成したい(.7z)
    • 所定のオンラインストレージに自動アップロードしたい

一部GitHubAPI関係ない。「アップロード作業の軽減/自動化」が目的になっている。

所感

いつも理想が高すぎて形にできず破綻する。今回も同じ匂いがするのでほどほどにしよう。とりあえずデータベース作成からはじめようか。