blog.syfm

徒然なるままに考えていることなどを書いていくブログ

宇治 (響け!ユーフォニアム 聖地巡礼)

インターンが始まって早くももう3週間目が終わります。残すところあと1週間になりました。

先週までは土曜日に楽しいイベントがあったのですが、今週は初めてなにもない土曜日だったので観光に行きました。

嵐山 or 聖地巡礼で迷ったのですが、一日過ごせるところのほうが良いと考えて、響け!ユーフォニアムのために宇治に行くことにしました 。

響け!ユーフォニアム武田綾乃先生の作品で、アニメは京都アニメーションが制作しています。

めちゃくちゃ熱くて面白いので是非見てくれ!!!

以下が行ってきた所 👇

久美子と麗奈が電車で会って帰る時の京阪宇治駅
f:id:ktr_0731:20170903001831j:plain

「黄前さんらしいね」の交差点 (スマホ撮影)
f:id:ktr_0731:20170903002013j:plain

上手くなりたい橋もとい宇治橋
f:id:ktr_0731:20170903002141j:plain

あじろぎの道 (1話とかで何度も出てくる)
f:id:ktr_0731:20170903002315j:plain

宇治神社
f:id:ktr_0731:20170903002509j:plain

「滝先生、すごい人だから!バカにしたら許さないから!」の所
f:id:ktr_0731:20170903002622j:plain

観流橋 (滝先生と麗奈の回想 (孤高のトランペットの楽譜を貰ったシーン))
f:id:ktr_0731:20170903002906j:plain

ここからは8話「おまつりトライアングル」のシーンの順番に並んでます 👇
ホワイトバランスを蛍光灯にしたらめっちゃアニメの雰囲気と似てビビった

宇治神社 (久美子と麗奈が県祭りの時に待ち合わせた場所)
f:id:ktr_0731:20170903004839j:plain

宇治上神社 (麗奈が「こっちのほうが好き」と言った神社)
f:id:ktr_0731:20170903005630j:plain
f:id:ktr_0731:20170903005716j:plain

大吉山の入口 (自転車邪魔…)
f:id:ktr_0731:20170903005804j:plain

大吉山展望台
f:id:ktr_0731:20170903010552j:plain
f:id:ktr_0731:20170903010308j:plain
f:id:ktr_0731:20170903010428j:plain

大吉山展望台に異常に人が集まってて、中央の場所が空くのに時間がかかったのでなかなか撮れなかったけど、2枚目は割といい感じに撮れたので嬉しい!

その他、聖地とは関係ないけど取った写真 👇
京阪六地蔵駅
f:id:ktr_0731:20170903011618j:plain

平等院
f:id:ktr_0731:20170903011254j:plain

朝霧橋
f:id:ktr_0731:20170903012004j:plain

宇治川沿いの道
f:id:ktr_0731:20170903012358j:plain

異常にいい感じに撮れたただの石壁
f:id:ktr_0731:20170903012529j:plain

他の観光地に比べて自然に囲まれている印象を受けた
あと、平等院以外あまり観光客が多くないので静かに色んな所を見て回れて良かった 😄

ユーフォ3期お願いします 🙏

近況

ここ最近は大学の期末考査や、アルバイト、インターンの課題が 2 つ、ドラクエ 11 と、死ぬほど忙しかった
今日・明日は休日なのでつかの間の休息みたいな感じになっている

今年の夏は 3 社のインターンに行き、8/14 から 9/30 まで休日以外はすべて埋まっているので大変ではあるけど、充実した夏休みになりそう
インターン先は受けた所すべてに受かったので嬉しかったけど、1 つだけ日程が被っていて、これからのチャンスやインターンに行ける可能性を考えて選んで、泣く泣く辞退したところもあって、そこだけがどうしても心残り…

それぞれのインターンについては追ってブログを書きたいな〜と思う (できれば今年も優勝したい)

9月頭には大学の友達らと京都旅行もするので楽しみ ⛩

最近は趣味コーディングができてないけど、それもできるようにがんばりたい

Go にコントリビュートするまでの手順

最近、ついに Go (golang/go) にコントリビュートしました!
正確にはレビュー中で、レビューが通ってもマージされるのは Go 1.10 なので、だいぶ先は長いですが取り敢えず自分のできることは一通り終わりました。
Go ではレビューシステムに GitHub は使っておらず、代わりに Google が開発した Gerrit を使っています。
普段の GitHub を利用したフローと結構異なっていたので備忘録がてらブログに書いておこうと思います。
なお、この記事は 2017 年 7 月 3 日現在のもので、情報が変わる可能性があるので必ず原文も目を通して下さい。
この記事は大雑把に原文を訳したものだと思ってください。

Contribution Guide - The Go Programming Language

この記事は自分を含めた英語弱者のための補完記事としての立ち位置でお願いします。

詳細

Gerrit について

Go では GitHub は Issue しか使っておらず、Pull Request は Gerrit というシステムで行われています。
Gerrit は Google の開発したソースコードレビューシステムで、全ての変更はここでレビューされてからマージされることになります。

go.googlesource.com のユーザ登録・パスワード生成

まず、go.googlesource.com へアクセスし、Google アカウントでユーザ登録をし、パスワードを生成します。
そうするとコマンドが表示されるので、それをターミナルで実行すると Gerrit を使うための準備が完了します。

Go の Gerrit にユーザ登録をする

次に go-review.googlesource.com にて Gerrit のユーザ登録をします。

CLA に同意する

コントリビュートするには Contributor License Agreement (CLA) に同意する必要があります。
個人なら individual contributor license agreement に目を通して同意します。
団体の場合は別に CLA があるので、原文を参照してください。

git-codereview の導入

Go の Gerrit を操作するためのコマンドラインツールです。もちろん go get でインストールできます。

$ go get -u golang.org/x/review/git-codereview

エイリアスの設定

ここは任意ですが、やっておくとタイピング量が少なくなるのでやっておいた方がいいかもしれません。

[alias]
    change = codereview change
    gofmt = codereview gofmt
    mail = codereview mail
    pending = codereview pending
    submit = codereview submit
    sync = codereview sync

これを ~/.gitconfig に追加し再読み込みします。 以下ではエイリアスを設定しているものとして進めていきます。

コードを書く前に

リポジトリに変更を加える前に、GitHub の Issue にて問題を報告するか、既存の問題を説明するようにしなければいけません。
Go は非常に大きなプロジェクトなので、その提案が正当かどうかレビューされる場合もあります。

Go リポジトリのクローン

GitHub ではなく、go.googlesource.com から取得します。

$ git clone https://go.googlesource.com/go

編集

変更は master ブランチで行います。
checkout して、Git でいう git pull である git sync を行ってリポジトリを最新にします。

$ git checkout master
$ git sync

ファイルを変更し終えたら、ここは普段の Git と同じようにファイルをステージングします。

$ git add <ファイル名>

git rmgit mv も同様に使えます。

編集が終わったら、git commit の代わりに git change を行います。この時に、ローカルにブランチが作成され、そこに変更がコミットされます。
ブランチ名は任意の名前が使えます。また、この操作はサーバへは送信されません。

$ git change <ブランチ名>

これを行うと、$EDITOR に指定したエディタか vi が起動し、コミットメッセージを記述できます。

コミットメッセージは以下のフォーマットに従う必要があります。

  • 一行目にはもっとも変更が加えられているパッケージ名を書き、変更の概要を書き、This change modifies Go to ___ という形式に合うように記述する。
  • 参考文献がある場合は記載する
  • Issue を Fix した場合は、# をプレフィックスにして記載する。

以下が公式のテンプレートです。変更されている可能性もあるので 必ず 原文も確認してください。

math: improve Sin, Cos and Tan precision for very large arguments

The existing implementation has poor numerical properties for
large arguments, so use the McGillicutty algorithm to improve
accuracy above 1e10.

The algorithm is described at http://wikipedia.org/wiki/McGillicutty_Algorithm

Fixes #159

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch foo
# Changes not staged for commit:
#   modified:   editedfile.go
#

書き終わったら保存してエディタを終了します。

さらに編集する必要がある場合は、同じように編集し、ステージングし、git change をします。

Go 1.4

ビルドやテストには Go 1.4 が必要になります。
Go リポジトリ内で release-branch.go1.4 にチェックアウトし、ビルドを行い、$HOME/go1.4 以下に配置します。

$ git checkout release-branch.go1.4
$ cd src/
$ ./make.bash
$ mv ../bin ~/go1.4/bin

テスト

必要に応じてテストを書く必要があります。
また、必ずレビューを受ける前に以下のコマンドを実行してテストが成功することを確認します。

$ cd go/src
$ ./all.bash

変更の送信

全ての変更が完了したらレビューのため、Gerrit へ送信します。 以下のコマンドを実行するだけです。

$ git mail

そうすると、Gerrit に反映されるので確認します。
しばらく経つとレビュアーがレビューを行ってくれるので待ちます。
あとは通常の PR と同じ流れになるかと思います。

CONTRIBUTORS

混乱を防ぐため、各ファイルにはコントリビュータの名前等は書かないことになっています。
代わりにコミットが取り込まれると、 CONTRIBUTERS ファイルに自動で名前が記載されます。

まとめ

ここでは基本のフローのみを紹介していたため、他のことについては扱っていません。もし他にわからないことがあった場合、原文を読めばだいたい乗っているかと思います。

感想

当然ではあるけども、レビュアーに Rob Pike 先生や Bradfitz などの超有名人がいて、恐れ多い… 😇
今回コントリビュートした内容はとても小さいものだけど、継続的に Go にコントリビュートできたらいいなぁと思う。