Dev

アクセスキーを使わずにAWS SESを使って、Firebaseからメール送信できるようにする

GCPやFirebaseにはメール関連の現行サービスがなく、外部のメールサービスを使用する必要があります。 そのため、SendGridやAWS SESなどを組み合わせる必要があります。 今回はAWS SESを使うことになったのですが、そのためにアクセスキーやSMTPパスワードを…

macOSで起動中のウィンドウの一覧を列挙する

macOSのアプリ開発のお話し。 起動中のウィンドウを一覧するには、CGWindowListCopyWindowInfoを使う。 struct Window: CustomStringConvertible { let rawData: [String: AnyObject] var name: String? { get { return rawData[kCGWindowName as String] as…

無償版G Suiteが廃止されるのでAWS SESとDockerでメール送受信システムを作った

Dev

20日木曜、大きなニュースが飛び込んできました。2012年に提供が終了して、そのまま9年近く利用できていた旧無償版G Suiteが7月1日に廃止されてしまいます。 www.itmedia.co.jp 自分も黎明の頃から勉強会のメールアドレスや、友人に独自ドメインアドレスを提…

Google Cloud Tasksから呼び出すApp Engine TaskとGAEバージョンの関係

Google Cloud TasksからApp Engine HTTPタスクでバックグラウンド処理をするアプリケーションを作っている。 トラフィック分割で様子を見ながらリリースしたい場合、App Engine HTTPはどのバージョンのタスクを実行するのかがわからなかったので実験してみた…

Automatorアプリケーションでシェルスクリプト+リソースを配りたい

Dev

macOS用のツールアプリケーションをインストールする方法がシェルスクリプトだった。ITエンジニア向けだったら良いんですけど、そうでない人が対象だったのでさすがにGUIが必要で、Automatorで手軽にできないかと思って調べてみました。 実行したいシェルス…

GCFをデプロイするGCPプロジェクトのセットアップ

毎回やって毎回引っかかってる気がするのでメモ。本当はTerraformとか使った方が良いんだろうけど。 とりあえず最低限必要なもの、 前提 TypeScript で GCF を作って cloudbuild.yaml を読ませてデプロイする

Firestoreのフィールドにどうしても.を使いたい

Dev

Firebaseのフィールド、例えばマップのキーにメールアドレスを使いたいパターンはよくあると思う。例えばこういうの。 permissions: { "iseebi@example.com": "read", "admin@example.com": "admin" } で、これをクエリしようとすると permissions.iseebi@ex…

Firebase Hostingでサイト全体をリダイレクトさせる

Dev

サイト全体をリダイレクトさせたいということがあると思う。例えば、wwwでメインサイトをホストしているけど、Apexドメインにアクセスしたときもwwwにリダイレクトさせたい、とかの場合だ。他にもちょっと複雑なリダイレクトさせたりもしたいということもあ…

Google Cloud SDK (gcloud) コマンドの設定切り替え

gcloudで取り扱うプロジェクトの切り替え方法。プロジェクト作るたびに調べてる気がするので。

NotificationCenter.addObserver(forName:object:queue:using:) にインスタンスメソッドを渡すとリークする

これまで、NotificationCenterのaddObserverはSwiftでもaddObserver(_:selector:name:object:)で書いていたのだけど、ふと「あー@objc書きたくないな〜」と思った。 そこで単純にaddObserver(forName:object:queue:using:)に置き換えたのだけど、これでリー…

GAE/Python の 2.7(gen1) から 3.7(gen2) への移行作業メモ

趣味で作った GAE/Python Python 2.7 のサービスを Python 3.7 に移行したときにやったことのまとめです。

Universal LinksのApp ID PrefixがTeam IDでない場合がある

iOSのUniversal Linksを設定していたが、シミュレータでは正しく挙動するものの実機では一切動かないということが起こった。 apple-site-association には、[Team ID].[Bundle ID] の形式でapplinksを記載していた App Search API Validation Tool では Erro…

GoogleドライブのファイルをGoogle Cloud Storageへコピーする

Google Cloud APIの中には、gs://[bucket]/[path]の形式になっているCloud StorageのURLを与えることができるものがある。今回はGoogleドライブに入っているファイルをCloud Storageにコピーしてgs://のURLとして使えるようにしたかった。 streamをうまく使…

Twitterアプリ経由認証を簡単実装できる軽量ライブラリSimpleTwitterAuthenticationを作りました

仕事でTwitter認証をサポートしたアプリを開発していますが、その認証処理に使われていたライブラリがとても古く、あっちこっち警告出しまくっていたので入れ替えることになりました。 いろいろ考えた結果、小さなライブラリを新しく起こしました。SimpleTwi…

macOSアプリに埋め込む実行バイナリのNotarization/Hardened Runtime対応は署名すればOK

昨日の記事で、アプリはHardened Runtime対応されたものの、リソースとして埋め込まれる実行ファイルがHardened Runtimeに対応していない状態だったためNotarizationに失敗していました。 実は、Hardened Runtimeへの対応はアプリのビルド時ではなく、コード…

Visual Studio App CenterでmacOSアプリのNotarizationに対応しようとした

macOS Catalinaから、macOSアプリはAppleによる公証(Notarization)が必須化されます。Notarizationのプロセスではアプリのバイナリを一度Appleに送って、マルウェアなどのチェックを受けます。雰囲気は以下のページがわかりやすいです。 applech2.com さて、…

Apple Developer Programが2/27から2ファクタ認証必須になる件

日本時間の2/14の朝、Apple から一つのメールが届いた。 ベッドの中で寝ぼけながら読んでいて、一気に眠気が吹っ飛んだ。2/27 より2ファクタ認証が必須になるという内容が書かれていた。これは大きな問題になるぞ…!と思ってツイートした。 おいおい、Apple …

毎日のお弁当注文FAXをTwilioで自動化する

Dev

僕の通っているオフィスでは社内の有志メンバーを募って仕出し弁当を注文していました。 毎朝10時ちょっと前までにFAXで注文しておけば、お昼休みまでにオフィスに届けてくれるという仕組みでした。 しかも、オフィスの前にやってくる弁当屋さんよりも、ちょ…

音楽ファイルを必要なものだけフィルタしてコピーする

僕の iTunes ライブラリには10年以上ためこんだ音楽が入っているが、例えばカラオケトラックやドラマCDなどは普段聴かないので除外している。 iTunes ではこれをスマートプレイリストで実現しているが、今回はこれをファイルベースでやる必要が出てきた(聴く…

ディレクトリごとに git の設定を切り替えたい

Dev

いっこまえの記事のGoogle Cloud SDKの設定を切り替えたいと同じような話。git リポジトリごとにメールアドレスを切り替えたい、という場合の設定。

GAE/Python セットアップハマったところメモ

GAE/Python にチャレンジしてみているのだが、そもそもセットアップに猛烈にハマったのでメモしておく。 gcloud コマンドのインストール 最終的には以下の通りだった。事前に Xcode と Xcode Command Line Tools のインストールは終わっている前提。

フォームに入力されたHTMLにscriptタグなどが含まれていないか検証する

最近仕事でもプライベートでもPHPしか書いてないので、久々にPHPネタを。 HTMLを入力できるフォームを作りたくって、ただscriptタグやonloadなど、スクリプトを実行する要素が入ってほしくなかったので、そのバリデーションを書いた。 ただ正規表現として処…

Raspberry Pi Zero W で iBeacon を飛ばす

Dev

とっても簡単だったけど、個人のメモ書き程度。 初期設定 Pi Zero W 用の Raspian 入れといたら、最初からパッケージとかは整ってた。 飛ばすビーコンの設定 $ sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 \ 10 D0 3F 94 59 47 46 …

Google Homeに「午前休する」って言ったら電話・メールで会社に連絡できるようにする

Dev

Google Home Mini が安くなっていたので買いました。 #Echo招待来ない pic.twitter.com/PuGa5B3o4S— いせ (@iseebi) December 9, 2017 スタートレックが好きな僕としては起動ワードを「コンピューター」にできる Amazon Echo が本命なのですが、全く招待され…

Jenkins の認証に Azure Active Directory を使った

Dev

昨年の冬に MacBook Pro を買い換えたことで 1 台サーバーとしておいておける Mac ができたので、iOS アプリのビルド用に Jenkins 2 を構築して設置しました。 インターネットに公開するものの、さすがに認証がないとつらい、だけど BASIC 認証は Firefox が…

macOS で USBデバイスの抜き差しを検出する

macOS で iOS/Android(ADB) デバイスの接続・切断を検出したくて、この数日ずっと調べていてようやく形にできた。 github.com 備忘録的にどうやっているのかを簡単に書いておこうと思う。

Project Rider EAP で Xamarin がサポートされました (あと .NET Core RTM も)

先日 Project Rider EAP で Xamarin を書けるか とかいう記事を書いたわけですが、ついに公式に Xamarin がサポートされました。 公式にはどちらかというと、.NET Core RTM やデバッグサポートのほうが先に来てたのですが、かなり待ってただけに当初 Xamarin…

Xamarin Studio 6.0 から Vi モードがなくなって死活問題になってる方へ

Xamarin の Cycle 7 アップデートが Stable になり、Xamarin Studio 6.0 が Stable に降ってきました。 Cycle 7 全体については、Stable Release: Cycle 7 | Xamarin Releases からリンクをたどれますが、Xamarin Studio 6.0 のリリースノート の Text Edito…

Project Rider EAP で Xamarin を書けるか。

Project Rider といえば、JetBrains が開発中のIDEです。内部にはReSharperが入っているということもあり、大きく期待されています。 まだ EAP (Early Access Preview) なので、いろいろ動かない部分があるのですが、我々 Xamarin ユーザーとしては Xamarin …

AWS SES+Lambda で作る、ドメインまるっとメール転送

Dev

僕は各種サービスに登録するメールアドレスを基本的に Gmail(旧 Google Apps) のエイリアスですべて変えているのですが、困ったことにエイリアスのマッピング指定に使う + がはじかれるサービスがとにかく多くて困っています。 ▲正しく入力しているのに「正…