「Androidを支える技術」出版記念イベントに行きました。
さっき行ってきました。
正直に白状すると、まだ1巻の半分くらいしか読めてないのと2巻買えてない状況で行ったので、前知識が少ない状態での参加だったと思います。 それでも興味深い話・おもしろい話をたくさん聞けて楽しかったです。(話のすべてを理解できたとは言っていない)
あと、Android界のスターエンジニアの方がたくさんいて、緊張しました。。
とんでもない会にきてしもうた.. #androidを支える技術出版記念
— shanon (@shanonim) 2017年7月14日
終わった後にペーパーテストとかないですよね....(白目 #androidを支える技術出版記念
— shanon (@shanonim) 2017年7月14日
同時開催だった #startup_android も行きたかったなァ。。。
エンジニアであるということ
イベントであった技術的な話については、ここでは書かないことにします。(本の内容をまだ完全に理解できてないので..
それよりも、有野さん @karino2012 の話の端々から感じたエンジニアとしての心得のようなものに感銘を受けました。
Q&Aのときに、Androidの生みの親であるAndy Rubin氏の話になって、有野さんは「彼にはかなわない、エンジニアとしての敗北を感じる」と言った後に「いまのレベルでは敵わないので、もっとよいエンジニアにならなければならない」とおっしゃっていました。(たしかこんなニュアンスだったはず)
僕からすると、ガラケー時代を経てAndroid1.5の頃からずっと開発を続けているエンジニアなんて雲の上のさらに上、大気圏外宇宙の果てレベルの神エンジニアなのに、それでもまだ上を目指すのか・・というような気持ちになってしまって、途方もないレベル差を感じてしまったわけですが、
同時に、このひとは本当に技術のことが好きなんだぁという情熱が伝わってきました。やはり「好きこそものの上手なれ」なのでしょう。
自分も、最近ようやく好きな仕事を好きなだけできる環境に関われるようになってきたので、このまま引き続き邁進してゆこう〜〜という気持ちになりました。
つらみはあるけどね、がんばろうね。
まとめ
お酒しながら書いたのでエモみがつよくなってしまった・・・
来週からもがんばります。
実装を急ぐくらいなら、MVPでリリースすべき。
実装を急ぐくらいなら、MVPでリリースすべき。という当たり前ポエムです。
大昔、開発リソース足りないのにフル実装を目指した結果、負債的コードが残ってしかもリリースできなかった様子ありけり。
— shanon (@shanonim) 2017年6月5日
MVPは、Minimum Viable Product(必要最低限の能力を兼ね備えたプロダクト)です。
つらいパターン
- リリースがやばい。
- 実装を急ぐ。
- 「とにかく動けばええねん。」
- 技術的負債みの強いコードが残る。
- 「誰やこんなコード書いたやつ!!!😡😡」→「2ヶ月前のおれや…………..」
- 「誰やこんなコード書いたやつ!!!😡😡」→「えっ……..マジで誰……..(もうすでにいない担当者のcommit)」
- enhancement issueが重くなる
- つらい😇😇
つらい実装をしてしまう背景
MVPが判断できずにフル実装してしまう
MVPを判断できるプロダクトマネージャ、もしくはリードエンジニアがいるとベストなんだろうけど、実装メインのエンジニアだけではその判断が難しい。結局、プロジェクト開始当初のフル要件をリリースまで引っ張ってしまうパターン。
調整するのが面倒になってフル実装してしまう
実際にMVPを検討することになっても、ファーストリリースでどこまで機能を削る??→削った機能いつ実装できる??っていう決めが必要になるので、結局「あーー調整めんどいし実装したほうが早いわ!!!!」ってなってしまうパターン。
そもそも
スキル的に実装可能だけど時間がないという状況は、ミスを生みやすい状況だと思います。それでも完璧に実装するのがプロだろ!!!って言いたいのは、わかるけど・・・状況のイレギュラーをエンジニアに押し付けるのはよくないので、解決すべき🐯
つらい実装をしない🙅🙅
短期的には、
- 時間のかかりそうな機能は一旦削除してissueを切る。
- 落ち着いて段階リリースしよう。
中長期的には、
- コードレビューを徹底する。
- MVPのわかるプロダクトマネージャをしっかり立てる。
まとめ
念のために補足すると、今やってるプロジェクトがつらい状況っていうわけではなくて、むしろこうなりそうだったから修正している(軌道修正できた)という感じです。備忘録。
いいリリースをやっていきたい。💪
Go合宿2017@ 土善旅館に参加しました #golangjp
Go言語のプログラミング合宿に参加してきました。
なぜ参加したのか
普段触れる機会の少ないサーバーサイド言語を勉強するという目的で参加しました。仕事ではAndroidアプリ開発にフルコミットしているので、サーバーサイドの知識はほとんどと言っていいほど持っていません。とはいえ、今後必要になる機会は少なからずあるだろうし、クライアントサイドの実装をする上でサーバーサイドも分かるメリットは大きいと日頃から感じていました。(API周りの設計知識とか欲しい。)
サーバーサイド言語の中でもGo言語は前々から気にはなっていたのですが、始めるきっかけ掴めず・・・そこでちょうど合宿開催の話を聞いたので、この機会にチャレンジしてみようと思った次第です。
合宿場所
千葉県の土善旅館に行きました。
土善旅館[弓道合宿・開発合宿]
エンジニア界隈ではおなじみの開発合宿御用達の旅館です。今回初めて行くことができました。 東京からだと、片道2時間半〜3時間くらいです。結構遠い。
うおー成田乗り換えでさらに50分揺られるのか...思ったより遠い土善旅館😇 #golangjp
— shanon.kt (@shanonim) 2017年4月22日
参加費
1泊2食付き・開発合宿用の大部屋レンタル料金・合宿中のアルコールとお菓子込で一人13,000円でした。安い!😳
スケジュール
1日目は14時過ぎに宿に到着して、19時まで開発→夜ご飯を食べて、その後は眠くなるまでひたすら開発、
2日目は8時に朝ご飯→11時まで開発してLT大会、14時くらいに宿チェックアウトでした。
実際に開発作業していた時間は、合計で13時間くらいでした。就寝時間によって個人差があったと思います。
- (1日目) 15:00-19:00, 21:30-28:30: 11h
- (2日目) 9:00-11:00: 2h
雰囲気
終始和やかでありつつ適度なワイワイがあり、楽しい雰囲気だったと思います。Go言語初心者向けのチュートリアル講義があったり、参加者同士のQ&Aがあったり、作業自体はそれぞれの個人活動でしたが、技術的な会話や交流が盛んで良い感じでした。
↑合宿中のたのしい様子を応用して作ったWantedlyコラ画像
コラ画像作ってる場合じゃないんですよ
— shanon.kt (@shanonim) 2017年4月22日
あとこれも合宿ならではですが、作業中は基本的にずっとお酒を飲んでいました。困ったら乾杯。バグったら乾杯。ビルド成功したら乾杯。デプロイしたら乾杯。🍻🍻🍻
深夜3時に乾杯する開発合宿があるらしい #golangjp
— shanon.kt (@shanonim) 2017年4月22日
適度なアルコール摂取は作業効率アップに良い効果があるので(個人調べ)、たまにはアルコール駆動開発もいいかもしれません。
土善旅館の最高ポイント
「開発合宿に適した旅館」と言われても正直ピンときてなかったのですが、実際に行ってみてわかった最高ポイントがいくつかあります。
WiFi環境が最高すぎる
とにかくWiFiが速い。
これ、1日目の作業開始直後くらいに測ったやつですが、都内の光回線と遜色ありません。むしろ土善旅館の方が速いのでは・・・。
参加者30名弱で同時接続してこの速度なので、ネットワーク環境は盤石と言えるでしょう。しかもこのWiFi、旅館内のどこからでも繋がります。便利すぎる。
ひとをダメにするクッション
超絶快適に作業できるんですが、快適すぎて眠くなるので危険アイテムでした。自宅にほしい・・・。
各種備品
外部ディスプレイやMac用の変換ケーブル、電源タップなどはすべて旅館からレンタルできました。ホワイトボードも借りれるので、地味に便利。
24時間使える温泉
館内の温泉は清掃時以外、基本的に24時間使用可能でした。開発に疲れたら湯に浸かっていつでもリフレッシュできます。
猫
かわいい!!!!!!!!!!!!!!!!11
開発終わった.....🐱 #golangjp pic.twitter.com/gZ8rVqgDI5
— shanon.kt (@shanonim) 2017年4月22日
成果
個人アプリのサーバサイド開発をやりました。
具体的には、
- Go言語の基本を覚える(文法・開発方法・一般的なlibraryについて)
- 開発環境を整える(今回はIntelliJ CEにGolangPluginを入れて使いました。)
- APIサーバ構築に必要なlibraryを使ってみる
- 実際に個人サービスのAPIモックを作ってみる
という順番で作業しました。
反省
事前にTODOをまとめて合宿に臨んだのですが、計画していたほど進捗できなかったのが心残りです。
A Tour of Goなど、基本的なチュートリアルを事前に習得して参加しておけばもっと開発速度上げられたなぁという反省があります。
まとめ
知識まっさらな状態からの参加でしたが、週末2日間でかなりの経験値を得ることができました。勉強せざるを得ない環境にあえて身を置くのも、たまにはいいですね☺
あと、Go玄人勢のGolang愛がすごかったので、ぼくもそれにあてられてGopherくんが好きになりました。
この合宿で得たスタートダッシュを活かして、引き続きGo言語やっていきたいと思います。
@合宿参加者のみなさま
2日間ありがとうございました!また勉強会や次の合宿(!)でお会いしましょう🍺
おまけ
旅館の美味しいご飯
合宿ごはん、美味しかった☺ pic.twitter.com/QAAZPbQBKv
— shanon.kt (@shanonim) 2017年4月22日
旅館からの差し入れデザートに合宿会場が沸いた #golangjp pic.twitter.com/cF09J64VK7
— shanon.kt (@shanonim) 2017年4月23日
🍙🍻 #golangjp pic.twitter.com/gYb86UjiEn
— shanon.kt (@shanonim) 2017年4月23日
日報を書き続けるモチベーションについて
半年前に書いた記事。 shanonim.hatenablog.com
この頃は、
- DayOneに書き貯める
- 一日の終わりにSlackの分報チャンネルにsnippetを投げる
っていう運用にしてたけど、最近は
に変わった。
日報を書くモチベーション
2つの面があって、ひとつは「自分用のメモ」
- 今日やった作業を振り返る
- 明日の作業を棚卸しする
- 自分自身のアサイン率を確認する
もうひとつは「報告」
- チームに自分の状況を共有する
- 上司に自分の状況を共有する
仕事で書く日報においては、後者の目的の方が強い。(前者だけならDayOneに日記として書けばいいだけなので。)
つまり、「日報を書くモチベーション=報告するモチベーション」というように言い換えられる。
悩み
前提として、今のチームでは日報の提出ルールがなくて自分が勝手にやってるだけだったりする。書いても書かなくてもよいということはつまり、別に読まなくてもよいということ。
そういう状況で報告し続けるモチベーション維持ってのが結構難しくて、フィードバックのない作業を淡々と続けるのはキツい。アウトプットするからには何かしらのアドバイスがほしいと思ってしまうけど、だってルール上読まなくていいんだから「毎日ぼくの日報読んでください!!」ともなかなか言いづらい。。
「だったら書かなくていいじゃん」って言われるけど、そういうわけにもいかないなぁと思う理由がひとつあって「エンジニアの仕事って外から見ると何やってるかよくわからないよね」問題をなんとかしたい気持ちが強い。 作業内容が日報という形でオープンになっていれば「アイツはなんかやっとるな」というのがわかるし、理解してもらえる。逆に何やってるかわからない状態だと手が空いてるように見えてしまう時があって、そういう時の評価は大抵実績と噛み合っていない。
なので、やってることをちゃんとやってるアピールすることは必要。
まとめ
日報を読んでもらうために書くことをルール化したいって気持ちは全然なくて書きたいひとが勝手に書けばいいと思ってるけど、そういう自由な状況における報告の仕組みって難しい。。
何か良い解決方法があったら教えてください。
Kotlin初心者向けハンズオンにメンターで参加しました #teratail_kt
仕事で毎日書いてるとはいえ、たった2,3ヶ月の経験でメンターをやってもよいのだろうか・・・という葛藤はありましたが、良い機会をもらったと思ってがんばりました。
What’s Kotlin?
「Kotlinって新しいバンド。。?」
— shanon (@shanonim) 2017年4月15日
プログラミング言語です。
ハンズオン
ハンズオンの講師は、@ngsw_taroさんでした。
すでに知ってる文法でもたろうさんの説明で再理解できたところが結構ありました。やっぱり実際に話を聞きながらその場で手を動かすと理解度がぜんぜん違う。途中、メンタリングを忘れて普通に勉強してました。(すみません….
たろうさんのKotlinライブコーディングが見れる会😭👏 #teratail_kt
— shanon (@shanonim) 2017年4月15日
もくもく
ハンズオンで一通りKotlinの文法だったり便利な構文を学んだ後、もくもく作業をやりました。Twitterのハッシュタグ(#teratail_kt)を見て質問にレスポンスしたり、Androidアプリ開発でのユースケースについて話したり、メンターっぽいことを少し。
それ以外の時間は、個人アプリをKotlinで作ってました。
反省
基本、受けだった
質問があったら答えるものの、自分から参加者のテーブルを回って「何か質問ありますか?」とまではアクションできなかった。というかそこまでやって全ての質問に答えられる自信がなかったので、もっと勉強しようと思った。
気づくのが遅い
もくもく会の途中でTwitterに質問が来てたものの、自分の作業に夢中になってしまって気づくのが遅くなった件があった。とても申し訳ない・・・。
良かったこと
Kotlinの良さを再確認できました。
when式、最高すぎて涙出る #teratail_kt
— shanon (@shanonim) 2017年4月15日
はーーー見やすい。。。☺ #teratail_kt
— shanon (@shanonim) 2017年4月15日
読みやすいし書きやすいし簡潔だし賢いし、何より名前がかわいい。名前がかわいい。
あと、たろうさんの著書(通称赤べこ本)にサインを頂きました。🎉ミーハーなことしてすみません。。
Kotlinスタートブック -新しいAndroidプログラミング
- 作者: 長澤太郎
- 出版社/メーカー: リックテレコム
- 発売日: 2016/07/13
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
嬉しい!!!!!!!!!!!!!!!!!!!!1
まとめ
Kotlinはいいぞ。
イベント
「まだKotlin触ったことないけど興味あるなぁ〜」って人は、Event Driven DevelopmentでいますぐLT枠登録!💪 kotlin.connpass.com
会社のデスクに人工芝を敷いていい感じにした。
会社のデスクは、一日のほとんどの時間を過ごす大切な空間です。
ちょっとした工夫で、快適なデスク環境にすることができます。
アイテム
- 人工芝
- 折りたたみステップ
- なんか箱
- なんか植物(プラスチック製)
すべて100円ショップ(CanDo)で買いました。
敷く
敷きます。
折りたたみステップ
外部ディスプレイを置く用です。
技術書を重ねて置く人も多いですが、こっちのほうが安定感あるし見た目が良いのでおすすめです。
良い。
置く
置きます。
デスクが華やかになり、おしゃれな気持ちになります。
プラスチック製ですが。
片付ける
イヤホンやスマホを片付けると、
スッキリします。
アフター
💯
まとめ
- デスクには緑が必要
- 小物をまとめる箱、良い
おすすめです。💪
アニソン聴き放題サービス『ANiUTa』を使ってみた #ANiUTa
早速使ってみました。 aniuta.co.jp
iOS/Androidアプリがリリースされています。Web版やPCアプリはないとのこと。 機能面のレビューは以下記事が詳しかったです。 www.phileweb.com
ここでは個人的な使ってみた所感を雑に書きます。
ポジ
豊富な曲ラインナップ
アニメのOP/ED以外にも、サウンドトラック盤とかキャラソンCDも充実してて最高か〜〜となりました。
はーーーーOSTもあるーーーー😭😭😭 pic.twitter.com/LHF270uuL9
— shanon (@shanonim) 2017年3月25日
今期(2017年冬アニメ)の曲もばっちり用意されていて、満足度高いです。
月額が安い
月額600円(税込)です。ジャンル特化型なのでAppleMusicやAWAなどに比べて安いのはそうなのかもと思いつつ、想定していた金額よりだいぶ安くて嬉しい。。
dアニメストア(月額400円(税抜))と合わせれば、1,000円と少しで夢の全方位アニメ生活が手に入ります。
月額600円が高いと言う人・・🤔🤔🤔
— shanon (@shanonim) 2017年3月25日
ネガ
キャッシュ問題
一度再生した曲は、自動的に端末にキャッシュされて次回以降はそこから再生されるとのこと。
キャッシュ領域も自分で設定できるし、あーなるほど便利だなって思ったんですけど、明らかにキャッシュの増え方がおかしい・・。そんなに曲再生してないのに数GBオーダーで増えてる。
おそらく、一度再生した曲に加えて「ライブラリに登録した曲」もキャッシュしてるんじゃないかと思うんですけど、どうなんでしょう。ヘルプの「ライブラリとは何ですか?」の項で「気になった曲をためておくことのできる場所のことです。」と書かれていたので、貯めておく=全部キャッシュするってことなのか、もしかして。
と思ってたら、別のヘルプ項目に「一度再生した楽曲、もしくはライブラリに登録した楽曲については端末内にデータがキャッシュとして残りますので、」って書いてました。oh..
このままだとライブラリ登録ボタン連打→バックグラウンドでキャッシュのダウンロードタスクが積まれる→キャッシュ爆増&動作重くなる、の流れになりそう。(やたらクラッシュしまくるのもしかして….?
というかそれ以前にサーバー側が配信過多で死にそう。
公式のお知らせもこのことかなぁ。
【明らかになっている課題】
— アニュータ (@aniuta_PR) 2017年3月25日
・iOS版にてライブラリに大量の楽曲を登録すると挙動が不安定になり、突然アプリが終了する
→原因の特定ができましたので現在アプリの修正を行っています
早期にバージョンアップが行えるようにいたします。
ご不便をおかけいたしますが今しばらくお待ちください
ライブラリ追加の連打はやめましょう。
4G or WiFi問題
4G回線でもキャッシュ保存される?という疑問に対してのヘルプ記述がないので、外出先でライブラリ登録が怖かった。(もしどこかに書いてて見落としてたらすみません…
うっかり4G回線でライブラリ登録によるキャッシュが発生した場合、余裕でデータ通信上限ぶっちぎってパケ死します。たぶん。
一応、WiFi→4Gに切り替えた時にキャッシュ保存が一時停止する動作は確認できたので大丈夫だと思うけど、安心したいのでヘルプに書いてくださいお願いします
時々再生できなくなる問題
最初はサーバ側のトラブルかなぁ…と思って時間をおいてリトライしてみたけど、状況が変わらないケースが多くなってきて、試しにタスクkill&RAMリセットをすると直った。
#ANiUTa のこのバグ、アプリ全て終了→RAMクリア(電源長押し→Homeボタン長押し)で一時的に解消した🤔やっぱりクライアント側の問題なのかな... pic.twitter.com/Fg0T2DJBdW
— shanon (@shanonim) 2017年3月25日
バックグラウンドにいた重めのアプリ(AbemaTV、GoogleMapその他)を一掃してからアプリに戻って再生すると上手くいったり。
メモリ圧迫してるのかどうかわからないけど、とりあえずエラーメッセージで混乱するので変えたほうがよさそう?
まとめ
- 聴きたいアニソンたくさん揃ってて神サービス
- でもまだ一部未完成
ここからは完全に想像なんですけど…一昨日のプレスリリースが結構大掛かり(声優さん呼んでリリースイベントやったり各種メディアに一斉に載ったり)だったので、既知バグあってもリリース時期ずらせない状況だったのではと思ったり(あるあるすぎてつらい)
ANiUTaのリリース元、株式会社アニュータは先月設立された新会社とのこと。
会社概要 | ANiUTa
アニュータの社長さんが以下記事でアプリの使い勝手について話してるんですけど、 webnewtype.com
「軽くサクサク動く」ことを何より重視しています。それと、キャッシュをうまく使うので、一度読み込んだ曲は通信なしに再生することができます。
また、曲が再生されたら、極力止まらないということも心がけています。聴き終わったら勝手にどんどん次が始まるように作っているので、ストレスなくアニソン漬けになれるんです。
なるほど・・・ガンガンキャッシュするのはそのあたりの思惑あってのことのようです。🤔🤔🤔
であれば、できるだけ早くキャッシュに関するissueを解決したいですよねきっと..
これからのアプリ改善と、あとはさらなる楽曲追加が楽しみです。応援してます🙏🙏🙏