目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

Github APIを使おう

この記事は、モバイルファクトリー Advent Calendar 2015 4日目の記事です

今日は、Github APIの話です。

Githubの管理作業は他のWebサービスと同じく基本Webコンソールでできます。 ただ、Organizationとかを管理してる場合、ある程度以上規模が大きくなると、 定型的な管理作業が増えて、Webでぽちぽちやるには煩雑でつらくなってきます。

ここで怠惰エンジニア*1はどうにかこの定型作業を自動化/スクリプト化できないかなと考え始めます。 幸い、GithubにはAPIがあるので、これを利用して要件に合わせて、実装することができます。

ドキュメントは以下の場所にあるので、各APIの使い方などはそちらを参照してください。

apiアクセスを投げる

publicな情報を取得するには普通にcurlでGET発行するだけで、取得出来ます。

curl https://api.github.com/users/masasuzu/repos

が、これだけでは、privateな情報にアクセスできません。ので、Basic認証をしてアクセスをします。

curl -u ${USER}:${PASSWORD} https://api.github.com/orgs/some_privete/repos

ただ、この場合、このアカウントで出来ることが全て実行出来てしまうので、 下記のリンクからアクセストークンを発行して、権限を絞ってAPIにアクセスするのが望ましいです。 アクセストークンは作成時にしか見れないので、ちゃんと書き留めておくようにしましょう。

アクセストークンを使用した場合、下記の3つの方法で認証出来ます。

curl -u :${ACCESS_TOKEN} https://api.github.com/orgs/some_privete/repos
curl -H 'Authorization: token ${ACCESS_TOKEN}' https://api.github.com/orgs/some_privete/repos
curl 'https://api.github.com/orgs/some_private/repos?access_token=${ACCESS_TOKEN}'

ドキュメントに各API発行に必要なscope(権限)が書いてあるので必要なscopeだけ付与してあげると良いです。

perlでの選択肢

今までで、APIアクセスする手段を得ることはできましたが、シェルスクリプトで処理を組み立てるのは、 無謀なので、使い慣れてるプログラミング言語で実装したいところです。 当社ではPerlを使い慣れてるエンジニアが多いので、ここではPerlのクライアントを紹介します。 現在のところ以下の2つの選択肢があります。

私はPithubを使っています。使い始めた時期においてPithubの方が更新されてそうだったからです。 が、今見るとNet::Githubも更新されてるように見えます。

他の言語での選択肢

特にプログラミング言語にこだわりが無いのであれば、githubがメンテナンスしてるoctokitを使うと良いと思います。 RubyとObjective C、.Netに対応してます。たぶん鉄板だと思います。

(しかし、octokitのこのサンライズというかバンダイに怒られそうなデザインは大丈夫なのでしょうか?

まとめ

  • 煩雑で定型的な作業はGithub APIで自動化すると良い
  • Privateな情報の操作はアクセストークンを発行してAPIを発行する
  • PerlにはPithubとNet::Githubのクライアントライブラリがある
  • こだわりがなければ、クライアントはoctokit使うと良い

明日は、 @mihyaeru21 さんです。iOS回りの面白いエントリが見れそうです。

*1:プログラマの3大美徳の1つ

#gotandapm Gotanda.pm Perl Technology Conference #6 でLTしてきました。

gotanda-pm.connpass.com

Gotanda.pmでLTしてきました。

今回のテーマは障碍でした。

半分ネタのトークです。

JSTQB Foundation Level のシラバスに載っているソフトウェアテストの7原則をもじったやつです。

JSTQB認定テスト技術者資格-シラバス(学習事項)・用語集-

言ってみれば、サービスに対して継続的にテストするのが監視なのでテストに対する原則が監視に対しても言えるんじゃないかなーという軽い思いつきから生まれました。 無理矢理な部分もありましたが、わりかし当てはまってる部分もあったのではないかと思いました。

トーク中美味しいにおいがしてきてつらかったです。(このエントリは懇親会の前に書かれてます)

ガイアックスさん会場提供ありがとうございました。

#yapcasia YAPC::Asia 2015でボランティアスタッフしてきた

今年のYAPC::Asiaは終わった。つつがなく終わりました。

f:id:masasuz:20150822175350j:plain

過去のエントリを見直すと2011、2012年は書くのサボっていたみたいでした。 私のYAPC::Asia初参加は2010年で6回目の参加でした。

masasuzu.hatenablog.jp masasuzu.hatenablog.jp masasuzu.hatenablog.jp

今年のYAPCとの関わり方は個人スポンサー+ボランティアスタッフとして参加しました。 個人スポンサーとしては4年目、ボランティアスタッフとしては3年目でした。

今年のYAPCもすごい楽しかったです。 特にここ1,2年でPerl関係の人たちの知り合いがすごい増えたので、いろんな人と話ができてすごい楽しかったです。 トークの方は例年スタッフ業をやっていると聞けないので、(会場にいてもスタッフのお仕事に意識が行くので内容を聞き取れてないことが多い)、動画が上がったら気になっていたトークを追いたいと思います。

さて、だいたい6年前からWebで、Perlでお仕事するようになってからYAPCにはいろいろなものをもらってきました。 だからこそ、ボランティアスタッフをやったり、個人スポンサーになって自分がもらったものを間接的に他の人に与えられたらいいなと思ってやってきました。 自分がもらったものを他の人も受け取ってもらえたらなら良いなと思います。

YAPC::Asiaはいったん終わります。それ自体いろいろ思うところがありますし、残念ではあります。 YAPC::Asiaが無くなっても地域PMなどのPerlのコミュニティ自体が無くなるわけではないので私も細々とコミュニティ活動していきます。 ただ、全国的にPerlな人が集まってくるイベントが今のところ来年無いのは寂しいところです。 もしどこかで動きがあるならお手伝いさせていただければなと思います。

YAPC::Asiaお疲れ様でした。

(初日の懇親会の後の二次会でいろんな人に迷惑かけてしまったようなのでものすごく反省しています。すみません。お酒気を付けます。。。

会期中のつぶやきいくつか

#kichijojipm 吉祥寺.pmでLTしてきた

atnd.org

今回はPerlPerl以外ということで、Perlの外の世界をつないでるもので一番最初に思いついたのがテンプレートエンジンだったので今回の発表になりました。

自分のテンプレートの利用シーンは設定ファイルの自動生成ですね。 テンプレートがあることで手作業で設定ファイルをいじる必要が基本的にはないので、手作業に起因ミスがないのが良いですよね。

そのほかくりかえしの記述が必要なものもテンプレート使うと便利な場面が多いと思います。

前回のLTが長すぎたので、真姫進行で行ったら、巻きすぎてしまいました。時間配分難しい。

懇親会のお店はおしゃれな感じでさすが吉祥寺という感じでした。五反田とは違う。

他の人のスライドはこちらページからたどれると思います。

kichijojipm.hatenablog.com

今回の吉祥寺.pmも楽しかったです。次回も参加したいです。

余談1

今回のKeynoteAzusa Colorsを元にスライドを作りました。 だいぶ良い感じにできました。ありがたいです。 茜屋さんのイメージカラーのパープルを基調にしています。

http://memo.sanographix.net/post/113681262780
memo.sanographix.net

余談2

LTの途中で宣伝してましたが、五反田のモバイルファクトリーさんで7/31にCrystalの勉強会やるしいですよ。

crystal.connpass.com

Gotandaは今技術的に熱い街です。そのほかGotanda.pmや五反田Perlみたいな勉強会も様々行われてます。

2015年第二 四半期をふりかえる

7月にとうとうなりました。 ざっくりふり返ります。


お仕事

mod_perl to PSGI/Plack

この四半期のメインタスクでした。弊社2事業部あるんですが、そのうちの片方の事業部のmod_perlアプリをPSGI/Plack化しました。 後は事業部の人がちゃんとテストして、本番反映するだけです。

もう一個の事業部のmod_perlアプリケーションは次の四半期に取りかかる予定です。

雑感としては、mod_perl特有の機能はほぼ使ってないので、そんなに辛くは無かったです。 どちらかというと、使っているモジュールが古すぎたり、SledgeのPlugin地獄だったりしてアプリの実装の方でちょこちょこはまることが多かったです。

このあたりの話です。

masasuzu.hatenablog.jp

Gitbucket

地味にアップデートが出る度に追従してました。 しかしながら、そこそこでかいレポジトリをGitbucketで管理するのはだいぶつらいことが見えてきました。 まず、レポジトリブラウザが鬼のように重い。1日数10コミットするようなレポジトリだとまともに使えないので、ちょっと移行先を考えてます。

Elasticsearch + Kibana4

Kibana4入れました。Kibana3もまだ稼働中ですが、Kibana4で十分かなという気分です。 Kibana4はすごい便利なので、そのあたりの話もどこかで一度したいです。

開発環境の改善

OrePAN2::Serverを廃止して、社内モジュールは静的サーバ置いたり、一つサーバでマルチユーザが同居するようなレガシーな開発環境の改善とかもろもろやってました。 この辺もあとでエントリ書きたいところ。

新卒技術者のメンタリング

新卒技術者に対して仕事外で困ってる事とかのお悩みの相談乗ったり、成長を促すお手伝いをしたいたりします。

会社としてもメンター制度できたばっかりで、組織的にも自分的にもいろいろ手探り感があるのは確かです。 自分が見ている人はかなり優秀で日々成長が見て取れるので、そこをさらに促せるようにしていけたらと思います。

書いた記事

こう見るとあまりエントリ残してないですね。もう少し書きたいところ。

4月

5月

6月

次の四半期

お仕事的にはもう一個の事業部のPSGI/Plack化と開発環境の改善をメインにやってくと思います。 ここ最近ちょっといろいろ腹に貯めすぎなので、もう少し心にゆとりをもっていけたらなとは思いまする。