iyuichiの私的開発ログ

渋谷で働くWebエンジニアのログ. Java, Android, iOS, Docker, GCP, AWS, ゲーム開発

開発スピードを維持するには

先日、この記事を見かけて考えたこと。
だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - Mitsuyuki.Shiiba

  • 言われたものをそのまま作っていって整合性を取るためにコードが複雑化していってしまう。
  • 設計に凝りすぎて汎用的に作ったが使われないものが多く、どうしてこうなってる?がわからなくて困る。

どっちもよくある。

どういう意図でその実装をしたのかがわかるようになっていると良いのだけれでなかなかそういうものをドキュメントなのか、プルリクなのかコミットコメントなのかに残しておいて適宜読めるようにってのができてない。

何か良いソリューションはないものだろうか。

目の前のことに追われすぎない、かつ、分からない先のことを想像で考え過ぎない。

これには同意。

想像しすぎて設計と実装に時間をかけすぎるとうまくいった試しがない。
かといってその場しのぎ的なif文で構成された巨大なクラスとかも辛い。

よく考えて、どういう方向で行くか決断し、決断した経緯と意図が残っているとその道のプロにいちいち聞かなくてもよくなるかな。

なんてことをモヤモヤと考えさせられた。

MP3終了のお知らせってなんだ?

オーディオファイルの代名詞としてIT業界に関わっていない一般の方でも聞いたことがあると思うMP3。
一時期はデジタルオーディオファイルを再生できる機器を総称してMP3プレイヤーなんて呼び方もあったな。

【MA-8564】APOD MP3 / MP3プレイヤー

【MA-8564】APOD MP3 / MP3プレイヤー

そんなMP3にも終わりが来たようです。

www.gizmodo.jp

英語のポッドキャストですがAccidental Tech Podcastでもこの件について語られてました。

atp.fm

mp3は未だに再生できる環境が一番多く、その点でAACはまだそこまでいたっていないのではないかという辺りが気になりますが、今後しばらくはAACが主流になりそうでしょうか。

まだパソコンやインターネットが普及し、インターネット経由で音楽や動画を楽しむようになってからそれほど経っていない気がしてましたがこの業界の動きは早いですね。

新人へのトレーニングで大切だと思うただ1つのこと

GWも終わりしばらく長期休暇がないことに気づいた今日この頃。
4月に新卒で入社した方もそろそろ社会人としての生活に慣れてきたでしょうかね。

仕事はまだまだこれから覚えることがたくさんあるでしょう。
半年くらいすればだいぶわかることの比率も上がってくるんじゃないかな。

Qiitaに「エンジニアを指導する立場の人こそ読んでほしい、新卒エンジニアが1年間で上司に感じた5つのこと」なんて記事があってコメントがたくさん付いていたのでちょっと読んでみました。

qiita.com

記事を読んだみなさんの反応は様々です。

記事とそこに付いたコメントもざっと読んでいて感じたのは、
教える側も教わる側にもHRTが大切なんじゃないかと。
そう、「謙虚(Humility) 、尊敬(Respect) 、信頼( Trust) 」というアレです。

謙虚な姿勢で相手をリスペクトして相手の立場に立って行動できればお互いにストレスが減ると思います。
新人だから先輩が教えるのは当然、そうかもしれませんが態度にそれが出ていると気持ちよくはないかな。
教える側も自分が苦労したことはなるべく親切に対応してあげた方が良いと思うし。

信頼はある程度の実績を重ねた上で本当に得られるものだと思うので謙虚に相手を尊敬する態度でコミュニケーションをとって信頼を勝ち得れば働きやすくなると思われ。

こいつ大丈夫そうだなと思われていれば、ちゃんとググったの?同じミスするな!とかいちいち言わないと思うんです。

それと考えを押し付けるな系の主張にもそれを言っている人をリスペクト(絶対的に信じ従えという意味ではなく一旦は受け入れる・やってみるくらい)して実践した上で自分の意見も出していくと良いと思います。
教える側も新人の意見だからと軽くみず一旦は受け入れた上で、もしくは本人のやり方でやってもらった上で振り返りをしてみると良いのかな。

これを実践するのに心に留めておきたい言葉
守・破・離
『形を持つ人が形を破るのが型破り。形がないのに破れば、形無し。』

まあ型を知らずに自分がやりたいようにやるのは違うよ!ってこと。

HRTを忘れずに!

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

Clipsはなかなか良さげ

ClipsはiOS 10.3.1にしないとインストールできません。
ちょっとした動画をを作るのに良さそうです。
字幕入れたり、BGM入れたり簡単な操作でできそう。
www.apple.com

編集した動画は端末に保存したり、各種SNSに投稿したりできるけれどApple自体はソーシャルを提供していない。

こういう動画を作成するために使いやすいアプリも出てきて情報発信は動画中心になっていきそうな予感。
インターネットの回線速度や、端末の進化によってだんだんと情報発信内容が進化しているなあと思ってます。

  1. テキスト(メールや既存文書のインターネット上での公開)
  2. 写真(ブログやソーシャルメディア)
  3. 動画(インスタ、スナチャなど短い動画)

こんな感じ。
動画でも写っているもののタグ付けや音声の文字起こしが自動でできるようになってきていてSearchableになってきているので、ますます動画での情報の記録や発信がされていくと思います。

英語ですが一通りのClipsの操作が動画で説明されているので一回みてみるとどんなことができるのかわかりやすいと思います。

Apple's Clips app: a step-by-step guide

最後に先日マリノスの試合を観に行った際に撮影した動画をClipsで編集してみました。
この動画はiPhoneの純正カメラアプリで動画撮影したものを後からClipsで編集だけしたのですが今度はClipsで撮影してみたいなと思ってます。

2017-04-08 マリノスvsジュビロ

改めて読んで見たい "Site Reliability Engineering"

何気なしにデブサミのこの記事を読んで、
thinkit.co.jp

記事の中の以下のようなワードが今の自分に響いたので改めて原文にも目を通したいなと。

  • 「運用という作業に50%以上の時間を使わないこと」
  • 稼働する時間の半分以上を「運用を自動化するためのコードなどを書くこと」
  • Googleにとっての運用とは、「人間のインタラクションを極力少なくしてソフトウェアで解決する」ことだと言える。

Google - Site Reliability Engineering

オライリーから紙の本も出ているけれど、ウェブで無料で公開されているので少しづつ読んでいこう。

Site Reliability Engineering: How Google Runs Production Systems

Site Reliability Engineering: How Google Runs Production Systems

  • 作者: Betsy Beyer,Chris Jones,Jennifer Petoff,Niall Richard Murphy
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2016/04/16
  • メディア: ペーパーバック
  • この商品を含むブログを見る

GCPの無料枠がすごいことに

www.publickey1.jp

ついにCompute Engineのf1-microが無料に。
herokuの無料枠で頑張らなくてもよくなるかもしれない。
自前のボット起動しておくのに良さそうです。
Cloud Storageも5G使えるのでもっとなんかできそうかも。

どうやらUSリージョンだけみたいなので注意。

1 f1-micro instance per month (US regions only)

Always Free Usage Limits  |  Google Cloud Platform Free Tier  |  Google Cloud Platform

iOSの自動継続をサーバサイドだけでハンドリングできるのか??

qiita.com

latest_receipt, latest_receipt_infoというレシートのフィールドに関して、

The values of the latest_receipt and latest_receipt_info keys are useful when checking whether an auto-renewable subscription is currently active. By providing any transaction receipt for the subscription and checking these values, you can get information about the currently-active subscription period. If the receipt being validated is for the latest renewal, the value for latest_receipt is the same as receipt-data (in the request) and the value for latest_receipt_info is the same as receipt.

Validating Receipts With the App Store

こんな感じで、最新の自動継続した情報を取れると言っている一方でiOS6スタイルのレシートでだけ返される値だとも書いてあって困る。

Only returned for iOS 6 style transaction receipts for auto-renewable subscriptions.

サーバ側でレシート検証をする必要があるケースとして、複数のプラットホームで決済可能なサービスでPCやスマートフォン以外の場所でもサービスを受けられる場合にはアプリを起動しなくてもサービスの継続または停止の判定をしなくてはならないと思います。

アップルのレシートに含まれるin_appは送信したレシートが発行された時点までの履歴しか入っていない認識で、latest_receipt_infoの中には初回購入後に定期購読で自動継続されたものも取得できるはず。

その項目がiOS6までしか利用できないものだとしたら非常に困る。

You also asked “Essentially my question is this: "If a user has successfully purchased an auto-renewing subscription does that imply that the "latest_receipt" and "latest_receipt_info" fields will always be populated in the receipt validation response?"
Yes - unless there is a problem with the verifyReceipt server.

latest_receipt and latest_receipt_info fields -... | Apple Developer Forums

ここのスレッドを見る限りではアップルのエンジニアらしき人がauto-renewされるアイテムを買った場合には"latest_receipt" and "latest_receipt_info" が含まれると言っているのでiOS7以降でもサーバサイドだけで自動継続の確認ができると思って良いのかな?

UNDOCUMENTED featureだといつ変更されるかわからなくって困る。