2017年10月 月報

月初はサンフランシスコだったので、気付いたらもう16日です。

食べたもの

f:id:punchdrunker:20171116212351j:plain

銀座のお鮨屋さん、「あらい」のまぐろです。食べログ4.4って何なんだ。ランチで2万越えです。散財!

f:id:punchdrunker:20171116212406j:plain

沖縄に2泊しました。国際通り近くのなかむら家。島らっきょう、ゴーヤチャンプルー泡盛

f:id:punchdrunker:20171116212423j:plain

寒くなってきたので数年ぶりの新宿富久でおでん。お店のスタッフはもう老夫婦じゃなくて、お姉さん二人で回してました。

課長島耕作から読み始めて会長島耕作まで読みました。

映画

Amazonビデオでブレードランナーを見てから、劇場でブレードランナー2049を見ました。完璧です。

イベント

f:id:punchdrunker:20171116213521j:plain

Dev Fest Tokyo 2017のボタンティアスタッフやりました。司会係のはずだったけど、直前に欠員が出たので初めてカメラマンをやりました。勉強になったので、翌週に開催された、カンファレンスカメラマンカンファレンスにも参加しました。

仕事

新しくrailsリポジトリ立てたり、ops worksのAPI叩いたり、rubymineデビューしたりしました。定期的に開発環境を見直すの楽しいですね。

KotlinConf2017&droidconSF2017に行ってきました

11/1から、サンフランシスコでKotlinConf2017と.droidconSF2017が立て続けに開催されたので、1週間ほどサンフランシスコに行ってきました。写真はKotlinConf初日のパーティーのもので、左から自分、友達のデプロイゲートCEO藤崎さん、Jet Brains CEOのMax、GoogleAndroid事業のトップのStephという謎の組み合わせです。

KotlinConf

f:id:punchdrunker:20171110013511j:plain

 

このパーティーでは自分と共にDroidKaigi理事である藤崎さんと一緒にネットワーキングやっていくぞ!!と息巻いて、空気を読まずに色々な人々に話し掛けていき、最終的にGoogle 幹部のStephにSay hi!しました。「DroidKaigiの為に何かGoogleに出来る事がありますか?」と聞かれたので、「あんまDroidKaigi関係ないけど、Pixel2を日本でも売って欲しいです!!僕らが使える最新のリファレンス端末はNexus6Pなんですよ!!」とお願いしたら、そこまでとは知らなかったようで、驚いた様子でスマホにメモをしてくれてました。まあ日本での販売は難しいかもしれないけれど、開発者の苦悩は伝わった気がします。

 

あとJetBrainsのIDE最高ですよね。先週からRubyMineデビューして、ほんとすごいなと思いました。

 

f:id:punchdrunker:20171110014551j:plain

肝心の内容はさすが、オフィシャルイベントだけあって、Jet BrainsとGoogleの著名人が名を連ね、Kotlinやっていくぞ、という気迫に満ちた2日間でした。会場は海沿いにあり、ちょっと寒かったかな。。。あとwifiがほぼ繋がらなくて不評でした。でも音響とかプレゼンの設備はしっかりしていました。

f:id:punchdrunker:20171110084715j:plain

こちらはkeynoteで再生された開発者インタビュー動画でのJake。もちろん当日会場に本人もいました。

f:id:punchdrunker:20171110084331j:plain

また、企業ブースも豪華でTシャツ配ったり、Kotlin in action無料配布してくれたりと、ノベルティも大変充実していました。Tシャツに光るヨーヨー、ウォーターボトルなど。あとピンバッジやステッカーもたくさん貰えました。

 

droidconSF 

f:id:punchdrunker:20171110015037j:plain

一方のdroidconSFはカリフォルニア大学サンフランシスコ校のキャンパス内での開催です。ミッションベイの平和なエリアでの開催。建物もしっかりしていて、wifiも快適でした。keynoteは chet hasseとromain guyのいつものコント風セッション。歴代Androidの紹介をジョークたっぷりでお届けする内容でした。

Kotlin Confとは違って、Androidに特化しているので、最新ライブラリ情報やUberlyftやsquareなどのアプリ開発事例の紹介も目立ち、アメリカも大変なんだな〜、という感じでした。

f:id:punchdrunker:20171110085524j:plain

ハンズオンも用意されていて、Android Thingsのハンズオンでは受講者全員にstarter kitが無料で配布されました。カメラ、wifi、などのモジュールも付属して、1つ100ドルくらいするやつです。太っ腹。

f:id:punchdrunker:20171110085126j:plain

また企業ブースには様々な有名企業が出展していて、facebookが最も豪華だったかもしれません。

f:id:punchdrunker:20171110085113j:plain

こちらはyelp。鍵みたいなのは栓抜きです。

あとは初日のパーティーに、Jakeがビールのピッチャーを片手に持ってsquareのエンジニア達とヒャッハーみたいなノリではしゃいでたのが本当に楽しそうで、見ていて微笑ましかった。めちゃくちゃ寒いのに半袖の人とかもいるし。

まとめ

7泊ほどしたのですが、本当にあっという間でした。今回ちょっと進歩したのは、ちょっとずつ英語を勉強していたので、パーティーで人に話しかけてみる事が出来たのがよかったです。(さすがにStephにHiするのはめちゃくちゃ緊張しましたが)

そしてお知らせ

実際に参加してきたエンジニアが集まって、Kotlin Confと droidconの報告会をそれぞれ開催する事になりました。Kotlin Conf報告会はもう定員を越えてしまっていて参加が難しいかもしれませんが、droidcon報告会でも同じようなメンバーが参加&報告しますので、聞きたい事があればconnpassでコメントしていただけると幸いです。

 

日本で日本人が使うと違法な端末を買い、project fiの契約をした

つい出来心で、技適のついてないPixel2を買ってしまった。not XL。黒の安い方で649ドル。ついでにProject fiも契約し、月20ドル+10ドル/1GB(従量課金)で、アメリカでの最新Androidっぽい構成を手に入れた。

f:id:punchdrunker:20171107035521p:plain

Project fi(プロジェクト ファイ)はアメリカでしか契約できない(VPN使えば日本から契約可)ので、ほとんど知られていないようだけど、GoogleがやっているMVNO。それだけ聞くと、アメリカでしか使えないのか、と思うが、Project fiがすごいのは世界中で使えること。日本でもバッチリ。

Rates for International calls, SMS and roaming – Project Fi

しかもPixel2からはeSIM対応なので、SIMカード不要。Pixel2が届いたら、起動して、wifi接続した後にProject fiのアプリをインストールして、契約したアカウントで認証すると、15分くらいでアクティベートできた。15分くらいと言うのは、最初の何回かはアクティベートに失敗して、ちょっと放置したら無事アクティベートできた。どのくらいの時間が必要かは謎。

SIMスロット開けずに通信が出来るようになってちょっと感動した。

ただし、Project fiのデメリットは、対応端末が極端に少ないこと。6種類くらいしかないので、注意が必要。

Phones compatible with Project Fi – Project Fi

何度でも言いますが、使ってるのはアメリカでの話なので、違法ではない。

2017年9月 月報

10月も後半ですが、9月の月報です。

おいしいもの

f:id:punchdrunker:20171020015810j:image

3回目の六本木ベンジャミンステーキハウス、いつもの新宿御苑いまいなどに行きました。写真はいまいの松茸。

ずいぶん時間が経ってますが、村上春樹の「騎士団長殺し」を読みました。オペラの教養がなかったので、てっきり戦争物だと思っていたら、いつもの小説でした。

久しぶりに近藤聡乃さんの名前を見かけて、いつのまにか連載されていた「A子さんの恋人」を4巻まで買いました。1巻がつまらなくて、2巻からちょっと面白くなってきて、3,4巻はノンストップな面白さ。

映画

ダンケルクとエイリアン:コヴェナントを見ました。ダンケルクスピルバーグの激突システムで、敵の顔が見えないやつでした。緊張感。

 

マイル修行

日帰り沖縄行ってきました。

その他

病気が完治しました。寛解っていうのかな? とりあえず、PET/CTで大丈夫そうでした。その勢いで結婚しました。もう3年弱一緒に住んでたので、特に変化ないですが、会う人会う人におめでとうと言われます。

仕事

ほぼずっとswift書いてました。インターンピクシブやめたいとおちゃんが来たので、一緒にKotlin書いたりつぶグミの良さをアピールしたりしてました。

2017年8月 月報

8月終わりました。8月は知床に旅行に行きました。

f:id:punchdrunker:20170902232446j:plain

8月一番おいしかったとんかつは高田馬場のひなたでした。

f:id:punchdrunker:20170902232500j:plain

知床は夕陽がグレート。

f:id:punchdrunker:20170902232709j:plain

知床五湖もナイス。シーカヤックも乗ったのですが、カメラは持たず、必死で漕ぎました。知床の崖&滝すげーっす。

 

仕事

HeaderViewListAdapterのバグっぽいやつ調査したけど梨のつぶてでした。これね。

stackoverflow.com

 

あとはひたすらiOSの開発してました。tableViewまわりはいままでFormer使ってたんですが、今回は試しにIGListKit使ってみました。クラス増えちゃうんだけど、割と良い感じだった。自由度高い。

github.com

カンバン関係ないシリーズで言うと、airbnb泣く子も黙るlottieを使ってアニメーションなUIをモック実装してリファインメントで提案した。受けは良かったので、そのうち使うかも。

github.com

2017年7月 月報

f:id:punchdrunker:20170705132439j:plainf:id:punchdrunker:20170706193746j:plain

なんかのきっかけがないとブログなど書かないので、月毎に月報を書いてみようと思います。今月やった事をなんとなく振り返ります。

写真は7月食べたおいしいものです。渋谷かつ吉の冷やしカレーかつ丼は定番ランチメニュー。結構辛いです。2枚目は秘密の割烹料理屋さんの先付けで、雲丹と海老とじゅんさいともずくがおいしかったです。

 

英語版リリース

出ました。英語版みてね。まだ英語だけですが、そのうち多言語も増えるはず。

mitene.us

翻訳にあたって、iOSの方はPlural(複数形)対応するのに、stringsdict使わないといけないのがダルいなーと思って、Androidみたいに、 [キー].one とか [キー].other みたいにLocalizable.stringsに書いとけば、よしなに展開してくれるような関数書きました。みんなどうしてるんですかね?

言語設定については端末の言語設定をそのまま使うようになっているので、端末が日本語以外だとアプリは英語表示という動きです。ですが、英語以外の人達にとっては日本語の方が良いというケースも多々あるので、近いうちにアプリの中で設定できるように改善予定です。

7月の大半は英語版のリリース準備で不具合対応がほとんどだったなぁ。

ライブラリのアップデート

これまであまり意識してアップデートしてこなかったけど、リリース直後のタイミングくらいで上げると良いのではないかと思って、エイヤで出来そうなものはトライしようと思いました。

いまだとAndroidではguavaの19を使っていて、21でjava8になってしまい、Androidで使えなかったけど、22では 22-android っていうバージョンが出来てて、java8関係ないとこだけのアップデートになってるらしいので、そっち使う事に。

Release22 · google/guava Wiki · GitHub

targetSdkVersionも24なので25に上げようかなと思ったら、FragmentManager.getFragments() がlintに怒られるようになったので自重しました。Fragmentの遷移管理で使っているので、代替実装を用意する必要があるので、ゆっくりお茶でもすすりながら考えます。 ContextThemeWrapperのコンストラクタも同様の警告。

stackoverflow.com

マテリアルデザイン的なやつ

いまのAndroid版みてねのデザインテーマは3年くらい前の状態で止まっているので、最新のマテリアルデザインガイドラインに寄せて行きたいなと思ったのが発端です。

ガイドラインに従うとこんな感じで使い心地が代わりますよってのを実際に作って、Deploygate経由でサクっとデザイナーやPOに使ってもらって好印象だったので、近いうちにマテリアルな感じになっていくと思います。

後から考えるとカンバンのタスク完全に無視してモック作ったりしてるので(まあ半日程度だけど)、それってどうなの?っていう気もしないでもないですが、リファインメントや計画で強気に提案するための材料として実装が必要ならしょうがないよねという気がします。

モック作るにあたって、あらためてripple effectの話とかちゃんと勉強しなおしました。

qiita.com

家族アルバムみてねに社内転職して1年経ちました

ご無沙汰しております。病気になったりANAのマイル修行したり連日とんかつを食べたりしているpunchdrunkerです。まだ生きてました。現在ミクシィ歴がちょうど6年になります。しばらく退職していないので、在職エントリを書きます。

 

3年くらいマネージャー業をした後、やっぱ普通にエンジニアやってる方がよさげ、と思って家族アルバムみてねに異動してから7/1で1年経ちました。

 

mitene.us

あっという間に1年経ってしまいましたので、ここ1年で自分がどういう仕事してきたのか、一旦振り返りたいと思います。

サービス全体

フォトブック

昨年9月、フォトブック注文機能がリリースされました。1冊約500円。みなさん買ってください!みてねの唯一の収入源です。お金万歳!!

この頃はまだ病気療養直前だったので、適度に休日返上しつつ、みんなで協力しながらなんとかリリースに漕ぎ着けました。

Android

各種クラッシュ対応

スプリントのタスクに飽きた合間でほどよくクラッシュ対応してきました。Fragment, RecyclerView, Lifecycle関連がトップレベル。記憶に残ってるやつだと、FragmentManagerのcommit起因のIllegalStateExceptionとか、弱い端末でcontent providerから大量にデータ取るとバカになって死ぬ不具合とか、そんなクラッシュを直したりしてました。

あと現実逃避したい時はlintのwarning減らす仕事などもします。

各種ライブラリ/target versionのアップデート

support libraryをはじめとした、諸々のライブラリのバージョンを新しくしてきました。現在みてねのtargetSdkVersionは24です。その過程ではいくつかBreking changesを読み逃して大量のクラッシュ出したのは苦い思い出です。その都度即日対応させていただきました。

一番大きな更新はAndroid M以降向けのRuntime Permission対応です。Androidアプリ開発者にとっては「端末のメディアへのアクセスを許可しますか?エンジニアやめますか?」レベルのイニシエーションです。

ご存じ @hotchemi さん謹製、PermissionsDispatcherを用いて、エイッとやってバーン!!で対応して、さほど大きな問題は起きなかったのですが、普段そんなに使われないだろう画面のすみっこの方にある連絡先アクセスとか、ちょっとした細かい不具合をやはり出してしまいました。その節はご迷惑をお掛けしました。精進します。

その次にはやはりtargetSdkVersion24対応。恥ずかしながら COLUMN_LOCAL_FILENAME 問題をうっかり見逃し、こちらも即日対応。毎スプリントのKPTにおきましても反省させていただきまして、再発防止に努めてまいります。

もうひとつ大きなライブラリアップデートではRealmの更新が挙げられます。当時0.82.2だったRealmを一旦1.2に上げました。その翌月に2.2.1に上げました。Realmはなんといってもドキュメントが充実していて、各バージョンごとの移行に関する注意事項がブログにまとまっているので大変助かりました。2.2.1に上げてからはそれきりです。現在最新のRealmは3.4.0ですが、みてねが利用しているのは2.2.1。今後のアップデートに期待してください。

Google フォトからの共有

Nexust5以降、端末のギャラリーアプリがなく、Google フォトがギャラリーアプリとして使われることが多くなりました。Kitkat以降、Google フォトからの写真共有時はcontent://com.google.android.apps.photos... のようにオシャレなURLが渡されてきます。そこで、渡されるURLのハンドリングをしっかり行わなければなりません。

ただ、みてねは大量の写真投稿処理やそれに関連するローカルキャッシュの仕組みなんかがURLの扱いとちょっと複雑に絡むところもあり、解決するのに精神的ハードルがやたら高く、しばらくGoogle フォトからの共有はしばらく非対応として開発が保留されていました。しかしこちらもエイヤで対応させていただきました。5年以内に死ぬかもしれないと思うと大抵の事は平気です。

差分の影響範囲も広く、githubのPRのコメント数も27と、ここ1年で一番スレが伸びた差分になりました。

iOS

Swift移行+ Swift3対応

現在みてねのiOSアプリはObj-Cとswiftが混在しており、ファイル数で言うと、 Swiftが

1965に対し、Obj-Cのファイルは1001という移行率です。のこり1/3と、まだ道のりは遠いですが、何とかSwift完全移行目指して、日々精進しております。

テストまわり

スタブできますか?人間やめますか?という感じです。

各種クラッシュ対応

Android同様、息抜きにクラッシュ対応。水を汲みに行ったらクラッシュ対応。トイレから戻ったらクラッシュ対応。そんな感じです。

Rails

テスト + Circle CIまわり

みてねでは全プラットフォーム、Circle CIを利用しています。テストの時間が長いとダレるので、parallelismの利用とtest-queue対応をしました。諸事情のため、結果そんなに速くならなかったことをお詫び申し上げます。(20分くらい書かってたのが5分くらい速くなった)

年内にはCircle CI2.0対応して、もうちょい速くできそうな予感がしています。

unreadのあれこれ

未読管理でunreadというgemを使っているのですが、既読処理がちょっと遅くなったりとちょっと問題があったので、調査したり軽く本体にPR投げたりしておきました。そういえば追加でschema変更のPR送らないとと思っていたのを忘れていました。あとでやります。とりあえず、mysqlで大量のレコード捌く上では若干index足りていないなどお茶目なライブラリだったので、多少チューニングが必要でした。

英語

完全に個人的な学習ですけど、週に1回昼休みに40分、マンツーマンの英会話レッスン通うようになって、その後肺炎で入院して以降サボって2ヶ月が経ちます。とにもかくにもプログラミング界の公用語は英語なので、まだまだ勉強が必要です。今月復帰しよう。。。

1年やってどうだった?

自分は凡人なので、開発しやすい環境作りとか、サービス品質の安定とか、その手の仕事に重点的に取り組みました。どういったタイプのエンジニアであれ、自分に向いた仕事に取り組める雰囲気のチームで良かったなと思っています。

またご欄の通り、みてねではエンジニアの区分があまりなく、全エンジニアがiOSAndroidRailsも書きますし、AWSの管理もやります。この点も自分にはちょうど良く、Androidばっかりやってると飽きちゃうので、気分を切り替えるのにも、仕事の幅は広い方が良いと思いました。

もちろん結果的に、この人はiOS強いけど、Railsならこの人に聞いた方が安心だよね、みたいなポジションは暗黙的に存在しますけどね。

これからのこと

いまは秘密ですが、来月にかけて大型リリースを控えています。楽しみしてください。それが落ち着いたらAndroidではKotlin対応を進めたいと思います。Kotlin移行を進め、会社の予算で11月にサンフランシスコで開かれるKotlin conf参戦を目論んでいます。ちなみに私はまだ1行もKotlin書いてません。

iOSの方はひとまず全部swiftにして、@testableも使えるように安心な環境を整えていければと思っています。アプリの開発に従事しつつ、現在4.2.5のRailsも5にアプデしていこうと思います。