職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

IngressのSojournerが途絶えた

凡ミスにより、タイトルの通りの状況になったので、報告致します。

Ingress やってない人向けにも一応解説

  • Ingressとは?:位置情報を使った陣取りゲームです。AndroidiOSで遊べます。https://www.ingress.com/
  • Sojournerとは?:Ingress上で取れる行動のうちのひとつ「ハック」(採掘)を、連続して何日間続けることができたか?で表彰されるものです。15日で銅メダル、30日で銀メダル、60日で金メダル、180日でプラチナ、360日でブラック。

現状

f:id:t_motooka:20160124083254p:plain
自分のプロフィール画面です。(累積の実績ではなく)現状を示す「NOW」のタブ、画面最下部の「Current Hacking Streak」が 0days になっていて、Sojournerが途絶えていることがわかります。
322days までは行ったのに。

なぜ途絶えさせてしまったのか?

土曜日。
朝起きて、ちょっとプログラム書いてから午後の勉強会に出席、夜からの懇親会にも出席。そして帰宅。
そんな一日を過ごしていたのですが、勉強会に行くまでの間は遅刻しかかっていたため活動できず。帰宅中は軽度の腹痛があったため活動できず。
GPS状態によっては自宅から届くポータルがあるものの、届くまで待っている間に寝落ち。

Sojournerを今まで続けてくる中での思い出話

2015年3月上旬にSojournerの制度が開始されました。筆者は当然のようにIngress活動を続けていたので360日くらい楽勝だ!と思っていました。ところが、322日に達するまでの間には危機も何回か訪れました。

45日目くらい

大病を患いました。大病とは言っても、仕事を5日間くらい休む程度のものです。当時はまだ自宅から届くポータルも無く、家から出るのも一苦労!!という状態でしたが、食料調達活動のついでに外出することはできたので、そのタイミングで活動してました。自宅から100mくらいのところにポータルがあったので、それに助けられた形です。

100日目くらい

2015年5月末に任天堂Wii U のゲーム「Splatoon」が発売されました。同業者や同僚の多くがイカになっていく中、筆者も少し遅れてSplatoonを購入しました。
何かを継続するにあたって、その対象物から別の物へと興味が移ってしまうということは非常に強力な敵です。大病に匹敵するほどのものなのです。
こういうゲームを購入すると外出しなくなるのですが、良くも悪くも、平日は仕事で、週末も仕事や音楽活動などで強制的に外出させられるのでSojournerは続きました。
そういえば、Splatoonが発売された頃から、Ingressのプレイヤー(エージェント)が減ったような気がします。みんなイカになってたんですかね?

110日目くらい

GPS状態によっては自宅から届くかもしれないポータル、が生えました。実際の自宅からポータルまでの距離はちょうど40mくらいです。
これで、再度大病を患っても大丈夫!という状態になりました。(もちろん病気になったら困るのですがw)

180日目

ついにプラチナメダルを入手することになりました。
そのときに、ここまでの出来事をブログ記事にしようかと思いましたが、忙殺されており断念。

それ以降

難なく続いていたはずなのですが、322日目にしてご覧の通りの状態です。


これからの動き

「毎日ハック」にとらわれずにIngressの世界を楽しみ続けていきたいと思います。

他に「継続」が表彰されるものの例

参考までに。

  • StackOverflow : 連続ログインで表彰されます。筆者は Enthusiast というタイトルを獲得しています。30日連続ログイン。
  • GitHub : 連続して貢献(コミット、issue報告など)した日数が掲載されます。

さいごに

何かを毎日継続するというのは、本当に大変なことなのです。

pie face in Japan

オーストラリアに住んでいた頃に大変お世話になっていた飲食店 pie face が日本に上陸したということで、いつか行きたいとずっと思っていた。ついに今日その願いが叶ったのでここで報告したい。

本家Webサイト(オーストラリア) http://pieface.com.au/

日本国内の店舗

日本では、ミスタードーナッツなどを運営しているダスキンさんが運営されている。
現時点では、日本国内の店舗は川崎と渋谷の2店舗のみとなっている。
ダスキンさんのWebサイト http://www.duskin.co.jp/service/pieface/

今回は渋谷の店舗に行ってきた。外観はこんな感じ。

このロゴが最高である。

商品など

VB(ビクトリアビター)


これはオーストラリアのビールの一つであり、日本国内でも比較的入手し易いものである。
※Australia国内の pie face 店舗では、酒類は販売していなかったはず。

ポトフ


向こうにこんな商品あったっけ?(記憶に無い)
美味しかった。

ポトフの容器


やっぱり、最高のロゴである。

紙ナプキン


持って帰りたい。

パイの包装紙


主力商品である、パイ本体


この、パイに書いてある顔も良い。
もちろん味も良い。
このパイは Classic Mince Beef である。詳しくは前述のダスキンさんのサイトから、商品情報を見ると良い。

マグカップ


マグカップも売っていたので買った。1000円ちょっとくらい。大と小の二つのサイズがあり、こちらは大の方。
これは部屋にあるだけで楽しい気分になれそう。

さいごに

超オススメのお店であるから、このブログの読者の皆様方も、渋谷や川崎を訪れる際は立ち寄ってみると良い。
なお、川崎の方は持ち帰りのみらしいので、注意するべし。

退け、ユーフォニアム。

世間では「響け!ユーフォニアム」の人気が非常に盛り上がり、しかも継続している状況でございますが、そんな中、ユーフォニアム奏者を引退したのでここに記しておきたいと思います。退職エントリの変形版だと思ってもらえれば幸いです。
2015年にあった出来事は2015年のうちに書いておきたいと思いつつも、諸々の進捗がダメだったので今まで書けずにいました。大晦日に投稿するあたり、進捗ダメさ加減は上手く伝わることでしょう。

ユーフォニアムってどんな楽器?

ここで変な説明を書くよりも Wikipediaの記事 を見てもらう方が良いでしょう。
無理して手短に言うならば、中音域の金管楽器の一つ、と説明することができます。
英語では Euphonium と書き、Euph と略して書くこともあります。日本語だと「ユーフォ」と略したりします。ユーフォニウムと発音/表記する人も居ます。

どんな楽器を吹いていたのか?

YAMAHA YEP-621S を吹いていました。この商品ページには「第6倍音のFをはじめとする正確な音程」とありますが本当にその通りで、こんなに安価な楽器でありながらも非常に吹き易く、音色も音量も申し分無い楽器です。第6倍音のF(tuning-B♭の完全五度上)、本当に良かったです。第12倍音のF(high-B♭の完全五度上)も綺麗に鳴る、最高の楽器でした。
世間的にはコンペンセイティング・システムを備えた重装備の楽器で溢れかえっていますが、こういうシンプルな装備の楽器も良いものです。

どんな曲を吹いていたのか?

金管バンドの中のユーフォニアム奏者を務めていたので金管バンドの曲ばかりですが、featured-soloだとこのような曲を演奏しました。

  • Carrickfergus
  • Pantomime
  • Summer Isles

やっぱりPantomimeは難しかったですね。参考演奏はこちら → https://youtu.be/QQbpqOdoluI

どれくらいの期間、吹いていたのか?

2013年10月から2015年9月までの約2年間、演奏していました。それ以前にEuphoniumを吹いていたのは1997年から1998年の2年間なので、実に15年近いブランクを経ての演奏でした。その15年の間もトランペット/コルネットを吹いたりトロンボーンを吹いたりしてたので、復帰直後もそんなに戸惑うこと無く取り組むことができました。

なぜ引退したのか?

身体的な事情があって、ユーフォニアムの演奏を続けることが難しくなってしまいました。不可能という訳ではないのですが、そんな苦労をするくらいなら演奏活動自体全部やめてしまうわ!という状況だったので、まずはユーフォニアム奏者の席から退くことにしました。

アニメで人気出たんだし、ユーフォニアム演奏してたらチヤホヤされるんじゃないの?

ただしイケメンに限る

これから何をするのか?

トランペットとコルネットの演奏、あとは編曲活動に専念します。
専念しますとは言いつつも、これらの活動は収入を産むものではなくむしろ支出する一方であるので、収入のある本業の方がずっと大事です。

また10年くらい経ったらユーフォニアム奏者として復帰するかもしれません。手元の YEP-621S はそれまでお蔵入りです。


それでは皆さん、よいお年を!

マスター・オブ・円弧 #SVG

この記事は SVG Advent Calendar 2015 の25日目の記事です。
www.adventar.org
Advent Calendar の最後を締めくくるのに相応しい内容かどうかはわかりませんが、皆さんきっとSVGを描きたくなるはずです。

SVGとは?

SVGとは画像ファイルの形式の一つで、基本的にはベクター画像(引き伸ばしても荒れないアレ)です。画像なんだけど中身はXML、すなわちテキストファイルになっている、不思議で便利な画像です。いまここで初めてSVGの名前を聞いたという皆さんは、上記の Advent Calendar に掲載されている記事を読んだり、Wikipediaの記事 を読むと良いでしょう。

SVG手描きとは?

前述の通りSVGXMLであり、テキストです。
テキストであるということは、テキストエディタで作成したり編集したりすることが理論上可能であるということが言えます。
理論上可能なんだったら実際にやろうぜ!と考えるのが人間というものです。そういう背景から近年盛り上がってきているのが「SVG手描き」という趣味になります。テキストエディタで描きましょう。

(注意)一般的には、Adobe Illustrator などのツールで描いた画像をSVG形式で出力することが多いはずです。

こんな画像だって、SVGならテキストエディタでサクッと描けます。

ソースはこんな感じです。
これをコピーしてテキストエディタに貼り付け、拡張子「.svg」で保存させてからブラウザに読み込ませると同じように描画されるはずです。

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="480px" height="360px" viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg" version="1.1">
	<rect fill="white" stroke="black" stroke-width="2" x="0" y="0" width="480" height="360"/>
	<polygon fill="red" stroke="none" points="40,40 40,320 440,320 440,40 400,40 400,280 80,280 80,40"/>
</svg>

rect 要素が外枠の黒い細い線を、 polygon 要素が「凹」の字を描いています。
※別に筆者が凹んでいる訳ではないですからね?

慣れてくると、公式の SVG 1.1 の仕様 を見ながらであれば5分以内に上記の図形を描くことができるようになります。テキストエディタで。

path要素

SVGでは、さまざまな図形がサポートされており、簡単に図形を描くことができます。
例えば以下のような図形があります。

  • rect : 長方形。左上座標と幅と高さを指定して描く。
  • circle : 円(楕円ではない真円)。中心座標と半径を指定して描く。
  • ellipse : 楕円。中心座標とx方向半径、y方向半径とを指定して描く。(回転はアフィン変換で実現)
  • line : 線分。始点と終点を指定して描く。
  • polyline : 線分をつなぎあわせたもの。カクカク曲がる。
  • polygon : 多角形。各頂点の座標を指定して描く。

これらは非常に便利であり、かつ、後からSVGのソースを見たときに意図が分かりやすいため、非常に重宝します。これらの要素を使って描くことができるのであれば、ぜひそうするべきです。
ところが、これらの図形では表現できないものというのは数多く存在します。
そういった図形は、path要素 を使って描くことになります。
画像を描くプログラムを書いたことがある人であればわかるかもしれませんが、path要素で線を描くときは「ペン」の考え方が根底にあります。ペンは現在の座標という状態を持ちます。現在地点から目的地までの経路をどのように線を引くのか、というのをコマンドで指定していきます。便利ですよ〜。

曲線あれこれ

path 要素の d 属性で使うことができるコマンドには、以下のようなものがあります。
※ここでは大文字のコマンドを紹介していますが、それぞれのコマンドには小文字バージョンがあり、それは現在のペンの位置からの相対座標を指定することで描画させるものになります。

  • M : 線を引かずにペンを指定した座標のところへ移動させる
  • Z : 開始地点までの線分を引く(閉じた領域を作る)
  • L : 指定した座標までの線分を引く
  • H : 指定したx座標までの水平線を引く
  • V : 指定したy座標までの垂直な線を引く
  • C : 3次のベジェ曲線を引く
  • S : 3次のベジェ曲線を引くが、1個目の制御点の座標は直前に引いたベジェ曲線のものに応じる(本当はきちんとした定義があるので、公式ドキュメントをご覧ください)。
  • Q : 2次のベジェ曲線を引く
  • T : 2次のベジェ曲線を引くが、制御点の座標は直前に引いたベジェ曲線のものに応じる。
  • A : 円弧を描く

線分を描くコマンドは単純明快ですし、2種類のベジェ曲線も制御点が線に与える影響のことを知っていれば描くことが可能です。注意するのは目的地の座標よりも制御点の座標を先に書くということくらいです。
一方で、円弧はそうは行きません。

円弧を描く

円弧を描くときにどのようなパラメータが必要なのか挙げてみましょう。

  • rx : x方向の半径
  • ry : y方向の半径
  • x-axis-rotation : x軸からの回転角。0だと回転しない。
  • large-arc-flag : 長い方の円弧を描くなら1。短い方なら0。
  • sweep-flag : 時計回りに円弧を描くなら1。反時計回りにするなら0。
  • x : 目的地のx座標
  • y : 目的地のy座標

恐らく、「なにそれ」という感想を抱いた方も多いことでしょう。
large-arc-flag と sweep-flag の詳細については、言葉でいろいろ見るよりも図示されたものを見る方がずっと効率が良さそうなので、図を貼っておきます。


Example arcs02 - arc options in paths Pictures showing the result of setting large-arc-flag and sweep-flag to the four possible combinations of 0 and 1. Arc start Arc end large-arc-flag=0 sweep-flag=0 large-arc-flag=0 sweep-flag=1 large-arc-flag=1 sweep-flag=0 large-arc-flag=1 sweep-flag=1
origin : Paths – SVG 1.1 (Second Edition)
Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved.


一方、普段私たちが円弧を描くときは、次のようなものを指定することを考えると思います。

  • 中心の座標
  • x, y それぞれの方向の半径
  • 開始角度と終了角度

確かにこちらの組み合わせの方が円弧を描く上で便利そうに見えますが、前述の通り、path要素はペンの概念のもとで描画させる仕組みになっていますので、開始座標は初めから指定されているのと、終点座標はズバリその値を明示的に指定した方が後続の線を引く上で有利なのです。だから、 rx, ry, x-axis-rotation, などの指定をする方が良いのです。

一通り背景を理解したところで、path 要素を使って円弧を描いてみましょう!
えっ、描けない?
描けない人の大多数は、パラメータの順番を暗記できていません。再度掲載しますので覚えてください!

  • rx : x方向の半径
  • ry : y方向の半径
  • x-axis-rotation : x軸からの回転角。0だと回転しない。
  • large-arc-flag : 長い方の円弧を描くなら1。短い方なら0。
  • sweep-flag : 時計回りに円弧を描くなら1。反時計回りにするなら0。
  • x : 目的地のx座標
  • y : 目的地のy座標


タイトルとして「マスター・オブ・円弧」を掲げましたが、マスターするには結局は単純な記憶が必要でした。
でも、こういう指定をすることができれば、円弧が通る道筋は一意に定まる、というイメージを抱くことができたのではないでしょうか?
あとは練習あるのみです。皆さんもテキストエディタで円弧のSVG図形を描き、人生を豊かにしていって下さい。

それではSVGファンの皆様、よいお年を!!

関西モバイルアプリ研究会 #関モバ 第9回 に参加してきた

関西モバイルアプリ研究会(通称 関モバ) #9 に参加してきました。
kanmoba.connpass.com

前回 に続いて2回目の参加で、今回は発表してきました。

会場への道のり

大阪市内から京都市内へJR京都線の新快速で移動していたのですが…


という事情で運転見合わせにハマりました。
偶然にも停車していたのが新大阪駅だったため、こんな大技を使うことに。
f:id:t_motooka:20151223140550j:plain
新大阪・京都間の新幹線の自由席特急券は(時期によるかもしれませんが)860円です。乗車券は別。どうしてもってときは積極的に使っていきましょう。結果的には、関モバの会場である はてなさん のオフィスには10分遅れくらいで到着することができました。

なお、新大阪駅の在来線改札内で切符を買おうとすると、新大阪まで来るのに使ってた乗車券が必要になるため、複数人数の自由席特急券+乗車券を買おうとすると非常に手間取ります。3人以上の大人数で移動するときは、一旦新大阪駅で改札外に出てから切符を買うと、スムーズな行程変更ができるかもしれません。

自分が発表した内容

サンプルコード

motooka/ColorBar · GitHub

どんな発表だったのか

iOS Simulator が表示している「色」がどのようにして表示されているのかを示す発表をしました。iOSアプリの画面が意図しない色で表示されてしまうトラブルを防いだり原因究明したりするのに役に立つことができれば幸いです。
サンプルコードは、 UITableViewの static cells で、背景を適当な色で塗り潰して表示させるだけのアプリです。StoryBoard上の static cells の表示と iOS Simulator 上の表示を見比べながら、システム環境設定のディスプレイ設定で、カラープロファイルを変えてみると、iOS Simulator 上の色は変わらずにStoryBoard上の色だけ変わるという現象が起きます。
これが何を意味するのか、といった推測や議論もありました。

他の皆さんの発表のうち、(酒などに消されずに)記憶に残っているもの

いくつかご紹介しておきましょう。

  • Swift で、 struct を使うべきなのか class を使うべきなのかの判断 参考(公式ドキュメント) The Swift Programming Language (Swift 2.1): Classes and Structures
  • Keynote での画像作成:これは大盛り上がり! いろんな画像が
  • PhotoKit を使う上での注意点と、古くからある Assets Library の使い分け。Assets Library にしかできないことはあるので、特性を考えて選択したい。
  • FastlaneAndroid開発に応用する事例
  • 生物の色覚の話と、人間の様々なタイプの色覚について。
  • iOSアプリのバージョン番号を決める上でのベストプラクティス:リジェクト時のこともきちんと考えよう!
  • iOSアプリの起動にかかる時間を計測する方法(詳しくはメモれてないけど、info.plist か何かにおまじないを書いたら取れるっぽい?)
  • Web API にまつわる問題点あれこれ
  • Reveal でデザインデバッグ。AppCodeとの組み合わせだと上手く運用できそう?
  • Androidアプリでの Now on Tap の動きについて。

感想

色覚についての にわタコさん の発表の直後に色についての発表ができて、色の話を続けてできたのは本当に良かったです。

さいごに

会場を提供してくださっている はてなさん に感謝!!!