PAY.JP Platformを試してみた

最近、弊社でもひいきにしているPAYさんから、 これまで開発中だったお待ちかねのプラットフォーマー向けのサービス、 PAY.JP Platformをローンチしたという知らせを聞いたので、早速試してみることにした。 PAY.JP Platformとは 例えばEコマースプラットフ…

メッセージングアプリの永続化サービス・ミドルウェアの選定について

色々有識者の方に相談に乗ってもらったのでシェア。 要件的にはまず完成を目指して、チューニングはちょっとあとからということで進んでいたのだけど、 せっかく作るのだから少ない労力である程度の規模までは戦えるようにしたいよねーくらいなレベルで、少…

Railsでのお手軽なキャッシュ戦略

キャッシュの主な動機は、 パフォーマンスの向上 より多くのトラフィックを捌けるように サーバー・リソースの節約 が主だとおもう。 今回、Webメディアの運用が決まったあたりで、サーバーサイドのキャッシュを真面目に考えてみたので記録を簡単に残してお…

PAY.JPアンチパターンという内容でLTした

PAY.JPのプラットフォーム向けサービスである、 「PAY.JP Platform」のリリース記念ミートアップで、「PAY.JP アンチパターン」という内容でLTをさせていただきました。 内容 ざっくり見てもらえればわかるのですが、 PAY.JPを使っていく際のアンチパターン…

いちばんやさしい新しいSEOの教本を読んだ

個人的興味や、知識の補完のためにSEO入門するに当たり、みんながおすすめしているように見えたので、この本を買って読んで見ることにした。 Amazon いちばんやさしい新しいSEO 前提として、SEO対策についての知識は簡単にWebで調べれば出るものくらいは知っ…

SendGridで1つのメールを最大1000件のメールアドレスにまとめて送信する方法

これはよく見るとドキュメントに載っているのだけど、 結構見落としがちだったので、記載しておく。 ドキュメントの内容 v3 Mail Send API概要 - ドキュメント | SendGrid SendGridのMailSendAPIを使えばOKな感じです。 Rubyのコード これで終了だとあまりに…

ransackで雑にRDBMSを使った簡易的なキーワードのOR検索を実装する

一般的なRDBMSを使ったよくあるLIKEでの曖昧検索実装では、検索ボックスに「寿司 和食」と入力してもただの単語での曖昧検索だと、 当たり前なんだけど、キーワードのOR検索を実現することができない。 select * from contents where LIKE body '%寿司 和食%…

SendGridのWebhookを受けるのにFluentdが重宝した話

SendGridのWebhookについて SendGrid の Event Webhook は、SendGrid経由でメールを送信する際に発生するイベントを、指定したURLにPOSTすることができます。 このデータの用途は、配信停止アドレスの削除、迷惑メール報告への対応、エンゲージできなかった…

Firebase HostingをCircleCIからDeployする

とにかく簡単なので、プロトタイピングのときから初めておくといい。 fierebaseを使ったことがあるなら入っていると思うけど、firebase-tools を事前にインストールしておこう npm install -g firebase-tools CIからDeployするためのDeployキーを取得する。 …

FaradayでHTTPリクエストを並列で実行する方法

FaradayはRubyでHTTPリクエストを行うことができるライブラリだけど、 特に工夫もなしに利用すると1つ1つリクエストを順番に直列に実行するようになっている。 もしなにかしらの事情でAPIを並列に叩きたい事情というものもあるので、 その場合は以下の用に対…

Webhookを作るときのデバッグに役に立つものを作った

その名もWebhookDebugger 実はRailsのアプリケーションで15分位でシュッと書いたものを単機能だったのを、素のRackアプリケーションにして書き直したものである。 github.com 以下に簡単にこのアプリケーションについての機能を簡単に説明しておく。 基本は…

Sinatraアプリを素のRackアプリケーションに書き換えた

Rackとは Webサーバ/Webアプリケーションフレームワーク間のインタフェースの役割を果たすライブラリで、 Rackを利用してフレームワークやアプリケーションのインターフェース部分を実装することで、 Webサーバを変更したり、逆にWebサーバを変更しないでも…

javascript経由で<script>タグを呼び出して実行する方法

これやりたい経緯 静的ファイル上でユーザーエージェントを判別して、広告タグを出し分けたいというのを実現するための方法と一つとしてです。 本当は配信先の広告タグスクリプトでよしなにやっててほしいんですが、 そういうわけにも行かないときはやっぱり…

毎週技術的なブログを書く為に実践していること

今年のお正月からなんとなく毎週ブログを更新するというのを初めて10回を超えたので自分なりに振り返ってみようと思う。 ネタ探しについて まだ10回なんだけど、業務内容にも恵まれてるのかもしれんがぶっちゃけあまり困ってないです。 ネタはたくさんある方…

FirestoreをRubyのgoogle-api-clientから叩く

そもそもRubyからFirestoreを叩きたい理由 FirestoreはフロントエンドからWriteできるけど、実装の複雑さを避けるためにフロントエンドからはWriteしないで、 チャットのAPI経由でFirestoreに対してWriteを行う機構が必要だったため。*1 *2 方法 とにかくgoo…

自作のサービスのsinatraのバージョンをアップしました。

ogp_parse_apiというサービスを適当に運用・Dockerイメージを提供しているのですが、 こちらで利用しているSinatraで脆弱性の修正を含むバージョンアップがあったのでその対応をしました。 github.com ogp_parse_apiは単純にOGP情報をスクレイピングしてJSON…

Gemを初回インストールした時にメッセージを表示する post_install_message

自作のGemで初回インストール時にメッセージを表示したいケースがある場合に重宝する。 まだ自分でちゃんと運用しているわけではないけど、 社内Gemの場合はREADMEやMigrationしてねーみたいなメッセージを付けてあげるのが親切・便利かと思う。 spec.post_i…

PaparClipでCSVをS3にアップロードした時にContent-Typeが"text/plain"になってしまう問題

概要 PaperClipで、Railsで生成したCSVファイルをS3にアップロードするときに、Content-Typeが"text/plain"でアップロードされてしまうので、 S3にアップロードしたときに.txtファイルになってしまう問題がある。 とりあえずの解決方法 とりあえずS3にアップ…

弱小Railsアプリケーションで1日毎のお手軽な集計方法のご提案

こちらのアンサーブログだと思ってもらえれば。 webuilder240.hatenablog.com 結論 結論からいうと、集計をするためのModelを作っておいてそこから集計を行う方式にして、 色々なModelの集計に対して対応できるようにした。 create_table "aggregaters", for…

Dockerで1つのイメージ複数のコマンドを切り替える方法

これをやりたい理由 作るDockeイメージは1つにしたいのだけど、デプロイする先によってコンテナの役割(例えばCronやJobワーカーを動かすコンテナとWebサーバーを実際に動かすコンテナ等)を分けたいときに利用する。 例えばAzureのWebApps for Container (W…

URLのOGP情報をスクレイピングするだけのWebAPIを作った

サイトのOGP情報をスクレイプするのが面倒なので、OGP情報のスクレイピングし、JSONに変換して情報を返すだけのマイクロサービスを作った。 マイクロサービスというか、用途的にはDockerが向いていると思ったので、Dockerイメージにもしてあります。 docker …

self_updated_atがメソッド指定に対応しました

先日紹介した、拙作のself_updated_atなのですが、 この度v0.2.0へアップデートしたので、こちらの更新情報をお伝えします。 self_updated_atがどういうGemかよくわからんという人はこの記事を読んでみてください。 webuilder240.hatenablog.com 下記は更新…

特定のカラムの更新日を管理するためのGemを作りました

self_updated_atという、ActiveRecordで指定したカラムに対して更新が発生したときに更新日時を書き換えるgemを作りました。 GitHub - webuilder240/self_updated_at https://rubygems.org/gems/self_updated_at 利用方法 ActiveRecordのModelに以下のように…

プロトタイプ用途でFirebaseを使ってよかったという話

最近、個人的な趣味と社の技術検証を兼ねてFirebaseを触っている。 一番のモチベーションとしてはFirebase Realtime Databaseの存在が大きかったのだけど、 フロントエンド・クライアントサイドエンジニアがプロトタイプ作るときに、 あると便利な機能が一通…

2017年の振り返り

会社的なアレ 色々社に動きがあり、関わる人間の数も増え、 一気に会社としての規模、大袈裟感は上がったように感じた。 その中で自分が納得感の行く成果が挙げられたかといえばそうではないと思っていて、 2018年は目に見える成果をどしどししていきたいと…

VueかReactどっち勉強すればいいか問題

最近良く聞かれるので書いておく。 答える人のバックグラウンドについて 最近はだいたいRails書いてるサーバーサイドエンジニア。 最近はフロントエンドも書くことも少なくなったけど、Vue1.xのときにSPAっぽいものつくってたりした。 Reactは未経験だけど、…

RubyでInterface

そもそもRubyにInterfaceが必要とか、必要じゃないとかの議論は置いておいて、 無いのであれば、類似したことをやりたい場合はどうすればいいのかが気になって調べてた。 1. まずは簡単にやってみる module TestInterface def method1 raise NotImplementErr…

お手軽に管理しやすいWordPressテーマを目指すとっても簡単なTips

これは前に書いたブログの記事を再編集したものです。 こんにちは。 簡単なphpコードとWordPressの関数を使用すれば、とっても管理しやすい Wordpressのテーマが出来上がることを知っていますか? あまりphpの詳しくない方でも簡単に始めるモダンなWordPress…

FSSMで特定条件のLinux環境で使えないバグを修正してプルリクエストを投げた

いきなりまとめ Linux環境のGemのrb-inotifyがインストールされている環境で使用した場合、落ちるエラーを修正した。 まだ反応がなくMergeされていないので、GithubからFork版を一旦使ってほしい。 github.com PRはこちら github.com そもそもFSSMとは? Rub…

日本郵便での日本からのEMS配送料を算出するAPIを公開してみた。

前回の記事に引き続き、 過去の作ったものでブログを書いてみるシリーズの第2弾です。 前回はこっち。 webuilder240.hatenablog.com 前にこの記事を書きましたが、 webuilder240.hatenablog.com これをAPIで公開しました。 Productionで使われることはそこま…