React+MobX+Firebase-Authenticationでログイン/ログアウト機能を実装する

Qiitaにも書いてます React+MobX+Firebase-Authenticationでログイン/ログアウト機能を実装する

はじめに

以前似たようなことをReact+Reduxでやってみています。 React+Redux+Firebase Authenticationでログイン/ログアウト機能を実装する (1) React+Redux+Firebase Authenticationでログイン/ログアウト機能を実装する (2)

最近、趣味の小規模プロジェクトだとReduxめんどくさいな、、と思い始めました。そこで、シンプルでいいよと聞くMobXを試してみることに。 まず手始めに、Reduxをつかってやってみたのと同じことをやってみようと思い、Firebase-Authenticationを使ったログイン/ログアウト機能をもつアプリケーションを作ってみました。

作成したものはk5trismegistus/react-mobx-firebase-loginにあります。

続きを読む

Huawei P10のカメラ@バリ

7/14-18でバリ島にいってきました。その際にHuawei P10(not Plus)で撮影した写真を載せてみます。そういえばせっかくのワイドアパーチャ撮影を全然つかってないということに気がついてしまったのですが、これから購入しようか検討している方の参考になれば。

続きを読む

7/17〜7/23のアンテナ

その他

先週金曜から今週火曜までバリ島にいってました。P10かっといてよかったです。

ニュース

若者が「自分らしさ」を易々と捨てるシンプルな理由

gendai.ismedia.jp

SNSに注目すると、複数アカウントを使い分けるどころかTwitterFacebookも機能停止してこのブログで「自分」を表現しようとしている自分は「1980-90年代の若者」のメンタリティを持っているのかもしれない。

器用に場に合わせて生きるほうが「ラク」だしいいじゃん、自分を通すために必死になるなんてダサいという時代になってきているということなんだと思う。でも場に合わせるためには場を読まないといけない。そういう意味でのコミュ力は残っていると思う。

(7/20)

7/10~7/16のアンテナ

ニュース

AIはヒトより優しくなれる──国内初開催の「AI・人工知能EXPO」で奏でられた“聖者の足音”

wired.jp

人にやさしくするのってエネルギーがいるんですよね。それを疲れを知らない機械にやらせるのはとても正しいと思う。

人はついつい愚痴をこぼしたり怒りをぶつけたりしてしまうわけだが、それを受け止めるのが人間だったら受け止める方も疲れてしまう。ぶつけたほうも場合によっては「なんで自分の話を真面目に聞かないんだ!」と逆ギレしてさらに疲れてしまうこともままある。

(そういうふうに設計された)機械だったら、疲れることもうんざりすることもなく、ずーーーーっと「優しく」相手を受け止め、話を聞くことができる。

だいたいにおいて愚痴ったりしてる人たちって「聞いてくれて」さえいればいいわけで、高度な答えは求めていない。需要もあるだろうし、実現難易度も低めだと思う。ああ、はやく作るべきですぞ。

(7/10)

Rack-traffic-signalというgemを公開しました

Qiitaにも同じ記事を書いてます

どんなgem?

Ruby製Webアプリケーションにメンテナンスモードを導入するためのRackミドルウェアです。

↓みたいなやつです。

特長

すでにメンテナンスモードを導入するためのgemにはrack-maintenanceなどがありますが、このrack-traffic-signalには次のような特長があります。

メンテナンスグループごとのメンテナンスモード制御

パス、HTTPメソッドの組み合わせを「メンテナンスグループ」というくくりで扱います。

特定のメンテナンスグループだけをメンテナンスモードに入れる/外すことができます。新規ユーザー登録機能(get: /users/new, post: /users)のみメンテナンスモードに入れるといったことができます。 メンテナンスグループはリソースとアクションの組み合わせで設定できます。たとえばさきほど例に上げた新規ユーザー登録機能はリソース: user, アクション: registerと設定できます。

メンテナンスグループごとのレスポンス設定

メンテナンスグループごとに、メンテナンスモード時のHTTPステータスコード、レスポンス本文を設定することが可能です。

APIに対してはJSON形式で、それ以外はメンテナンス告知HTMLを返す、まだ一般公開したくない機能に関しては社内IPからのアクセスのみ通しそれ以外は404を返すなど柔軟な設定が可能です。

使用法

インストール方法などはREADMEを参照してください。ここでは、一応READMEにのっているものの分かりづらいだろうなぁという設定ファイルの書き方について解説します。

設定の書き方

Rack::TrafficSignal.setup do |config|
  # internal_ips に含めたIPアドレスは、社内IPアドレスとして扱えます。
  # 社内IPアドレスからのアクセスかどうかを判別するメソッドが存在しており、
  # その場合はメンテナンスモードをスキップする、といった制御が可能です。
  # その例は config.skip_by を参照してください。
  config.internal_ips = ['192.168.1.1/25']

  # メンテナンスモードをスキップするパスを指定。
  # こちらも `internal_ips` と同様 `skip_by` ブロックの中で利用することを想定しています。
  config.skip_paths = [/^\/users\/12345/]

  # メンテナンスグループに固有のレスポンス設定を書かなかった場合に使われる設定
  config.default_status = 503
  config.default_content_type = 'application/json'
  config.default_body = { error: 'error' }.to_json

  # メンテナンスグループの設定を行います。
  # パスの設定は文字列・正規表現どちらでも行なえますが、基本的には正規表現を用います。
  # 文字列で設定した場合は、厳密に一致した場合しか適用されません。
  config.maintenance_group =   {
    # <resource>: {
    #   <action>: [
    #     { methods: [:get, :post], path: <path_to_maintenance>}
    #   ]
    # }
    users: {
      register: [
        { methods: [:get], path: "/users/new"},
        { methods: [:post], path: "/users" }
      ],
      # また、メンテナンスグループごとにHTTPレスポンスステータスコードやレスポンスボディを
      # 設定することも可能です。
      update: [
        { methods: [:put], path: %r{/users/\d+}, status: 404, body: { meta: '404'}.to_json }
      ]
    }
  }

  # 現在のアプリケーションのメンテナンスモードを返すブロックを渡します。
  # 結果として、シンボルの配列を返すものである必要があります。
  # 基本的には `:<resource>_<action>` という形式ですが、特例があります。
  # :<resource>_all => そのリソースすべてのアクションをメンテナンスモードに入れる
  # :all => すべてのメンテナンスグループをメンテナンスモードに入れる
  config.maintenance_status_by do
    ENV['MAINTENANCE_STATUS'] # [:users_register, :users_update]
  end

  # このブロックがtrueを返した場合、メンテナンスモードかどうかの判定を行いません。
  # 次の例では、アクセス先が `skip_paths` に含まれている or 社内IPからのアクセスの場合
  # メンテナンスモードをスキップしています。
  config.skip_by do |env|
    Rack::TrafficSignal.skip_path?(env) || Rack::TrafficSignal.internal_access?
  end

  # こちらもメンテナンスモードをスキップする設定ですが、ただスキップするだけでなく
  # HTTPヘッダに 'X-RACK-TRAFFIC-SIGNAL-MAINTENANCE' が付与されます。
  # ちゃんとメンテナンスモードに入っているかどうか確認できるようになります。
  #
  # ヘッダをいちいち確認するのは面倒なので、付与されてたらみためでわかるようになる
  # ブラウザ拡張とかあったらよいですね!
  config.skip_with_warning_by do |env|
    Rack::TrafficSignal.skip_path?(env) || Rack::TrafficSignal.internal_access?
  end
end

さいごに

一週間ほどの突貫でつくったgemであり、危ないところも多々あります。 issuetたててもらったり、Pull Request送っていただけたりするととても喜びます。

https://github.com/k5trismegistus/rack-traffic-signal

Huawei P10 感想

P10を買ってみて、はたして今まで使っていたmi5と比べるとどうなのかというのを。書き終わってみたら、カメラ以外はだいたいmi5のほうがよかった、という記事になってしまっていた(泣)

でも、mi5がトップクラスによい機種だったという前提があるので、カメラ以外でmi5に勝ててないのは割としょうがないよね?きれいな写真がとれたらそれでいいのです。

カメラ

携帯を買い替えた最大にして唯一の理由ですね。これに関してはちょお満足。カメラを使う機会として夜の風景写真撮影が多いんだけど、ぶっちゃけX20よりきれいな写真がとれるかも。(かんたんにとるなら)

寛永寺付近、フルオートで撮った。夜なのに解像感がなかなか高い。

f:id:k5trismegistus:20170711001504j:plain

鶯谷のラブホテル街を望んで。長時間露光で撮っているので、通過した電車が光の線を描いている…!(長時間露光で夜景が撮れるのだ!)三脚無しで手持ち撮影したので少しぶれてるけど、すごくないですか?

f:id:k5trismegistus:20170711001507j:plain

銀座でみかけたお店。これも夜8時位にとったものだけど、かなりくっきり。

f:id:k5trismegistus:20170711003100j:plain

ワイドアパーチャで良く撮れた作例はみんな人物になってしまうのでのせられないんだけど、これもすごいぞ。手前味噌ながら、雑誌にのってる写真みたい!と思ってしまった。

写真ビューア

やっぱ撮った写真はみるじゃないですか。

これに関してもmi5に対して勝っていると思う。プリインのギャラリーアプリがフォトマップ機能対応で、地図の上に撮った写真を並べて表示することができる。個人的にこの機能は大好きなので、とてもありがたい。

UI

HuaweiのEMUIはちょっと使いづらいですね。MIUIが優秀なのかもしれないけど…。(まわりでは純正Androidより使いやすい、という意見もあった)
すげー変わるってわけじゃないんだけど、選べるとしたらMIUIがいい。

あとやっぱり戻るボタンとかがないのは使いづらい。P10は画面内ソフトキーではなく指紋センサーを使うこともできるが、ちょっとなぁ。(指紋センサーをタップで戻る、長押しでホーム、横スライドでタスクメニュー。)ただこればかりは時代の流れなのでしょうがない感。ついにGalaxyもなくしてしまいましたしね。
むしろ背面指紋センサーでソフトキー一択だったP9からこのタイプにしてくれただけでも感謝。

指紋認証に関しては進化してるな、と思った。全然失敗しないし、指多少濡れててもいけるし。

サイズとか重さとか

本体サイズはほぼ同じなんだけど、画面サイズは少し小さくなった。mi5の画面占有率がすごいんだけど、ちょっとの差が意外と目につく。ここはもうすこし頑張ってほしかった。
重さはひどいですね。ここばかりはmi5が至高だと思う。コレ以上のものってあるんだろうか。
あと持ちやすさもmi5のほうが上。

スペック

ぶっちゃけCPUがどうとかメモリ容量がどうとか、ゲームしないんで全然考慮してなかったんですね。体感ではどっちも対して変わらない。この記事を書くためにいちおうベンチマーク結果とかみてみたんだけど、だいたいトントン、むしろmi5のSnapdragon820のほうがちょっと高性能らしいですね。

mi5では対応していないmicroSDが刺さるんだけど、ぶっちゃけ今さらmicroSD…という感じ。実際刺してないし。SIMトレーと一体なので、電源オン状態でPCとデータの受け渡し、みたいな使い方ができない。

P10のほうが優れているのは対応バンド。日本キャリアのプラチナバンドや北米キャリアの使うバンドにも対応している。なのでこれまでmi5ではつながらなかったところでもつながる、という機会はある。

その他気になる点

バックパネルが金属製なので、熱が伝わりやすい。たいしてつかってないのにいつも熱い気がする。けどバッテリーが異様に減るなんてことはないし、異常発熱してるわけではなさそう。

Huawei P10を買いました

スマホはXiaomi mi5、タブレットはXiaomi miPad2。イヤホンもPiston2(Xiaomi)、そして大声では言えないナニカもXiaomi製の某品を使っているとめっきり"Xiaomize"された生活をしているわたくし。しかしmi5のカメラにはちょっと不満を感じていた。Xiaomiのスマホはカメラが弱い(センサーはPixelとかと同等品こそ使っていても、実際撮れるものは結構違う)と言われているが、実際不満。

なのでmi6のカメラがデュアルレンズカメラらしい、という噂を聞いて出たら買い替えだな!と意気込んでいたのであった。父親が世界初(だったと思う)デュアルレンズカメラのHuawei Honor6を使っていてその威力はよく知っていた。ワイドアパーチャ撮影モードというのがあり、絞りをいじって背景をぼかしたり全体をくっきり写したりと自由自在。しかもこれは実際に絞りをいじっているわけではなく、同時に撮影した二枚の画像から導出するものであるため、撮影後にピントを合わせなおしたり絞りを開けたり閉めたりできるのである!!
もちろんただカメラとしても優秀で、特に光量の少ないところで撮影すると違いが出る。mi5のカメラは晴れた昼間ならまぁまぁかな?と思うんだけど、夜になると何も映らない。

というわけで先日mi6の発表会の日はちゃんとライブも見ていたんだけど、なんとやっぱりデュアルレンズ搭載。こりゃ買いですわ~、と思っていた。でもXiaomiお得意の品薄商法のおかげで一月たっても全然手に入らない。

続きを読む