そんな感じで

Androidとかやってます

2017年総括

仕事納めたので総括します。皆様には大変お世話になり、圧倒的成長をできた良い1年でした。

Android

DroidKaigi

3月にDroidKaigiで発表して、すさまじいフィードバックを貰ってエモくて死にそうになりました。
会場の中で10人くらいの人に深く刺さればそれ以外は評価されなくていいと思ってたのですが、結構な人に刺さったようで何よりです。
採用系でお話させていただいた方もかなりの割合でスライド or 動画見ましたと言ってくださるので怖いくらいです。
おかげさまで界隈の知り合いも増え、色々な技術話を聞けるのでとてもハッピーです。
本当にDroidKaigiには感謝しかありません。

そしてDroidKaigi2018にも採択されました。
ViewGroupの内部実装なんて誰も興味ないだろと思ったらそんなこともなかったみたいです。変態がいっぱいいて嬉しいですね。
年末年始はスライド作成に費やしますので、DroidKaigi 2018の発表もご期待ください。

実装

Kotlinを本格的にやったり、Rxを本格的に使いはじめたり、設計をMVVMにしてみたりClean Architectureっぽくしてみたりと色々トライしました。
設計は勉強してもよくわからなかったのでエイヤーとやってみたら利点がとても理解できました。一段階レベルアップした気がします。沼ですね。

iOS

気が向いたので一時期業務でiOSアプリ書いてました。

3年くらい前にiOS開発やったときは全然楽しくなかったのですが、多分Objective-CXcodeのせいだったみたいです。
思ったよりスイスイとSwiftが書けたので楽しく開発できました。でもやっぱりXcodeは嫌いです。

2018はもうちょっと深くやってみようかなという気持ちがあります。AppCodeで。

デザイン系

色々なところで俺はUIデザインできるぞ!って言ってたり自己紹介でUIデザイナー名乗ったりしていました。すると現在開発中のアプリでは本当にUIデザインをフルで担当することになりました。

0からアプリのUI考えるのは想像の64倍くらい大変で、コーティングよりも悩んでいます。本当に悩みます。

あと、デザイン系の勉強会に行くと全然違う観点の方がいらっしゃって面白いなーと思いました。
デザイン系の学部出身じゃない人にどうやってデザイン勉強会したかをよく聞いています。

来年はSketchを買って、もっと本格的にやっていきたいです。VectorDrawableを直書きするのは疲れました。

 やりましょう。

勉強系

今年はあんまり本を読めませんでした。
趣味で心理学の本読んでるのですが、マズロー心理学の本と暗黙知の本が面白かったです。
年末年始でデザイン系の本何冊か読みます。

英語

5月くらいに英語熱が爆発して、通勤中に英単語帳を読んでいたのですが1ヶ月で飽きました。単語帳は効率悪いですね。
その後は何もしてなかったのですが、10月から社内TOEIC講座で毎日15分英語アプリで勉強しろという課題を課され、毎日地道にやっています(10分くらいしかやらない日が多いですが)
高校大学時代に英単語の勉強を一切しなかったせいで単語力が全くないので、mikanというアプリでコツコツとやっています。隙間時間でできるのが良いです。
来年のGoogle I/O行くために頑張ります。

仕事系

色々評価されて年収がビットコインくらい上がりました。去年から地道に勉強していたら実力がついたみたいです。来年は5000兆円まで昇給したいです。
気付いたら会社でも古株になっていて、ほどほどに責任がついてくるポジションになりました。効率良く結果を出して行きたいです。

施策考えて実装して効果測定して改善するサイクルをよく回せました。
ユーザーがどう動くかはリリースするまでわからないので楽しいですね。

体調

DroidKaigi前に胃腸炎になった以外はほぼ体調崩しませんでした。
腸炎とDroidKaigi疲れで体重が5キロくらい落ちてしまい、夏くらいまで体力が戻らずにフラフラでした。このダイエット方法はオススメできません。
6月に良い敷き布団を買ったのですが、とても良いのでみなさんも是非寝具にお金をかけるべきだと思います。でも寝過ぎてしまうのが欠点です。

その他

今年は163日休肝できました。去年よりも人と飲むことが多くて楽しかったです。
でも深酒することが多かったので星一つです。

 

一年間お疲れ様でした。

2017年飲んだ日本酒まとめ

@seto_hi です。Androidと日本酒とYUKIが大好きです。

最近エンジニア方面の方と日本酒の話をすることが多くなってきたので、今年の日本酒のことを振り返ってアピールしておきたいと思います。

今年の前半は日本酒飲み放題のお店によく行っていたので、130~180種類くらいは飲んだと思います(しかし半分くらいがお猪口1杯程度しか飲んでないので印象も薄い)。趣味の旅行ついでに酒造も10軒くらい行きました。
どの日本酒もおいしかったのですが、特に印象に残ったものを書きます。印象に残るくらいなのでくせ者が多いです。超有名どころはあんまり書かないです。

 

おいしかった日本酒

高砂酒造 一夜雫 大吟醸

去年末に旭川に行った際に買いました。蔵の最高級のお酒なのでそりゃおいしいよねという感じです。お正月にいただいたのですが、メロンのような甘い香りが最高でした。
アイスドームの中で絞るという北海道ならではのお酒なのですが、近年の温暖化の影響によって昨年度分で生産終了らしいです。残念。

松みどり 純米吟醸 生酒 720ml

地元のお酒です。酉年限定パッケージがかわいかったです。
生感が強めで味もあり、地元にもこんなおいしいお酒があるのかと思いました。

新政 陽乃鳥 オーク樽熟成

今年一番はこれです。普通の陽乃鳥も好きですが、全然違います。新政大好きなのでかなりの種類を飲んでますが、全然違います。
貴醸酒をオーク樽熟成させたものなので日本酒の味とは結構離れているのですが、香りと甘みのバランスが最高でした。

加茂錦 荷札酒 月白 純米大吟醸 無濾過・仲汲み

日本酒居酒屋でお店の人に進められて飲んだのですが、最高でした。
ガス感と生感と香りの良さと味とすべて文句なしです。この1杯で加茂錦に完全にハマりました。

満寿泉 純米大吟醸 ワイン樽熟成

シェリー樽で熟成した日本酒です。スッと入ってきて完全に死ねます。味も香りも最高で、とても良いお値段がします。でも気付いたら買ってました。お酒は判断力を低下させますね。
富山駅のお土産街で20ccくらい?で200円で飲めます。

気に入った日本酒

クセが強いけど気に入った子達です

悦凱陣 純米山廃 無濾過生原酒 赤盤雄町

香川のお酒で、現地に旅行に行ったときに蔵で直接買いました。行ったときはちょうど火入れしてました。
味が非常に濃く、変態と言われている蔵です。大量生産する感じではなく、我が道を行く味がします。それだけでなく、生酒なのに開栓してから常温で保存してもダメにならずに変化するド変態です。
1ヶ月常温で熟成させたところ、味と甘みが濃くなって思わずうなりました。うっかり半年ほど熟成させたところ、アルコール感が薄くなりやや飲みやすくなっていました。
来年も熟成させたいです。

瀬戸の花嫁 純米大吟醸

これも四国に行ったときに蔵で買いました。自分が瀬戸なので半分ネタで買ったのですが、おいしかったです。あとちゃんとウケました。
オオセトという日本酒好適米で作っているのでこの名前らしいです。
グレープを思わせる香りと書いてありましたが、僕はグレープフルーツの香りを奥の方に感じました。程よい苦みが良いです。

甲子 林檎 KINOENE APLLE

千葉の酒造巡りをしたときに買いました。後輩と2人で試飲したのですが、2人とも完全に惚れて即買いました。リンゴ系の酵母で甘さと酸味のバランスが良く、ワイングラスでおしゃれに飲みたいお味でした。
DeployGateさんのデプロイ肉の時に差し入れしたのですが、おいしすぎて自分でも結構飲んでしまいました。

華鳩 しおり 貴醸酒8年貯蔵

貴嬢酒の古酒です。古酒なので当然独特の香りはありつつも、あまりしつこさもなく甘くて飲みやすかったです。

達磨正宗 熟成三年

行きつけの店の店長がこっそり飲ませてくれました。これは3年熟成とは思えないくらいの濃さがありました。
みりんに近い系の古酒です。クセになります。

 

レア感

上川大雪酒造 試験醸造酒 1号

旭川で友人に地元の人しか行かないようなお店に連れて行ってもらい飲みました。
今年飲まないと二度と飲めません。ちなみに家にも1本眠っています。
ふるさと納税もこちらの蔵のお酒目当てで上川町にしました。

 

名前が好き

・恋をするたびに
 ・1~5話までサブタイトルもあるけどなぜか泥沼エンドに..

・I love sushi
 ・ラベルもかわいい

・パンダの旅
 ・ラベルもかわいい

・飲めばわかる
 ・わかりました

 

来年に向けて

クラウドファンディングした農口さんの日本酒が届きます

ふるさと納税した上川大雪酒造の日本酒が届きます

・来年も旅行がてら蔵巡りをする

という予定が既にあります。

来年も日本酒まみれ確定ですね!飲んでいきましょう!

FloatingActionButtonはなぜ画面右下か

mixiグループ Advent Calendar 2017 4日目の記事です。

Qiitaに書こうかと思っていましたが、完全にポエムになったので自分のブログに書きます。長いです。

 

時間がない人向けに結論だけ

・人間の目線は画面左上から右下に動く

・なので、左上→右下に目線が流れる動線にした方が自然

・FABには次の画面に繋がったりするようなアクションしか置いてはいけない

・FABを画面右下に配置すれば画面全部を見た後に次の画面に行けて自然な動線になる

 

自己紹介

@seto_hi です。株式会社ノハナAndroidエンジニアをやりつつアプリのUIデザインを考えたりしています。

Material Designが好きで、DroidKaigi2017でMaterial Designに関する発表をしたり、知り合いからはMaterial Design警察と呼ばれたりしています。

 前提

僕は「Material Designはプラットホームである」という考え方に賛同しています。Material Designのガイドラインに書いてあることがすべてではなく、背景を理解してガイドラインに書いていないことを行ってもいい(もっと言えばガイドラインを破ってもいい)という考えです。

 

本題

FloatingActionButton(以下FAB)がなぜ画面右下にあるかについて本気出して考えます。厳密に言うとLTR言語ではFABが右下にあり、RTL言語ではFABが左下にある理由を考えます。

なお、今回はAnchorありFABについては言及しません。

右利きが操作しやすいから右下?

世界に右利きの人が多く、画面の右下にボタンを置けば一番操作しやすいからという考え方はあると思います。

しかし、RTL言語の方向けの画面ではFABは左下に配置されます。RTL言語を使う国でも右利きの人が多いらしく、FABを左下に配置することは操作性の低下に繋がります。

RTL向けのUIでは左右反転するものとしないものがあります。操作性だけを考えるならFABの位置も反転しなくても良かったのではないでしょうか?

これを考えると操作性のため「だけ」に右下に配置しているのではないような気がします。

(ユーザーの大半を占めるLTR言語の人に操作しやすいという観点も当然入っていると思います)

Androidの世界と右と左

Androidの世界では画面の左右の配置に意味があります。

右は未来・肯定などを表し、左は過去・否定などを表します(RTLの場合は逆)。

例を挙げるとBackボタンやHomeAsUpは画面左にあり、ダイアログのボタンは右側に肯定アクション、左側に否定アクションを置くことになっています。 

なぜ右が未来・肯定、左が過去・否定

これは人間の目線の動きに由来していると考えています。

人間の目は文章を読むときにZ字型に目線が動くと言われています。アイコン付きリストの場合には逆N字型と言われています。

画面の最右に次の画面への動線を置くと、目線が左から右に進んだ先で動線にたどり着くので自然な体験になります。

肯定的な内容は次の画面へ進む動線になることが多く、否定的な内容は前の画面に戻る動線になることが多いです。

このような理由から、「右が未来・肯定、左が過去・否定」という世界になったのだと思います。

FABのガイドライン

 FABのガイドラインには、ボタンに置くべき操作についての記載があります。

雑にまとめると、

・ポジティブなアクション(新規作成、お気に入り、共有、Navigate、Exploreなど)は置いて良い

・マイナーだったり破壊的なアクション(削除、エラー、具体的でないアクション、操作系)は避けるべき

となっています。

これとAndroidの左右の話を合わせると、FABは画面右に配置することが正しいという気持ちになりました。

 

結論

・人間の目線は画面左上から右下に動く

・なので、左上→右下に目線が流れるUIにした方が自然

・FABには次の画面に繋がったりするようなアクションしか置いてはいけない

・FABを画面右下に配置すれば画面全部を見た後に次の画面に行けて自然な動線になる

 

記事は以上です。

 

蛇足

色々とUIを考えていくと、UIに関する疑問が湧いてきました。

・NavigationDrawerの呼び出しボタンは画面左上だが否定的な内容ではない

 ・左上にバーガーメニューを置くのは慣習になっていますが、実はMaterial Design的ではないのでは?

・Toolbarの右部分に表示されるActionMenuに操作アクションを入れることは、FABのアクションの制約と同じ理論で考えると良くないことでは

・メールなどの一時保存ボタンはメールの作成画面を閉じることになるので、画面左側に配置すべき?

このあたりの議論をしたい方、答えを知っている方、是非お声がけいただきたいです。

 

以上!いいポエムが書けました!

DroidKaigiの発表についてつらつらと

日曜の昼下がり、みなさんどこでどのようにお過ごしでしょうか?

僕は自宅でConstraintLayoutについてひらすらに調べ続けています。

 

先週会社のブログで書いたとおり、DroidKaigi2018に採択されました。

「詳解 ViewGroupのレイアウト内部実装」を話します。

blog.nohana.co.jp

会社のブログにエモいことは書きたくなかったので、自分のブログで色々書きます。

CfP投稿

DroidKaigi2017では50分枠で登壇したので、今年は30分枠*2で計60分話すぞ!と思っていました。

4月くらいから何で登壇するかなーと考えつつ、CfP応募が開始された日からガッっと文章にしていきました。ちょうどiOSDCの日だったので、休憩時間はずっとCfPを書いていた気がします。

最終的には4本書き上がったのですが

・自分が発表したい内容

・自分の得意分野

・採択されそう

という軸で考えて、2つだけを応募しました。せっかく頑張って書いた文章を捨て駒にするのは悲しいかなと。

ちなみにボツにしたのはStyleとThemeまわりの話とCanvasの話です。不採択になったMaterial Designの話も含めてどっかで消化したいですね。

発表のタイトルはかなり大事だと思っているのですが、ボツにしたやつはいいタイトルが浮かばなかったこともボツにした一因です。本当にCfPの内容について理解していればいいタイトルも浮かぶはずなので。

採択/不採択

朝起きてTwitterを見ていたら採択不採択の話があったので急いでメール見ました。

不採択のメールから読んで、「クソが!!!」って叫びました。悔しかったです。今でも悔しいです。

その後に採択のメールも読みましたが、とにかく不採択の方が悔しかったのであんまり覚えてないです。

完璧なCfPを出したつもりではいましたが、見返してみるともっと書けたのではという気持ちがあります。来年はもっと実力をつけて完璧に採択されたいですね。

ちなみにその日は夢でもDroidKaigiに不採択になる夢を見てました。正夢ですね。

発表準備

気持ちを切り替え、採択になった日の夜から始めました。

今回はまず調査から始めるので、今はそのフェーズです。

FrameLayoutとLinearLayoutのコードは昔を読んだことがあったのでスッと終わりました。今はConstraintLayoutと戦っています。かれこれ10時間くら戦ってますが、あと50時間くらい戦いそうです。

 正直DroidKaigiじゃなくて今すぐ内部実装について聞きたい気持ちです。ソース公開して欲しいです。

調査内容のメモが既に1万文字くらいになってしまい、さすがにDroidKaigiでは話しきれないのでこれもどこかで消化したいです。

 

11月中に調査を終えて、12月中にスライドに落とし込んで、1月に発表練習+ブラッシュアップという流れでいきたいと思っています。

普通に話すと50分かかることを30分に凝縮して発表することが今回の目標です。スライドは前回は50分で41枚でしたが、今回は30分で80枚くらいになるんじゃないかと思ってます。話す内容が違うので伝え方も前回と変わってくると思います。ご期待ください。

あんまり対外発表に慣れていないので、工数を使うことによってプレゼンの質を上げていきたいと思っています。手を抜いて質の低い発表をするのはお金を払ってカンファレンスに来てくださる聴衆の方々に失礼だと思うので。

さいごに

発表内容に興味がある方は、勉強会などでお目にかかった際にでも「興味あるよ!」と言っていただけると嬉しいです。みなさんのご意見によって発表の対象ユーザーが変わっていくと思います。

やっていくぞ!!!

UIデザイン勉強のために読んだ本

 ということなので、アプリのUIデザインを勉強するために読んだ本を紹介します。

もう少し多くの本を読みましたが、今回はオススメのものだけを。文庫本から分厚い本から色々あります。

 アフィリエイトとかはないので安心してお読みください。

心理学(インターフェース系)

・インターフェースデザインの心理学

・続・インターフェースデザインの心理学

・UIデザインの心理学

題名には心理学とありますが、人間の行動特性についてよく学べます

心理学(学問系)

・脳は、なぜあたなをだますのか - 知覚心理学入門

色彩心理学入門 - ニュートンゲーテの流れを追って

人間の視野特性や色をどう認識してるかなどがよくわかります

デザイン系 

・ノンデザイナーズ・デザインブック

デザインをよくするために押さえるべきポイントが学べます

Material Design系

ANDROID USER INTERFACE DESIGN

Material Designの話とカスタムViewの実装について詳しく書いてあります

ユーザー体験系(基礎)

・誰のためのデザイン?

ユーザビリティエンジニアリング言論

・マイクロインタラクション -UI/UXの神が宿る細部

ユーザー体験についての基礎が学べるような本です

ユーザー体験系(デザイン)

・失敗から学ぶユーザーインターフェイス

・「行為のデザイン」思考法

・融けるデザイン

・心を動かすデザインの秘密

「使いやすさ」とは何かということについて考えさせられる本です

改善系

・インターフェースデザインの実践教室

・UXデザインのやさしい教本

実際のプロダクト改善に使っていけるような本です

 

最近本読んでないなーと気づいたので明日から読書再開します

AndroidエンジニアがiOSDC2017に参加してきた

2017 9/16~9/18に開催されたiOSDC 2017に参加してきました。
iOS経験の浅い僕でもとっても楽しめました。

なぜ参加したか

参加募集の時期にちょうどiOSをやっていたからです。
今年の5月〜8月中旬くらいまでAndroidと兼任でiOSをやっていました。
今はAndroid専任に戻りましたが、たまには違うコミュニティの勉強会に参加するのもいいかなーと思って参加しました。

楽しめたか

楽しめました。間違いないです。
iOSの話でもUIや設計などはAndroidに生かせますし、
Swiftの話はKoltinに生かせますし、
エモい話はそのまま生かせるので十分楽しめました。
Kotlinの話もあったりMaterial Designに触れた話題もあったりしてAndroidの経験も生かせました。
iOSの開発経験が全くなかったらまた違ったのかもしれませんが、
少しでも触れたことがあったことによって楽しめたと思います。

運営の方も盛り上げることを意識されていたようで、
iOSDCではLTの時に無限にビールが出てきたり、懇親会のビールの品揃えが素晴らしかったり、そちらの面でも楽しませていただきました。

DroidKaigiと違うなと思ったこと

OS内部に近い実装の話が少ないなと思いました。
AndroidAPI仕様が複雑だったり、OSのコードが公開されていることが背景にあるのかなと思いました。

発表の時間もDroidKaigiは30分or50分ですがiOSDCは15分or30分で、しっかり聞くかサクッと聞くかという違いがありました。
LTもかなりの本数があったので、発表はサクッと聞いて詳しいことは登壇者と直接話すスタイルなのかなと思いました。

運営の姿勢(目指しているもの?)が違うなと感じまして、
DroidKaigiはシュッとして大人な運営という印象ですが、iOSDCは祭りだー盛り上げるぞーという勢いを感じました。

何が良い・悪いではなく、みんなちがってみんないいと思います。

最後に

iOS経験の浅い自分でもiOSDCは楽しめました。
今年はどちらかというと楽しませてもらったような気分を感じたので、 来年は登壇するなりスタッフをやるなりで楽しませる側に行けたら良いなと思っています。 あとAndroidエンジニアの人はもっとiOSDCに来たらと良いと思います。

来年の2月にDroidKaigi2018がありますが、 Android経験が少しあるiOSエンジニアの皆さんでもDroidKaigiは楽しめるのではないかと思います。
今年も幅広い内容のセッションがあると思うので是非参加されると良いと思います。
iOSDCの休憩時間はずっとDroidKaigiのCfPを書いていたので、今年も全力で発表したいと思います。

最後になりますが、iOSDCの運営のみなさん、楽しいカンファレンスをありがとうございました!!

今期の勉強

DroidKaigi以降、リフレッシュしていたり体調を崩していたりしてあまり勉強できていなかったのでGWから勉強を再開していく。

Android

JavaっぽいコードをKotlinで書くことはできているけど、Kotlinっぽいコードがまだ書けていない気がするのでひたすら手を動かさねばという状況。 Coroutinesまわりも今のうちに理解しておいて1.2がリリースされたらガッとやっていきたい。 Rxは本を買ったのでGWで読んで本質を理解したい。 UIテストは今期こそちゃんとやる。 設計も色々理解が足りないので、とりあえず手を動かしてみる。

iOS

iOS8の頃に3ヶ月くらいやっていたが、またやることになった。 当時は強制的にやらされたしあまり覚える気がなかったが、今回は自主的にやるししっかりと理解するつもりでやる。 社内のSwiftの読書会に出ていたので最低限はSwiftのコードも読めるし、Xcodeと仲良く出来ればなんとかなるんじゃないと軽い気持ちでいる。 昨年度はMaterial DesignをやったのでHuman Interface Guidelinesも読み込んでみようと思う。 両OSのアプリが作れてデザインもできるエンジニアになったらしばらくは食いっぱぐれないでしょう。

英語

元々得意だったので読むだけなら苦労していなかったが、もっとちゃんとやろうという気持ちになった。 読めるが聞けないしゃべれないという状態なので、なんとか聞けるしゃべれる状態まで持って行きたい。 単語力が全くないのでまずは単語を勉強しつつ、podcastを聞きながらぶつぶつしゃべる方法を実践してみる。 来年の3月あたりにどういう状況になっているか楽しみ。

日本語

人よりも日本語に触れる機会が多かったので理解は深い方だと思っていたが、 文言を考えるときに軟らかくて一意で冗長でなくて..みたいな日本語をすぐに思いつかなくて苦労している。 相手にどう受け取られるのかを体系的に学びたいと思っているが、勉強法が全くわからない。 あと使いさばき辞典みたいなのも読み込んでみたい。