君のLGTMは。


こちらは[フロムスクラッチ Advent Calendar 2017](https://qiita.com/advent-calendar/2017/fromscratch)の2日目の記事です。

## はじめに
ソフトウェア開発のためにGitHubを利用される開発者の皆さんも多いかと思います。自身も現職から本格的にソフトウェア開発でGitHubを利用しています。
またそれに伴いGitHub上でソースコードレビューすることも多くなってきました。今回はそんなソースコードレビューをするに当たって必要不可欠なLGTMについて。

## LGTMとは
レビュー時にはお馴染みのLGTMは"Looks Good To Me"の略となります。これはレビューワーがレビューを行なって際に問題がなかった場合には「自分としては問題ありませんよ」ということを表すために用いられる表現となります。
LGTM以外にも以下の英略語がGitHub上では見かけられます。

- **FYI** ("For Your Information”)
 ビジネス用語としても馴染み深い方も多いと思いますが、「参考までに」という意味になります。

- **AFAIK** ("As Far As I Know")
 こちらは「私の知る限りでは」という意味になります。質問などに対して、自分の知ってることとして答える時に用いられます。

- **TBD** ("To be determined")
 今は仕様などがはっきり決まっていない時など、「あとで決める」という意味で用いられます。

この他にもさまざまな英語略が存在するので、興味ある方は色々と調べて見ると面白いかもしれませんね。
このようにGitHub場ではさまざまな英語略の表現が用いられますが、弊社では特に最初に紹介したLGTMがレビューワーを中心に使われます。

## さまざまなLGTM

上記でお伝えしたように、LGTMはレビューワーがレビューを行い、特に問題ない時にコメントとして記述します。
著者も以下のように、日々の業務としてレビューを行なった際に「LGTM」をコメントとして残すことが多いです。

<img width="778" alt="スクリーンショット 2017-12-02 17.02.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/218189/a13dc645-440f-660e-9338-f2a259fcc8f7.png">

しかし上記のようなコメントだけのLGTMでは飽き足らず、画像を貼り付けてホコッリしたり癒されたりしようという文化が弊社にも存在します。
LGTM画像は [LGTM.in](https://lgtm.in/) や、[GIPHY](https://giphy.com/) などが有名であり、LGTMをする際にコピペして利用することができます。

## LGTM画像の作成

今回はそんなLGTM画像を自分で作成することを目的にプログラムしました(さまざまなLGTM画像ジェネレータサイトがあることはおいといて...)。

まずLGTM画像の元となる画像として自身が日頃サムネイル画像として用いている以下の画像を利用しました(札幌雪祭りでとったムックの画像)。

![69.jpg](https://qiita-image-store.s3.amazonaws.com/0/218189/0eb64e2f-db74-8bc2-5711-c84c5acb2a3f.jpeg)

次にPythonとPILを用いて、ちょこっとプログラム...

```py:gen_lgtm.py
# coding: utf-8

import sys 
import optparse
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

FONT_DEFAULT = "./Baloo-Regular.ttf"
STRING_DEFAULT = "LGTM!"
OUT_DEFAULT = 'LGTM.jpeg'

parser = optparse.OptionParser()
parser.add_option('-s', action="store", default=60, type="int")
parser.add_option('-x', action="store", default=10, type="int")
parser.add_option('-y', action="store", default=10, type="int") 
parser.add_option('-c', action="store", default="#FFFFFF")
parser.add_option('-f', action="store", default=FONT_DEFAULT)
parser.add_option('-t', action="store", default=STRING_DEFAULT)
parser.add_option('-o', action="store", default=OUT_DEFAULT)

def main():
  # コマンドライン引数の取得
  options, args = parser.parse_args()
  fonr_size = options.s
  x = options.x
  y = options.y
  color = options.c
  font = options.f
  text = options.t
  out = options.o

  # 画像の読み込み
  img = Image.open(args[0])
  print('Image Size :', img.size)
  draw = ImageDraw.Draw(img)
  font = ImageFont.truetype(font, fonr_size, encoding='utf-8')
  draw.text((x,y), text, font=font, fill=color)
  img.save(out)

if __name__ == "__main__":
  main();
```

コマンドライン引数で色々とパラメータを調整して、出来上がったLGTM画像がこちら。

![LGTM.jpeg](https://qiita-image-store.s3.amazonaws.com/0/218189/5e85c5c1-9c42-be59-c942-d1dce4b59158.jpeg)

早速使ってみました...

<img width="776" alt="スクリーンショット 2017-12-02 17.45.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/218189/a2434ffc-bc34-e8fa-8c23-f7fec668c622.png">

## まとめ

このように自分でつくったLGTM画像を利用することによって、レビューも少しだけ楽しくなるかもしれません(LGTMが目的となり本来のレビューがおろそかになってはいけませんが)。

皆さんも自身で作成したLGTM画像で素敵なLGTMライフを過ごしてはいかがでしょうか？

明日の[フロムスクラッチ Advent Calendar 2017](https://qiita.com/advent-calendar/2017/fromscratch)の3日目は@S_Haraguchiさんです。