potatotipsでPUSH通知の許可UIに関して発表してきました

potatotips #26 (iOS/Android開発Tips共有会) - connpass で発表して参りました。運営スタッフの方や会場提供のSupershipさんありがとうございました。

発表資料

www.slideshare.net

Twitterの反応

続きを読む

Herokuと一緒に使う画像クラウドサービスまとめ

Herokuには画像が保存が出来ないのでS3や他のクラウドサービスに画像を保存する必要があります。選択肢を調査してみたのでまとめました。他におすすめがありましたら、よかったら教えて下さい。

Cloudinary - Cloud image service, upload, storage & CDN

とても良さそうなサービスだが、メールアドレスに対して画像アップロード空間が割り当てられるので、サービス毎に画像のアップ先を分けるためにはメールアドレスを切り直さないと行けない点が少し違和感がある。

実際に Can I use multiple ‘clouds’ on a single account? – Cloudinary Support では、別のアカウントを取得することを推奨している。

imgix • Real-time image processing and image CDN

自動でデバイスに合わせた画像を配信したり、最適なフォーマットを自動選択する機能は最高だと思いました。しかし、従量課金制なのが辛いかなと思いました。

Blitline - Image processing in the cloud

月額課金+使用時間課金です。機能は普通だと思いました。時間課金だから計算が難しいですが、そこそこ値段を高く感じた。

FilePreviews

サイトがシンプルでいい感じです。月額課金+ファイルアップロード単位の従量課金でした。従量課金制は、やはり少しだけ抵抗を感じる。

Kraken Image Optimizer · Kraken.io

画像の自動軽量化などが特徴のようです。月額制課金+追加GB従量課金のようです。

File Management for Images, Videos & more - Upload, Store, Process, & Deliver

シンプル&月額課金です。Cloudinaryに比べて機能は少ないですが、アプリ毎に画像のアップロード領域を区切れるメリットが有ります。

JavaScript Monitoring

特化

JavaScript Error Tracking from TrackJS

汎用

JavaScript Error Monitoring - Bugsnag

Sentry: Track exceptions with modern error logging for JavaScript, Python, Ruby, Java, and Node.js

Rollbar - Error Tracking Software for Ruby, Python, JavaScript, more

パフォーマンスモニタ付き

Real User Monitoring and JavaScript Error Tracking | Atatus

JavaScript errors page: Examining errors over time | New Relic Documentation

番外編

SpeedCurve | Pricing

 

iOSページスクロールライブラリの考察

触ってみたライブラリ

GitHub - goktugyil/EZSwipeController

使い方が難しそうだった

GitHub - hirohisa/PageController

ページタブまでついてくる奴は使いにくいかも

GitHub - kitasuke/PagingMenuController

ページタブまでついてくる奴は使いにくいかも

GitHub - mamaral/MAPageViewController

Objective-Cなのがちょっと気になる

GitHub - mindsnacks/MSPageViewController

Storyboardを見に行くのがユニーク

GitHub - DavdRoman/DRPageScrollView

Objective-Cなのがちょっと気になる 

GitHub - jhurt/GBPageControl

良さそう 

まとめ

もう少しシンプルで、画面を全てロードせずUICollectionView風に扱えるライブラリがほしいと思った。

Heroku Redis の初期設定はメモリMAX時にエラーとなる

以下の様なエラーが発生した。

Redis::CommandError
OOM command not allowed when used memory > 'maxmemory'.

次の資料によると、Heroku Redis の初期設定はメモリMAX時にエラーとなるようだ。
Heroku Redis は初期設定で利用してはならない - ボクココ
Timeoutの初期設定は加わったようだ。今見ると300となっている。

$ heroku redis:info
=== redis-acute (REDIS_URL)
Plan Hobby Dev
Status available
Created 2016-01-18 05:52 UTC
Version 3.0.5
Timeout 300
Maxmemory noeviction

$ Maxmemory policy for redis-acute (REDIS_URL) set to allkeys-lru.
allkeys-lru evict keys trying to remove the less recently used keys first.

$ heroku redis:maxmemory --policy allkeys-lru
=== redis-acute (REDIS_URL)
Plan Hobby Dev
Status available
Created 2016-01-18 05:52 UTC
Version 3.0.5
Timeout 300
Maxmemory allkeys-lru

iOSの画面に対してURLを割り振って、自由に画面を表示する

使用場面

Rails風なRoutesをiOSに実装したい。そのRoutesを使用して newsapp://articles/1234 のようなURLSchemeを上手く処理したい。

そして、UINavigationControllerに対して[HomeViewController, ArticleViewController]のような構造な上に起動したタイミングでArticleViewControllerを表示したい。

また、新規登録時に利用規約画面を出しつつも、その下にはちゃんと目的のArticleViewControllerが表示されるようにしたい。

必要な構成

  • ViewControllerの表示構造を制御できる層
  • URLSchemeを解釈する機能
  • 解釈したパラメータをViewControllerに渡す機能
  • 解釈したパスから構造を決定する機能

必要な機能

  • Routerを作成
  • ViewControllerの生成
  • ViewControllerのキャッシュ
  • パスに対する画面構造の生成

結論

やってみたけど、実装は出来ました。一般化・ライブラリ化は、システムに深く根付きすぎていて分離できず、現段階では難しそうでした。

Container View Controllerを学ぶ

資料で学ぶ

ライブラリで学ぶ