shanon's note

プログラミングとアニメがすき

実装を急ぐくらいなら、MVPでリリースすべき。

実装を急ぐくらいなら、MVPでリリースすべき。という当たり前ポエムです。

MVPは、Minimum Viable Product(必要最低限の能力を兼ね備えたプロダクト)です。

つらいパターン

  • リリースがやばい。
  • 実装を急ぐ。
    • 「とにかく動けばええねん。」
  • 技術的負債みの強いコードが残る。
    • 「誰やこんなコード書いたやつ!!!😡😡」→「2ヶ月前のおれや…………..」
    • 「誰やこんなコード書いたやつ!!!😡😡」→「えっ……..マジで誰……..(もうすでにいない担当者のcommit)」
  • enhancement issueが重くなる
    • つらい😇😇

つらい実装をしてしまう背景

MVPが判断できずにフル実装してしまう

MVPを判断できるプロダクトマネージャ、もしくはリードエンジニアがいるとベストなんだろうけど、実装メインのエンジニアだけではその判断が難しい。結局、プロジェクト開始当初のフル要件をリリースまで引っ張ってしまうパターン。

調整するのが面倒になってフル実装してしまう

実際にMVPを検討することになっても、ファーストリリースでどこまで機能を削る??→削った機能いつ実装できる??っていう決めが必要になるので、結局「あーー調整めんどいし実装したほうが早いわ!!!!」ってなってしまうパターン。

そもそも

スキル的に実装可能だけど時間がないという状況は、ミスを生みやすい状況だと思います。それでも完璧に実装するのがプロだろ!!!って言いたいのは、わかるけど・・・状況のイレギュラーをエンジニアに押し付けるのはよくないので、解決すべき🐯

つらい実装をしない🙅🙅

短期的には、

  • 時間のかかりそうな機能は一旦削除してissueを切る。
    • 落ち着いて段階リリースしよう。

中長期的には、

  • コードレビューを徹底する。
  • MVPのわかるプロダクトマネージャをしっかり立てる。

まとめ

念のために補足すると、今やってるプロジェクトがつらい状況っていうわけではなくて、むしろこうなりそうだったから修正している(軌道修正できた)という感じです。備忘録。

f:id:shanonim:20170606002857j:plain

いいリリースをやっていきたい。💪

Go合宿2017@ 土善旅館に参加しました #golangjp

Go言語のプログラミング合宿に参加してきました。

go-beginners.connpass.com

f:id:shanonim:20170423231450j:plain

なぜ参加したのか

普段触れる機会の少ないサーバーサイド言語を勉強するという目的で参加しました。仕事ではAndroidアプリ開発にフルコミットしているので、サーバーサイドの知識はほとんどと言っていいほど持っていません。とはいえ、今後必要になる機会は少なからずあるだろうし、クライアントサイドの実装をする上でサーバーサイドも分かるメリットは大きいと日頃から感じていました。(API周りの設計知識とか欲しい。)
サーバーサイド言語の中でもGo言語は前々から気にはなっていたのですが、始めるきっかけ掴めず・・・そこでちょうど合宿開催の話を聞いたので、この機会にチャレンジしてみようと思った次第です。

合宿場所

千葉県の土善旅館に行きました。
土善旅館[弓道合宿・開発合宿]

f:id:shanonim:20170423214234p:plain

エンジニア界隈ではおなじみの開発合宿御用達の旅館です。今回初めて行くことができました。 東京からだと、片道2時間半〜3時間くらいです。結構遠い。

参加費

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があったり、作業自体はそれぞれの個人活動でしたが、技術的な会話や交流が盛んで良い感じでした。

f:id:shanonim:20170423224540p:plain ↑合宿中のたのしい様子を応用して作ったWantedlyコラ画像

あとこれも合宿ならではですが、作業中は基本的にずっとお酒を飲んでいました。困ったら乾杯。バグったら乾杯。ビルド成功したら乾杯。デプロイしたら乾杯。🍻🍻🍻

f:id:shanonim:20170423231934j:plain

適度なアルコール摂取は作業効率アップに良い効果があるので(個人調べ)、たまにはアルコール駆動開発もいいかもしれません。

土善旅館の最高ポイント

「開発合宿に適した旅館」と言われても正直ピンときてなかったのですが、実際に行ってみてわかった最高ポイントがいくつかあります。

f:id:shanonim:20170423233711j:plain

WiFi環境が最高すぎる

とにかくWiFiが速い。

f:id:shanonim:20170423220435p:plain

これ、1日目の作業開始直後くらいに測ったやつですが、都内の光回線と遜色ありません。むしろ土善旅館の方が速いのでは・・・。
参加者30名弱で同時接続してこの速度なので、ネットワーク環境は盤石と言えるでしょう。しかもこのWiFi、旅館内のどこからでも繋がります。便利すぎる。

ひとをダメにするクッション

f:id:shanonim:20170423221247p:plain

yogibo.jp

超絶快適に作業できるんですが、快適すぎて眠くなるので危険アイテムでした。自宅にほしい・・・。

各種備品

外部ディスプレイやMac用の変換ケーブル、電源タップなどはすべて旅館からレンタルできました。ホワイトボードも借りれるので、地味に便利。

24時間使える温泉

館内の温泉は清掃時以外、基本的に24時間使用可能でした。開発に疲れたら湯に浸かっていつでもリフレッシュできます。

かわいい!!!!!!!!!!!!!!!!11

成果

個人アプリのサーバサイド開発をやりました。
具体的には、

  • Go言語の基本を覚える(文法・開発方法・一般的なlibraryについて)
  • 開発環境を整える(今回はIntelliJ CEにGolangPluginを入れて使いました。)
  • APIサーバ構築に必要なlibraryを使ってみる
  • 実際に個人サービスのAPIモックを作ってみる

という順番で作業しました。

反省

事前にTODOをまとめて合宿に臨んだのですが、計画していたほど進捗できなかったのが心残りです。 f:id:shanonim:20170423223516p:plain

A Tour of Goなど、基本的なチュートリアルを事前に習得して参加しておけばもっと開発速度上げられたなぁという反省があります。

まとめ

知識まっさらな状態からの参加でしたが、週末2日間でかなりの経験値を得ることができました。勉強せざるを得ない環境にあえて身を置くのも、たまにはいいですね☺
あと、Go玄人勢のGolang愛がすごかったので、ぼくもそれにあてられてGopherくんが好きになりました。

f:id:shanonim:20170423232914j:plain

この合宿で得たスタートダッシュを活かして、引き続きGo言語やっていきたいと思います。

@合宿参加者のみなさま
2日間ありがとうございました!また勉強会や次の合宿(!)でお会いしましょう🍺

おまけ

旅館の美味しいご飯

日報を書き続けるモチベーションについて

半年前に書いた記事。 shanonim.hatenablog.com

この頃は、

  • DayOneに書き貯める
  • 一日の終わりにSlackの分報チャンネルにsnippetを投げる

っていう運用にしてたけど、最近は

  • esa.ioに書き貯める
  • 一日の終わりにSlackの分報チャンネルにesa.ioのリンクを投げる

に変わった。

日報を書くモチベーション

2つの面があって、ひとつは「自分用のメモ」

  • 今日やった作業を振り返る
  • 明日の作業を棚卸しする
  • 自分自身のアサイン率を確認する

もうひとつは「報告」

  • チームに自分の状況を共有する
  • 上司に自分の状況を共有する

仕事で書く日報においては、後者の目的の方が強い。(前者だけならDayOneに日記として書けばいいだけなので。)
つまり、「日報を書くモチベーション=報告するモチベーション」というように言い換えられる。

悩み

前提として、今のチームでは日報の提出ルールがなくて自分が勝手にやってるだけだったりする。書いても書かなくてもよいということはつまり、別に読まなくてもよいということ。

そういう状況で報告し続けるモチベーション維持ってのが結構難しくて、フィードバックのない作業を淡々と続けるのはキツい。アウトプットするからには何かしらのアドバイスがほしいと思ってしまうけど、だってルール上読まなくていいんだから「毎日ぼくの日報読んでください!!」ともなかなか言いづらい。。

「だったら書かなくていいじゃん」って言われるけど、そういうわけにもいかないなぁと思う理由がひとつあって「エンジニアの仕事って外から見ると何やってるかよくわからないよね」問題をなんとかしたい気持ちが強い。 作業内容が日報という形でオープンになっていれば「アイツはなんかやっとるな」というのがわかるし、理解してもらえる。逆に何やってるかわからない状態だと手が空いてるように見えてしまう時があって、そういう時の評価は大抵実績と噛み合っていない。

なので、やってることをちゃんとやってるアピールすることは必要。

まとめ

日報を読んでもらうために書くことをルール化したいって気持ちは全然なくて書きたいひとが勝手に書けばいいと思ってるけど、そういう自由な状況における報告の仕組みって難しい。。

何か良い解決方法があったら教えてください。

Kotlin初心者向けハンズオンにメンターで参加しました #teratail_kt

kotlin.connpass.com

仕事で毎日書いてるとはいえ、たった2,3ヶ月の経験でメンターをやってもよいのだろうか・・・という葛藤はありましたが、良い機会をもらったと思ってがんばりました。

f:id:shanonim:20170416003636j:plain

What’s Kotlin?

プログラミング言語です。

ハンズオン

ハンズオンの講師は、@ngsw_taroさんでした。

すでに知ってる文法でもたろうさんの説明で再理解できたところが結構ありました。やっぱり実際に話を聞きながらその場で手を動かすと理解度がぜんぜん違う。途中、メンタリングを忘れて普通に勉強してました。(すみません….

もくもく

ハンズオンで一通りKotlinの文法だったり便利な構文を学んだ後、もくもく作業をやりました。Twitterハッシュタグ#teratail_kt)を見て質問にレスポンスしたり、Androidアプリ開発でのユースケースについて話したり、メンターっぽいことを少し。
それ以外の時間は、個人アプリをKotlinで作ってました。

反省

基本、受けだった

質問があったら答えるものの、自分から参加者のテーブルを回って「何か質問ありますか?」とまではアクションできなかった。というかそこまでやって全ての質問に答えられる自信がなかったので、もっと勉強しようと思った。

気づくのが遅い

もくもく会の途中でTwitterに質問が来てたものの、自分の作業に夢中になってしまって気づくのが遅くなった件があった。とても申し訳ない・・・。

良かったこと

Kotlinの良さを再確認できました。

読みやすいし書きやすいし簡潔だし賢いし、何より名前がかわいい。名前がかわいい。

あと、たろうさんの著書(通称赤べこ本)にサインを頂きました。🎉ミーハーなことしてすみません。。 f:id:shanonim:20170416010447j:plain

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

嬉しい!!!!!!!!!!!!!!!!!!!!1

まとめ

Kotlinはいいぞ。

イベント

「まだKotlin触ったことないけど興味あるなぁ〜」って人は、Event Driven DevelopmentでいますぐLT枠登録!💪 kotlin.connpass.com

会社のデスクに人工芝を敷いていい感じにした。

会社のデスクは、一日のほとんどの時間を過ごす大切な空間です。

f:id:shanonim:20170328005544j:plain

ちょっとした工夫で、快適なデスク環境にすることができます。

アイテム

f:id:shanonim:20170328013849j:plain

  • 人工芝
  • 折りたたみステップ
  • なんか箱
  • なんか植物(プラスチック製)

すべて100円ショップ(CanDo)で買いました。

f:id:shanonim:20170328015309j:plain

敷く

敷きます。

f:id:shanonim:20170328014248j:plain

折りたたみステップ

外部ディスプレイを置く用です。

f:id:shanonim:20170328014330j:plain

技術書を重ねて置く人も多いですが、こっちのほうが安定感あるし見た目が良いのでおすすめです。

f:id:shanonim:20170328014509j:plain

良い。

置く

置きます。

f:id:shanonim:20170328014621j:plain

デスクが華やかになり、おしゃれな気持ちになります。
プラスチック製ですが。

片付ける

イヤホンやスマホを片付けると、

f:id:shanonim:20170328015008j:plain

スッキリします。

f:id:shanonim:20170328015040j:plain

アフター

💯

f:id:shanonim:20170328015106j:plain

まとめ

  • デスクには緑が必要
  • 小物をまとめる箱、良い

おすすめです。💪

アニソン聴き放題サービス『ANiUTa』を使ってみた #ANiUTa

早速使ってみました。 aniuta.co.jp

f:id:shanonim:20170326005712p:plain:w350

iOS/Androidアプリがリリースされています。Web版やPCアプリはないとのこと。 機能面のレビューは以下記事が詳しかったです。 www.phileweb.com

ここでは個人的な使ってみた所感を雑に書きます。

ポジ

豊富な曲ラインナップ

アニメのOP/ED以外にも、サウンドトラック盤とかキャラソンCDも充実してて最高か〜〜となりました。

今期(2017年冬アニメ)の曲もばっちり用意されていて、満足度高いです。

f:id:shanonim:20170326023733p:plain:w350

月額が安い

月額600円(税込)です。ジャンル特化型なのでAppleMusicやAWAなどに比べて安いのはそうなのかもと思いつつ、想定していた金額よりだいぶ安くて嬉しい。。
dアニメストア(月額400円(税抜))と合わせれば、1,000円と少しで夢の全方位アニメ生活が手に入ります。

ネガ

キャッシュ問題

一度再生した曲は、自動的に端末にキャッシュされて次回以降はそこから再生されるとのこと。

f:id:shanonim:20170326010231p:plain:w350

キャッシュ領域も自分で設定できるし、あーなるほど便利だなって思ったんですけど、明らかにキャッシュの増え方がおかしい・・。そんなに曲再生してないのに数GBオーダーで増えてる。

f:id:shanonim:20170326010910p:plain:w350

おそらく、一度再生した曲に加えて「ライブラリに登録した曲」もキャッシュしてるんじゃないかと思うんですけど、どうなんでしょう。ヘルプの「ライブラリとは何ですか?」の項で「気になった曲をためておくことのできる場所のことです。」と書かれていたので、貯めておく=全部キャッシュするってことなのか、もしかして。

と思ってたら、別のヘルプ項目に「一度再生した楽曲、もしくはライブラリに登録した楽曲については端末内にデータがキャッシュとして残りますので、」って書いてました。oh..

このままだとライブラリ登録ボタン連打→バックグラウンドでキャッシュのダウンロードタスクが積まれる→キャッシュ爆増&動作重くなる、の流れになりそう。(やたらクラッシュしまくるのもしかして….?
というかそれ以前にサーバー側が配信過多で死にそう。

公式のお知らせもこのことかなぁ。

ライブラリ追加の連打はやめましょう。

4G or WiFi問題

4G回線でもキャッシュ保存される?という疑問に対してのヘルプ記述がないので、外出先でライブラリ登録が怖かった。(もしどこかに書いてて見落としてたらすみません…
うっかり4G回線でライブラリ登録によるキャッシュが発生した場合、余裕でデータ通信上限ぶっちぎってパケ死します。たぶん。
一応、WiFi→4Gに切り替えた時にキャッシュ保存が一時停止する動作は確認できたので大丈夫だと思うけど、安心したいのでヘルプに書いてくださいお願いします

時々再生できなくなる問題

最初はサーバ側のトラブルかなぁ…と思って時間をおいてリトライしてみたけど、状況が変わらないケースが多くなってきて、試しにタスクkill&RAMリセットをすると直った。

バックグラウンドにいた重めのアプリ(AbemaTV、GoogleMapその他)を一掃してからアプリに戻って再生すると上手くいったり。
メモリ圧迫してるのかどうかわからないけど、とりあえずエラーメッセージで混乱するので変えたほうがよさそう?

まとめ

  • 聴きたいアニソンたくさん揃ってて神サービス
  • でもまだ一部未完成

ここからは完全に想像なんですけど…一昨日のプレスリリースが結構大掛かり(声優さん呼んでリリースイベントやったり各種メディアに一斉に載ったり)だったので、既知バグあってもリリース時期ずらせない状況だったのではと思ったり(あるあるすぎてつらい)

ANiUTaのリリース元、株式会社アニュータは先月設立された新会社とのこと。
会社概要 | ANiUTa

アニュータの社長さんが以下記事でアプリの使い勝手について話してるんですけど、 webnewtype.com

「軽くサクサク動く」ことを何より重視しています。それと、キャッシュをうまく使うので、一度読み込んだ曲は通信なしに再生することができます。
また、曲が再生されたら、極力止まらないということも心がけています。聴き終わったら勝手にどんどん次が始まるように作っているので、ストレスなくアニソン漬けになれるんです。

なるほど・・・ガンガンキャッシュするのはそのあたりの思惑あってのことのようです。🤔🤔🤔
であれば、できるだけ早くキャッシュに関するissueを解決したいですよねきっと..

これからのアプリ改善と、あとはさらなる楽曲追加が楽しみです。応援してます🙏🙏🙏

みかん狩りに行きました。🍊

会社のイベントでみかん狩りに行きました。🍊

イベントの目的

自社で取り扱っている商品の収穫に関わることで当事者意識を深めよう。🍊

場所

ジョイファーム小田原さん。
商品情報【みかん】@ジョイファーム小田原

道中

混んでた。🚌

到着まで時間があったので車内でピーシー触ってたら速攻で酔ってつらかった。

みかん狩り

海の見える産地。 f:id:shanonim:20170319225621j:plain

🍊🍊🍊 f:id:shanonim:20170319224512j:plain

美味しい!!!!!!!!💯 f:id:shanonim:20170319225206j:plain

How to get mikan easily 🤔🤔🤔 f:id:shanonim:20170319225247j:plain

鳥よけのネットを外してから収穫します。 f:id:shanonim:20170319225530j:plain

ガンガン収穫 f:id:shanonim:20170319230505j:plain

収穫した。 f:id:shanonim:20170319230652j:plain

昼食が豪華。 f:id:shanonim:20170319230803j:plain

後半はだいたいビールを飲んでいた。 f:id:shanonim:20170319230730j:plain

背が高いんだから働いて???という謎のプレッシャーを受けたため途中めちゃくちゃ働きましたが、最終的に生産者のおばあちゃんに「週末手伝いにきてほしい」と言って頂けて嬉しかったです。でも朝弱いのでたぶん無理です。

いろいろなみかん食べ比べ大会。 f:id:shanonim:20170319231200j:plain

🍊🍊🍊 f:id:shanonim:20170319231243j:plain

生産者のおばあちゃん。 f:id:shanonim:20170319232054j:plain

まとめ

机の上で作業しているだけでは想像できない体験をすることができてよかったです。
アプリやサービスを作るスキルも大事だけど、それを何のために作るのか、誰のために作るのかっていうのを知るために現場に行くのはもっと大切・・・という気付き。
当たり前のことだけど気がついたら忘れてしまうことだと思うので、これからも定期的に農作業していきたいと思います。(?

これからは圧倒的当事者意識でやっていくぞ。

終わり

唯一、海老名SAでメロンパン買えなかったのが心残りです。

[PR] 時々農作業したいエンジニア募集しておりますので、いつでもご連絡ください。