2017年6月18日日曜日

ng-japan 2017に行ってきた

ng-japan 2017に行ってきました。
ツイートとスライドをまとめただけの記事です。

Keynote: How to Think About Angular



RxJSを活用したアプリケーション開発

CQRSを学ぶために「.NETのエンタープライズアプリケーションアーキテクチャ第2版 .NETを例にしたアプリケーション設計原則」という本を使っているそう。

You need to know SSR

 

Angularアプリのテストについて

Web Payments + Credential Management API

これはAngularのトークではなく、ブラウザでの支払いフォームなどの改善や新機能の紹介。
※スライドのURLを見つけられなかった。

Apple Pay JSをPayment Request APIと同じように使えるwrapper
https://github.com/GoogleChrome/appr-wrapper

Angular, Firebase, Cloud Functions for Firebase

スライド


関数型はモテる。

Advanced Component styling with Angular (v4+)



Best practices for modules in Angular



Angular Animations

スライド

What's New in Angular Material

Autocomplete や Datepickerふえたよー。今後も対応部品増やしていくよー。というトーク。




2017年5月17日水曜日

Google I/O 2017 初渡航KPT(非技術記事)

初渡航だよ。

2017/05/15に入国、16日までの時点での気付きを、雑だけどKPTにまとめてみた。 最終日までにアップデートはあるとおもう(記事を更新するとは言っていない)。

登壇予定の Google I/O 2017 フィードバックセミナー もよろしく。

Keep

  • 成田の出国ゲートの職員さんが可愛かった
  • 自動化ゲートの登録をしておくと、入出国の手続きがスムーズになる
  • 無印良品のネッククッション
    • 飛行機の中で寝る時に色んな形で使える。首に巻いてネックピローにしてもいいし、抱きまくらにもなる。座席で同じ体勢で寝続けるのが辛いので色んな形になるこの商品がちょうどよかった。
  • 耳栓
    • 機内は大型のトラックや重機のエンジンのそばにいるような騒音が鳴り続けてます。それが高速道路を車で走ってる時くらいにはなる。
  • 1日余裕を持って現地入りする
    • 到着したその日は時差ボケで眠すぎてほぼ何も出来ない

Problem

  • 時差ボケ
    • ホテルにチェックイン直後に寝入ってしまった(日本時間で深夜だった)
    • 2日目も同じ時間帯(日本時間では深夜)に眠くなってしまった。
  • SIMのアクティベートのミス
    • ZIP SIMというのを購入した。SIMを入れた直後に滞在地のZIPコードをSMSで送ると、そこの地域の電話番号が割り当てられる。
    • ZIPコードを送らないと、ランダムな電話番号が割り当てられる。カリフォルニアに居るのに東海岸エリアの番号になってしまった。
    • ※参考: https://www.amazon.co.jp/dp/B01ESSHHSM の商品説明
  • SIMの電話番号重複
    • 以前別の人が使っていた番号らしく、知らない電話がかかってきたり…
    • Uberも↑のせいで登録できずサポート問い合わせ中
    • Lyftは同じ番号を使っていた別人のアカウントを引き継ぐかとか聞かれてしまった
  • 旅行用に買った安い財布のジッパーが開けづらかった
  • 耳栓のサイズ
    • サイレンシアのMだと少し大きかった
  • アイマスク使わなかった。
    • 狭い機内で荷物の出し入れが大変だったので、横着して席に元々あったブランケット被って凌いでいた。
    • 帰りはちゃんとアイマスク使ってみよう。
  • 喉の乾燥防止用のマスク
    • 同上
  • 衣類をTシャツと下着とセットで圧縮袋にいれておいたが、探しづらい。
    • 一方で、Tシャツだけ下着だけの圧縮袋に分けると、1度目に着替えを取り出す時に全部解凍することになる…

Try

  • 財布はもっと使いやすさを考えて買おう
  • プリペイドSIMでUberやLyftなど電話番号が必要なサービスを登録した場合
    • 後で電話番号の登録を消したりアカウントを消したりしておく
  • 衣類は小さめの圧縮袋に種類ごとにまとめて入れておく
    • 種類ごとにすることで探しやすくする
    • 小さめのもので小分けにしておくことで、ちょっとずつ解凍できるようにする

2016年10月25日火曜日

golang.tokyo #1 行ってきたメモ

2016/10/25にメルカリで行われたgolang.tokyo #1に行ってきたメモ
http://golangtokyo.connpass.com/event/39965/

Twitterのハッシュタグは #golangtokyo

知らない名前がたくさん出てきて半分以上聞き漏らした

メンバーのGo教育

  • レビューでGoっぽくない書き方を指摘するときは、blogとか外部の資料を参照して指摘する(レビュワー個人の意見ではなく一般的な点だと伝える)

IDEやデバッグ

  • vim, InteliJ, Atom, emacs
    • だいたい何かしらプラグインがある
  • 会場内でデバッガ使ってる人はあまりいなかった
  • Bleveっていうのがあるらしい

コーディング規約は? レビューの指針は? golintに従ってます?

  • 変数名は簡潔にする(Goの文化)
    • でも事業ドメインなコードを書く場合どうしても説明的になっちゃうのは仕方ない
  • 正規表現のMustCompileの使い方
  • golintは対応しておこう
    • ただし辛い場合はベストエフォートで。
    • golint使っとくと、いけないコードをパートナーに指摘するときに言いやすい。

Webフレームワーク・テンプレートエンジン・ORM

エラー処理どうしてますか?

  • pkg/errors
    • 外部ライブラリがまともなエラーを返さない場合にいい感じにwrapしよう
  • errgroup
  • 必須なものがないとかいう場合は積極的にpanic使おう

goのお手本になりそうなもの

ロガー

パッケージ分け

責務で分けたい?機能で分けたい?

  • ドメイン単位で切る
    • ニュース、ユーザーとかのドメインで分けてその中でデザインパターン
  • internalパッケージはライブラリを作るのでなければ使わない方がいい

テスト周り

  • GAE向けのアプリ使う場合でも、出来るだけgo本体だけで完結するようなロジックにして疎にしておく
  • テスティングフレームワーク使わない(testingのみ)
    • テストのためだけのミニ言語を覚えるとかめんどいし、後からのメンバーの受け入れコストもある
  • 出来るだけDBのテストは書かない
    • データはすべてinterfaceを定義しておけばモックできる
  • できるだけDB立ててテストするべきだよ派も

デプロイまでのフローとか工夫してる点、CI

  • goは基本ビルドが早い
    • 循環インポートとか周りから依存されまくってるパッケージが変わるとキャッシュが使われずフルビルド走っちゃう。ビルドが遅い場合は設計が悪いかも。
    • kaneshin「そういう事があって、ペアーズのビルドは遅くなっちゃってる。別に一人で書いてるやつは早いけどね!」
  • 本番ビルドはChatOpsで3回コマンド叩かないといけない、とか
    • 3回の中で他メンバーのチェックを入れるようにしたり

pprof使ってる?本番のモニタリングとかチューニングとか

  • pprofでなくdd
  • stringを+で繋ぐな、とか地味なやつ

リファクタしたいところ/Goのイマイチな点

  • テンプレートエンジン…
  • timeのフォーマット…

メモ

パッケージの分け方について

2016年3月10日木曜日

El CapitanでBlockdiagのインストールに失敗した

事前に入れておくべきソフトウェアを入れてなかったので、遠回りしたよ。という話。

ちゃんとドキュメント読まなかった自分への自戒のために記す。

環境

  • Mac OS X 10.11.3 El Capitan

現象

これで行けるらしいがeasy_installでエラーになった

brew install freetype
sudo easy_install blockdiag

試したこと

  • easy_installのアップデートしてからインストールしなおし
    sudo easy_install -U setuptools
  • こんどはPillowがねーよって言われたので入れる
    sudo easy_install pip
    sudo pip install Pillow
  • funcparserlib「フハハハ、Pillowを倒しても俺が」
    sudo pip install funcparserlib

これで動くようになった

2015年11月15日日曜日

Android StudioとGradle wrapperが違うdebug.keystoreを使う問題

TL;DR

関連issue

Issue 162179 - android - Android Studio and Gradle wrapper use different default keystore - Android Open Source Project - Issue Tracker - Google Project Hosting
https://code.google.com/p/android/issues/detail?id=162179

嘆き

色々試した↓結果

それっぽいissueを見つける

真理に至る