投稿

AWS DEV DAY 2018に行ってきました

イメージ
3日間の開催でしたが、最終日11/2(金)の主にStartup Technologyトラックを聴いてきました。
Amazon Pinpoint x グロースハック活用事例集 登壇者
・AWS 塚田さん
・ピクシブ 石川さん
・RoomClip平山さん
塚田さんは主にPinpointの説明
「なな転び八起のAWS 開発日記」のモデルにもなってる方。
https://aws.amazon.com/jp/about-aws/whats-new/2018/08/aws-launch-social-manga/

石川さんはPalcyの説明。そこでの利用事例のお話でした。
重量課金性とメールも送れるのが採用のポイントだったそう。Reproとも併用しているとのことでしたが、価格差が数十倍というのが衝撃でした。

平山さんはRoomClipのサービス説明。ユーザーが段階的に増えていく過程で要望も変わり、プッシュの仕組みも変えていって、現在はPinpointを利用しているとのこと(ただし、まだ最小構成での利用でフルで活用はまだできていないよう。JSONまで自社で生成して送信処理をPinpointでおこなう)
話の中で最初は、全員に送りたい。しばらくたって個別に送りたい。最近では、マーケティングツールとして使いたい。というのはすごいわかる!という感じで納得してしまいました。
COOがマネージドサービスで一人でスピード開発して得た知見 登壇者
・MESON 小林 さん

heymeshの紹介。ただしサービス自体は2018/09にクローズして、そこで得た知見などをお話されました。
サービスの開発自体は1ヶ月で作ったとのこと!サーバーレスで構築して、labmdaからfargateに処理を移行して時間のかかる処理を解決したなど。
データがストックされるアーキテクチャ設計は慎重にと。データ増加に伴い変更コストが高くなる(DynamoDBからAthenaへ移行したかったが難しい)
最後にchaliceの紹介。サーバーレスを簡単に実装ができる。ただしpythonに限る
サービスのクローズは将来的にマネージメントが難しいとの判断とのこと。
[AWS Startup ゼミ Dev Day 編] よくある課題を一気に解説!〜御社の技術レベルがアップする 2018 秋期講習〜 登壇者
・AWS 塚田さん

『Jap…

EBに置いたrailsからAmazon Kinesis Data FirehoseでlogをamazonESに投げる

はじめに ちょっとググるとamazonESにログを送信するのにfluentd(td-agent)を利用するケースが多いですが、その場合以下のライブラリを利用するみたいなのが多く出てきます。
https://github.com/atomita/fluent-plugin-aws-elasticsearch-service
ただ、メンテナンスされてないっぽいのと、Amazon Kinesis Data Firehoseを利用したほうが楽そうだったので設定してみました。

※EBの設定はしてあるものとします

Railsの設定 logrageでjsonのlog吐き出す

参考
https://qiita.com/ichi_s/items/7cf6ce5dbfaa00976dd4

Gemfile
gem 'lograge' gem 'logstash-event' gem "rack-user_agent"
config/initializers/lograge.rb
Rails.application.configure do config.lograge.enabled = true config.lograge.base_controller_class = ['ActionController::API', 'ActionController::Base'] config.lograge.formatter = Lograge::Formatters::Logstash.new config.lograge.keep_original_rails_log = true config.lograge.logger = ActiveSupport::Logger.new "#{Rails.root}/log/lograge_#{Rails.env}.log" config.lograge.custom_options = lambda do |event| payload = event.payload data = payload.slice(*%i( uuid host remote_ip user_agent …

Xcode10対応

はじめに Xcode10になって対応した内容を簡単にまとめ

エラー1Multiple commands error when building with Xcode 10 いろいろ解決方法が出ているが(Copy Bundle Resource のinfo.plist削除、Product Module Nameをrenameなど)どれをやっても駄目なのでLegacy Build systemでとりあえず逃げる。(自分の場合はpods関連っぽいのでpodのupdateに期待)
https://stackoverflow.com/questions/50718018/xcode-10-error-multiple-commands-produce

エラー22018-09-22 12:34:06.586869+0900 Nekostabe[2645:713106] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to allocate data stores for 2147483647 rows in section 8. Consider using fewer rows'
結構ハマりましたが、enumの値を取得する箇所で、rawValueするべき箇所がなぜかhashValueになっていて正しい数字が返らずエラーになっていた(今まではたまたま動いていた?)。

enum RowIndex { case header case content case footer case count } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { //return RowIndex.header.hashValue 今までは大丈夫だったが、今回動かなくなった return RowIndex.header.rawValue }
ついでにswift 4.2から採用されたenumのCaseIterableに…

Active StorageはまだPublic URL(ファイル)に対応していない

イメージ
ねこすたで新規に画像を登録する必要が出てきたので、今まではpaperclipを利用していましたが、5.2からActiveStorageが正式に出たのでそっちを利用しようかなと思いました。
そのために5.1から5.2にアップグレード実施(とくに問題なく完了)。

ねこすたの画像はS3にファイルを置いて、CloudFrontで表示するようにしています。
が、しかしActive StorageはまだPublic URL(ファイル)に対応していない!
https://github.com/rails/rails/issues/31419
https://stackoverflow.com/questions/50676891/rails-activestorage-link-to-cloudfront

作者が言ってます

対応は未定。

困ったということで、まだActive Storageに移行は早かった。paperclipもDeprecatedになってるので、ほかのライブラリも検討中。

普通のWEBサイトならいいけど、API向けにはまだ利用は早いかもしれない(用途によるけど)

APNs証明書を簡単に更新する方法

はじめに 1年に一回必ずやってくるAPNs証明書の更新。
非常に面倒でたまにしかやらないので、いつも忘れるのですが、これをコマンド一発でやってくれる便利なツールを紹介します。

Fastlanehttps://docs.fastlane.tools/actions/pem/

iOS、Androidアプリで簡単にdeployments、releasesファイルを作成してくれるやつです。
これにAPNs証明書の更新をコマンド一発でやってくれるツールが入っています。

まずは、fastlaneをインストール
https://docs.fastlane.tools/
$ gem install fastlane
iOSプロジェクトのカレントディレクトリに移動して以下を実行
$ fastlane init Gemfileとlockファイルが作成されます。

Fastfileを作成するとAppStoreへのアップ、TestFlightへのアップなどコマンドでできるようになりますが、その話はまた今度。

APNs証明書の更新 以下コマンドを実行
$ fastlane pem [✔] 🚀 [18:53:21]: fastlane detected a Gemfile in the current directory [18:53:21]: however it seems like you don't use `bundle exec` [18:53:21]: to launch fastlane faster, please use [18:53:21]: [18:53:21]: $ bundle exec fastlane pem [18:53:21]: [18:53:21]: Get started using a Gemfile for fastlane https://docs.fastlane.tools/getting-started/ios/setup/#use-a-gemfile +-------------------+------------------------+ | Summary for PEM 2.101.1 | +-------------------+------------------------…

YPImagePickerで加工動画が変換できない

ねこすたの画像投稿ではインスタ風UIを採用しています。
そこで利用しているのが、YPImagePickerというライブラリ。

かなり便利で重宝しているのですが、ある日こんな問い合わせが。
"LINEカメラで作成した動画があげることができない。"

ためしてみると、確かにライブラリ画面から選択して次へ進めなくなってしまいます。
デバッグログを確認すると、以下エラーが出てました。
PHCachingImageManager >>> Problems with audio track

githubにも同様のissueが上がっていました。
https://github.com/Yummypets/YPImagePicker/issues/199

そのissueも反応ないようなので、修正してPRでもしようとおもいcloneして動作確認。
あれ、普通に動く。
該当の箇所の差分を見ると修正されているようでした。https://github.com/Yummypets/YPImagePicker/commit/a6e847cfb822706c49fecf3c831814446b4e0fa2

v3.4.0で発生していて、上記修正バージョンはタグがまだ振られていない状態。
masterを参照するようにすれば治りました。

いちおうコメントもしておきました。
https://github.com/Yummypets/YPImagePicker/issues/199#issuecomment-413077398

bitnami@wordpressでVirtualHostを設定する方法

bitnami@wordpressとは? EC2でwordpressを簡単に構築できるパッケージになります。
AWS MarketplaceでAMIとして提供されています。
AWSのチュートリアルとしても利用されています。

本家で紹介されている設定 通常の設定であれば、EC2を立ち上げて何もしないで完了です。
VirtualHostを利用する場合はconfigを変更する必要があります。

本家サイトに設定方法が書かれています。

このファイルに記載されている
/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf Include "/opt/bitnami/apps/myapp/conf/httpd-prefix.conf" を消して
Include "/opt/bitnami/apps/myapp/conf/httpd-vhosts.conf" を追加

apacheをrestartして完了。
と思いきや、以下のエラーが出ます。
<VirtualHost> cannot occur within <VirtualHost> section apache config test fails, aborting
原因 /opt/bitnami/apache2/conf/bitnami/bitnami.conf
8 <VirtualHost _default_:80> 9 DocumentRoot "/opt/bitnami/apache2/htdocs" 10 <Directory "/opt/bitnami/apache2/htdocs"> 11 Options Indexes FollowSymLinks ... 25 # Bitnami applications installed with a prefix URL (default) 26 Include "/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf" bitnami-apps-prefix…