ボクココ

少数サービス開発運用に関するテックブログ

SendGrid の2つのサービスを同じメールアドレスで利用する方法

ども、@kimihom です。 SendGrid には、”Email Marketing” と "Email API" の2つが提供されている。その2つの説明と、どちらも使うようにする方法などを紹介する。 Email Marketing と Email API タイトルだけで想像がつくと思うけど、Email Marketing は、S…

外部サービスのAPIやWebhook連携をするときに便利なもの

ども、@kimihom です。 仕事を効率化させたり、Webサービスをより快適に使えるようにしたいときに便利なAPIやWebhook。これらを活用する上で必須とも言えるツールを改めて紹介しよう。 API API のメリット API を利用することで、こちらから好きなタイミング…

Chromeでネットの弱い環境を再現する方法

ども、@kimihom です。 とりわけ WebRTCを使ってリアルタイムな通話をしていると、ネット環境の弱いことが原因で、ろくに通話できないという問題が発生する。そのため、ネットの弱い環境を再現して動作を確認する必要が出てくる。本記事ではネットの弱い環境…

宇宙のことがわかってないことをわかった

ども、@kimihom です。 最近はプログラミング関連の本ばかりを読んでいたので、このGWでは全く別の分野で興味のあった本を読んでみた。 「僕たちは、宇宙のことぜんぜんわからない この世で一番おもしろい宇宙入門」 僕たちは、宇宙のことぜんぜんわからない…

iOS CallKit と Twilio Voice iOS 徹底攻略

ども、@kimihom です。 先日の TwilioJP-UG Online Vol.6 はモバイル特集。私からは iOS CallKit と Twilio Voice iOS 徹底攻略として話をしたので、こちらの内容をブログに記しておこう。 なお、今回のスライドはかなりコアな iOS CallKit 内容となっており…

私は技術をこう選ぶ - 10年の経験から

ども、@kimihom です。 プログラミングをしてきて10年が経った今、やってきて良かったこと間違っていたことを振り返りつつ、本テーマを記していこう。私が今まで選んできた技術の成功と失敗について。 今までできなかった何かができるか 最優先とするのは、…

Slack App 移行メモ

ども、@kimihom です。 旧式 Slack App を公開している場合、2022年5月27日までに対応しなければ、App ディレクトリから除外するよ というお知らせが届いた。本記事ではその対応についてまとめよう。 注意 : 移行期限が 2022 年 5 月 27 日まで延長されまし…

SwiftUI で快適なログインUIを作ろう

iOS

ども、@kimihom です。 SwiftUI を使ってログインをより快適にする対応をしたので、その実施内容についてまとめておこう。 テキストフォーカス ログインをしようとするページの場合、ほぼ必ず最初はメールアドレスなどの入力から始まることだろう。iOS の場…

Ruby, Rails アップデートログ

ども、@kimihom です。 自社サービスの CallConnect で、 Ruby 3.1.1, Ruby on Rails 7.0.2.3 へアップデートが無事完了した。本記事では、対応した内容に関してまとめておこう。 button_to の挙動変更 button_to で View を展開された際の HTML が <input> タグか…

Twilio Voice JavaScript 2.0 以降での複数着信の受け取り方

ども、@kimihom です。 Twilio コミュニティの中で、「1本目の着信が来た後、続けて2本目の着信が来たときに、1本目の着信を出られるようにしたい」というケースで質問をいただいた。まさにそのケースの対応を自分も実装したので、コードを含めて説明してい…

慣れないインデックス貼り vol.2

ども、@kimihom です。 前回のインデックス貼り に続き、インデックス対応についての追記を記す。 外部キー のインデックスの効果 よく、関連する外部キーにインデックスをデフォルトで貼る書き方がある。 class CreateTweets < ActiveRecord::Migration[5.0…

Webサービス障害時にAmazon Connectから通知

ども、@kimihom です。 Web サービスを運営していれば障害は付き物なので、その対策を検討した結果について記しておこう。 障害検知 きっかけとなったのは、起きている昼間だったら定期的に Slack 通知などをみながら様子を見て、誰かが発見したら共有すれば…

Rails7 で jQuery をセットアップ

ども、@kimihom です。 Rails 7 がリリースされてから暫く経つが、基本的な部分がまだシェアされてないことが多い。本記事では Rails 7 注目のフロントエンドのセットアップについて記す。 importmap Rails 7 といえば、Node.js を裏で使う必要がなくなった …

Lingvist を使ってエンジニア英語学習

ども、@kimihom です。 3ヶ月くらい前から改めて英語学習を再開している。色々と選択肢がある中で Lingvist というアプリを使っているので、その理由と実際にどうかを報告する。 Lingvist はどんな人に向いている? ズバリ、ひたすら英単語を覚えたい という…

Shopify プライベートアプリからカスタムアプリへの更新

ども、@kimihom です。 先日、Shopify からプライベートアプリの終了に関して連絡がきた。カスタムアプリへ移したので、そのログを記事にしておこう。 Shopify からの連絡 Private apps are being replaced by custom apps, with no action required from yo…

0->1 サービス開発者の慣れないインデックス貼り

ども、@kimihom です。 本記事は、普段アプリケーションエンジニアとして 0->1 でのサービス開発をやってきて、クエリ処理が重くなってどうしたものかという状況へ達した際に考えたいことをまとめてみる。 インフラエンジニアか自分でやるか まず、サービス…

他人にどう思われようと続けることの大切さ

ども、@kimihom です。 カフェでのんびりしていると、カフェ内にあったピアノで、突如ピアノ演奏を始めた方がいた。お世辞でも上手だとは言えない腕前なんだけど、それでも1時間以上、いろいろな曲を弾いていた。 そこで思ったことを1つ記事にしてみよう。 …

Amazon CloudWatch でのエラー通知

AWS

ども、@kimhiom です。そしてあけましておめでとうございます、今年もよろしくお願いします。 AWS Lambda でエラーが起きた時、どのように通知を受けているだろうか。ものすごい一般的な内容にもかかわらず、AWS 側の設定が多くて面倒だったので、参考サイト…

Twilio 録音セキュリティの考察と実装

ども、@kimhiom です。 この記事は Twilio Advent Calendar 2021 23日目の記事となります。他のも是非みていただければと〜。 近年は セキュリティに関して多くの方々が意識するようになり、私にとって Twilio での録音ファイルをどのように管理するのかにつ…

Heroku CI の導入と得られた結果

ども、@kimihom です。 この記事は、Heroku Advent Calendar 2021 の 18日目の記事です。ぜひ他の記事も読んでみていただければと思う。 今回は、つい最近 Heroku CI や Pipeline を導入したこと、そしてセキュリティ事情 について記す。 導入前の開発環境 …

Twilio Meetup Vol.4 の LT 補足

ども、@kimihom です。 先日の TwilioJP-UG Online Vol.4 のイベントで、久々に話をさせてもらったので、その内容と所感について記す。 SIGNAL での Twilio Live 私は早めに切り上げさせてもらったのだが、序盤の話の中では 今回の SIGNAL で新しく出てきた…

複数の SaaS を開発すべきでない理由

ども、@kimihom です。 開発した一つの SaaS が多くのユーザーに使われるようになった時、別のサービスを作り始めるケースがよくある。これらは失敗するので、自らの経験と共に記しておこう。 Atlassian や Basecamp(37 signals) プロダクトを全て使うのか …

SaaS におけるウェビナー、ビデオ通話、YouTube 動画の決断

ども、@kimihom です。 リードや顧客に情報提供する上で、動画で映像や音声をシェアする方法をとることがある。今までの経験から、どの方法を取るといいのか、私なりの考えを記していく。 ウェビナー ウェビナーは ウェブセミナーとして、動画の生放送をして…

長野で山と空を見る(登山ログ)

ども、@kimihom です。 久々に登山をした。場所は霧ヶ峰。いつもエアコンで身近に思えてた霧ヶ峰だが、実際はどんなところか興味があったわけである。 登山の魅力 改めて登山の魅力を感じられた。個人的には以下の3点が特にモチベーションとなっている。 別…

iOS の Launch Screen の伸び対応

iOS

ども、@kimihom です。 iOS 開発をしてて、Launch Screen の対応が案外うまくいかなかったので、同じ思いをする人が減ることを祈りつつ記事として残す。 問題 2021 年時点で iOS アプリの起動時のスクリーン(Launch Screen) は、iOS プロジェクト内にある In…

論理的思考(ロジカルシンキング) を考える

ども、@kimihom です。 今回の首相選挙は、ロジカルに国民を説得させることに重点を置いている候補者が注目されている(誰とは言わない)。ちゃんと国民が納得した説明ができれば、新しい政策もうまく進んでいくだろう。 ここ半年間、どんどん感染が広がってい…

iOS CallKit と Twilio Voice iOS 実装

ども、@kimihom です。 ここ半年くらいずっとやってきた CallKit を使った開発について、1つ記事にしてみよう。 参考 はじめよう - Twilio TwilioVoiceSDK Class Reference Sansan音声通話の裏側 【前編:CallKit/PushKit 】 - Sansan Builders Blog Sansan…

SwiftUI と Combine による REST API 通信

iOS

ども、@kimihom です。 SwiftUI を使って REST API 通信をしてアプリを作っていく上で、一通りまとまってる方法がなかなか見つからなかったので、現在の実装をまとめておく。 Combine を使った定義 Combine はあくまで 非同期イベントをハンドリングするフレ…

SwiftUI での プロパティオブサーバの使いどき

iOS

ども、@kimihom です。 引き続き iOS の開発をしているけども、その中でプロパティオブサーバについて実際の利用例を示しながら便利さについて記してみる。 fullScreenCover での画面切り替え 特定のタイミングで特定の別画面を表示させたい時に、fullScreen…

SwiftUI での オプショナル(Optional)型の対応

iOS

ども、@kimihom です。 ここ最近は Swift をいじっている。実装してみると、最初はこの Optional 型のコード意識の面倒さを感じていたが、慣れてくると便利だなと思えるようになってきた。 自分の認識をまとめる上でも、記事として記しておこう。 Optional …