やってみる

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

GitHubアップローダの実装方針について考えてみた

どうするか。

前回まで

http://ytyaru.hatenablog.com/entry/2017/09/30/000000

方針

  1. リファクタリングせず今回の部品を作って結合していく
  2. 作る前にリファクタリングする

リファクタリングは大変そうだし、新機能追加のほうが楽しい。でも、これ以上未整理のまま肥大化したら、もう扱いきれない。

所感

  • 整理するたびにimportとかファイルパス関係のコードを修正するのが、ものすごくつまらない。
    • importの階層深すぎ
      • インスタンス生成箇所でも修正が必要。from * import *文にしたほうがよいか?
    • 以下のようなカレントディレクトリ取得コードが冗長かつ至るところで必要でウザすぎ
      • os.path.join(os.path.abspath(os.path.dirname(file)), “some.tsv”)
  • 重複コード多すぎ
    • でもちょっとずつ変えている。精査が面倒。手抜きしてきたツケが回ってきた
  • GitHubAPI操作のモジュール化が難しくて整理できない
    • DB操作も絡んできてさらに複雑
  • ツールの機能単位でまとめるか、GitHubApi操作+DB操作単位でまとめるか
    • できるだけ重複をなくするにはどうすればいいか

API

GitHubAPIの実装がバラバラ。中途半端に一部共通化したり、していなかったり。

  • Pagenation
  • HttpHeader
    • Authorization(APIごとに必要scopeが違う。一部Basic認証のみ)
    • Accept(APIバージョン, Star, Licenseなどで違いがある)
    • Time-Zone
  • APIインタフェースとPythonインタフェース
    • API仕様書を見ながら1つずつPythonインタフェース作成するのは無謀。やりたくない
  • HTTP処理の共通化は難しそう(どこをどう共通化できるのか)
    • HttpMethod
    • HttpHeader
    • RequestParameter
    • Response(文字列、バイナリ、JSON、など形式も異なる。成功時のHTTPコードも。)
    • HTTPエラー処理
    • ファイル書き出し

HTTP要求と応答のところが面倒くさい。

2FA

2FAに関しては根本的に理解していない。OTP生成でログイン確認がとれていない。WinAuthでのみ成功し、それ以外で失敗した。原因不明。最初から調査しなおす必要がある。

GitHubの2FA自体の使い方がわかっていないかもしれない。たとえばリカバリコードには有効期限があったことが発覚。16個のコードがあり、1個1回限りの使い捨てらしい。

所感

GitHubリクエスタを作るのが良さそうか。またはHTTPリクエスタか。requestsライブラリでは足りない部分はどこなのか。