GitHubのマルチアカウント利用
GitHubで個人用と業務用で別々のアカウントを持ってよいのかたびたび話題になるのでまとめてみる。
GitHub利用規約:1人1アカウント
1 人の個人または 1 法人が維持できる無料アカウントは 1 つのみです
では、業務用アカウントはどうなる?
ここで注目すべきは「無料アカウント」という点。以下のケースでは「無料アカウント」ではないので別アカウントの利用が認められる可能性がある:
Enterprise Managed Users(マネージドユーザーアカウント)
- 企業が管理する有料アカウントであり、個人の無料アカウントとの併用が許可されているように読める
場合によっては、GitHub.com 上の複数のアカウントを使う必要があります。 たとえば、オープン ソース コントリビューションの個人アカウントがあり、雇用主が Enterprise 内でユーザー アカウントを作成および管理することもできます。
- 企業が管理する有料アカウントであり、個人の無料アカウントとの併用が許可されているように読める
有料プランの組織に所属するアカウント
無料アカウントを2つ持つことは許容されている?
明確に無料アカウントを2つ持つことは許容されているという回答があったという記事もある。
個人的に納得できなかったのでギットハブ・ジャパン合同会社に問い合わせてみました。
結論としては公私混同を避けるため個人用と業務用で無料アカウントを2つ持つことは許容されているとのことでした。この規約の存在理由としては主にOSSでの荒らしの防止策のためということでしたので、会社側で有償のオーガニゼーションを契約するとかも特に不要という内容です。
GitHubのおすすめ:アカウントは1つに
GitHubは複数アカウントの切り替えを技術的に可能にしつつも、1つのアカウントですべての活動を管理することを推奨している。ただし、推奨していない(=許容はされていると捉えられる) 複数アカウント利用の内容を無料アカウントの複数保持として言及しているわけではない。
ほとんどの人は、オープンソース プロジェクトでも、有給雇用時のどちらでも、GitHub.com のすべての作業に 1 つの個人用アカウントを使用します。 現在、自分で作成した個人用アカウントを複数使用している場合は、アカウントを結合することをお勧めします。
ヒント: 個人用と業務用のリポジトリの両方を 1 つの個人アカウントのみで管理することをお勧めします。
ISUCON 予選の最初の1時間でやること
ISUCON は敷居が高そうで、出ても何もできなさそうという人向け。
1チーム3人なのでこれらを分担して進めます。
準備
- レギュレーションをみんなで読む
- 誰かがサーバにログインして公開鍵とか設置
- ブラウザからアプリを触って仕様を把握
- ソースコードを Git 管理してローカルに持ってきて開発環境を作る
- デプロイ周りのスクリプトを設置
計測
- ログの出力設定
- 計測ツールのインストール
- ベンチマーク中に出力されたログを解析
対応協議
アプリの動きやレギュレーションを把握するのはかなり大事だと思うので、対応方針を決める前にもう一回全員で確認したほうがいいかも知れませんね。
ISUCON9 の参加登録締め切りは 2019年8月25日(日) 18:00:00 JST です。
Android Studio のエミュレータ (Android Emulator / AVD) からホスト名でホストPC に接続したい
TL;DR
経緯
10.0.2.2 でホストにアクセスできるが、ホスト名でアクセスしたい時がある (サブドメインで区切られたマルチテナントなシステムとか) ので、試行錯誤してみた
シミュレータ (AVD) からのアクセスをホストで起動した proxy で処理するパターン
Squid インストール
macOS 前提です。
$ brew install squid
動作確認したのは squid-3.5.27
設定ファイル編集
必要であればよく使うポートを開けておくとよい (acl Safe_ports port 1025-65535» # unregistered ports
は設定されている)
$ vi /usr/local/etc/squid.conf
# 例 acl Safe_ports port 4200 acl Safe_ports port 8000 acl Safe_ports port 8080 acl Safe_ports port 9292
起動・停止・再起動
$ brew services run squid $ brew services stop squid $ brew services restart squid
ログ確認
$ tail -f /usr/local/var/logs/access.log # squid access_log
AVD からのローカルホストアクセス
コマンドラインから adb でエミュレータ起動する際に引数で渡したり、AVD の GUI 設定からプロキシを設定しても 127.0.0.1 が AVD 自身にループバックされているようで期待した動作にならなかった。
参考: Set up Android Emulator networking | Android Developers
通常の Android の Wi-Fi 設定でプロキシを手動設定する*1。
参考: Connect to Wi-Fi networks on your Android device - Android Help
プロキシのホストは Squid が起動している開発サーバ の Local IP、Squid のデフォルトポートは 3128
動作確認
lvh.me が 127.0.0.1 を返してくれるので、それにアクセスすると開発サーバの localhost にアクセスしてくれる。
(AVD 上の) http://lvh.me:8080 => (開発サーバの) http://127.0.0.1:8080
シミュレータ (AVD) 内の hosts を書き換えるパターン
事前に emulator
や adb
コマンドにパスを通しておいたほうが楽だが、今回は省略するのでフルパスで記載。
バーチャルデバイス (シミュレータ) 起動
$ # avd 名を確認 $ /Users/${HOME}/Library/Android/sdk/emulator/emulator -list-avds Pixel_2_API_28 $ # avd を指定してエミュレータを起動 (書き換えるので、writable を指定する) $ /Users/${HOME}/Library/Android/sdk/emulator/emulator -avd Pixel_2_API_28 -writable-system
Android Debug Bridge でバーチャルデバイスを操作
$ # デバイスの確認 $ /Users/${HOME}/Library/Android/sdk/platform-tools/adb devices List of devices attached emulator-5554 device $ $ # root になる $ /Users/${HOME}/Library/Android/sdk/platform-tools/adb root $ $ # デバイスをアタッチ $ /Users/${HOME}/Library/Android/sdk/platform-tools/adb remount $ $ # アタッチの確認 $ /Users/${HOME}/Library/Android/sdk/platform-tools/adb devices List of devices attached emulator-5554 device
バーチャルデバイス上の hosts を書き換える
$ # バーチャルデバイスから hosts ファイルを取得 $ ~/library/android/sdk/platform-tools/adb -s emulator-5554 pull /system/etc/hosts ~/tmp/ /system/etc/hosts: 1 file pulled. 0.0 MB/s (56 bytes in 0.004s) $ $ # 追記 (10.0.2.2 はホストのアドレス) $ echo '10.0.2.2 lvh.me' >> ~/tmp/hosts $ $ # 追記したファイルをバーチャルデバイスに上書き配置 $ ~/library/android/sdk/platform-tools/adb -s emulator-5554 push ~/tmp/hosts /system/etc/hosts
参考
- Android Studio AVD (エミュレータ) からデスクトップのローカルホストに接続させる設定 - 長生村本郷Engineers'Blog
- [Android] Android Virtual Device の /etc/hosts を書き換えて、Vagrant Virtual Machine へ接続する | deadwood
*1:端末により設定方法は変わります