タグ

ブックマーク / tagomoris.hatenablog.com (338)

  • AWS LambdaのRuby .zipパッケージでgitから取得したgemを使う - たごもりすメモ

    AWS LambdaRubyランタイムを使っててzipアーカイブで関数コードをアップロードしてる人向け。 基的にはGemfileに依存関係書いてbundle config set --local path 'vendor/bundle'してbundle installすればいい。以下のドキュメントを読もう。 docs.aws.amazon.com んだけど、Gemfileにrubygems.org以外から取得したgem、特にgitを指定したものを使っている場合にこれだけだとうまくいかないので、原因と対処を書いておく。 そもそもLambdaは何をやってるか 上述ドキュメントを読むとわかるが、zipファイルにはGemfile.lockもGemfileも入れない。それで動作する。これはどういうことかというと、AWS Lambdaのランタイム側ではBundlerを使わず(?)、vendor/b

    AWS LambdaのRuby .zipパッケージでgitから取得したgemを使う - たごもりすメモ
    tagomoris
    tagomoris 2023/11/23
    めもった
  • TokyuRuby会議14に参加してしゃべってきた - たごもりすメモ

    久し振りに開催されたTokyuRuby会議14に参加した。LTも申し込んでいて通ったので、LTもやってきた。なんかTokyuRuby会議が行われると、イベントが戻ってきたなあ、という気がする。よかった。 しゃべった LTの内容は最近やっているNameSpaceまわりの話。 5分LTを最後にやったのは2019年のRubyKaigiだった。5分のLTなんて体に染み付いてるから息をするようにやれるじゃろ、と思ったら完全にペースを間違ってぜんぜん終わらなかった。なんてこった。何でも、やらないと衰えるなあ。 話の内容自体は、あとにあった3分追加でしゃべっていい枠で話せて満足。これは引き続きやってて、9月の松江Ruby会議10でも話す予定です。 料理持っていった TokyuRuby会議14、おでんとローストビーフマリネ 今回作って持っていったのはミニチュアおでん、ローストビーフのわさびマリネ。どっちも

    TokyuRuby会議14に参加してしゃべってきた - たごもりすメモ
    tagomoris
    tagomoris 2023/07/31
    めもった
  • SwiftUI PhotosPickerで選択した項目からJPEG/PNGを取り出す - たごもりすメモ

    SwiftUIで作るiOSアプリで、画像を選択し、その画像をどこかにアップロードしたい。アップロード先がHEICに対応してないのでJPEG/PNGあたりのフォーマットでやりたい。 これを考えたとき、iOS 16.0+ ならPhotosPickerが使える。が、実際に選択したあとでどうやってJPEG/PNGのデータを取り出すかにだいぶ悩んだのでメモっておく。他にもっとマトモな方法ないの? と思っている。 PhotosPickerを使う これは既存のビューでボタンを押すとシートで下から出てくる感じにしたかったので、こんなコードをざっと書けばよい。これは1枚だけ選ばせたい場合で、複数枚選ばせたい場合は呼び出しのシグネチャが少し変わるのに注意。 @State var isPickingPhoto: Bool = false @State var selectedPhotoItem: PhotosP

    SwiftUI PhotosPickerで選択した項目からJPEG/PNGを取り出す - たごもりすメモ
    tagomoris
    tagomoris 2023/07/19
    めもった
  • sqldefをMySQLに対してAWS Lambdaから実行するパッケージを作った - たごもりすメモ

    k0kubun/sqldefはすばらしいプロダクトで便利に使ってるんだけど、もちろんDBに接続できる場所から実行する必要がある。で、DBAWSのprivate VPCにあるのでラップトップやCI環境からやるというわけにはいかない。しょうがないので、現在はEC2インスタンスを作成して使うときだけ起動、終了したら停止してた。んだけど、これがまた面倒なんだよね。起動と停止も面倒だし、なんかあったときに確実に作り直せるようにするには……とか考えるのもダルいし、EC2へのSSHする方法やEC2へリポジトリをチェックアウトする方法も考えないといけないし。 なのでしばらく考えてたんだけど、Lambdaでやれるといいんだよな、という希望を現実的に考えて実装してみた。のがこちら。 github.com こいつは大変便利。リポジトリをcloneして、プライベートリポジトリからスキーマファイルを読み込むならデ

    sqldefをMySQLに対してAWS Lambdaから実行するパッケージを作った - たごもりすメモ
    tagomoris
    tagomoris 2023/05/02
    書いた
  • 「研鑽Rubyプログラミング」はライブラリ作者の知識・技術の幅と深さを拡大する1冊 - たごもりすメモ

    「研鑽Rubyプログラミング」を読んだので、その感想を書く。 届いた。研鑽を積むぞ! pic.twitter.com/YuL5WUyjap— tagomoris (@tagomoris) 2023年4月15日 なお書の訳者である角谷さんにをお贈りいただきました。が、その前から同書のβ版(電子版)を購入していたため、実際にはほとんどをそちらで読みました。*1 エントリの言いたいことは、様々な状況に対応してコードを書くには知識・技術の幅と深さが重要で、書はそのための重要なインプットとなるでしょう、です! 総論: さまざまなRubyの書きかたを学べる さて、このは初手から対象読者を「中級から上級のRubyプログラマー」としており、そのものの目的は「まえがき」の先頭にもはっきり書かれています。少し長めに引用します。 書の目的は、中級から上級のRubyプログラマーが従うべき有用な原則を

    「研鑽Rubyプログラミング」はライブラリ作者の知識・技術の幅と深さを拡大する1冊 - たごもりすメモ
    tagomoris
    tagomoris 2023/04/19
    書きましたよ
  • SwiftUIでNavigationStackを使っているとNavigation BarやBackボタンが隠せない? (そんなことなかった) - たごもりすメモ

    追記 NavigationViewで一度動くコード作ってからNavigationStackに戻してみたらうまく動いて、期待通りに遷移先でBackボタンがない状態が作れた。 NavigationStack(path: $path) { SplashView() .navigationDestination(for: SigninState.self) { state in Group { switch state { case .notsignedin: SigninView() case .signedin: MainView() } } .navigationBarBackButtonHidden(true) } } この遷移先に.navigationBarBackButtonHiddenをつける方法も試したと思ってたんだけど、たぶん何かでミスってたんだと思う。単に自分のミスだったのかな

    SwiftUIでNavigationStackを使っているとNavigation BarやBackボタンが隠せない? (そんなことなかった) - たごもりすメモ
    tagomoris
    tagomoris 2023/03/23
    困ったなあ、という話
  • amplify-swiftを使ってAmazon CognitoでFederated Loginするときにクライアント設定で不必要なIdentity Providerを有効にしない - たごもりすメモ

    ていうか有効にしていたつもりもなかったんだけどamplify-swiftがそう動いてしまう、そしてエラーになる、という話。 結論としては、iOSアプリ側にあるamplifyconfiguration.jsonにおいて不必要なキーCredentialsProviderが存在すると自動的に使われてしまいエラーになるので、キーそのものを削除しなければならない。 経緯 Amazon Cognitoを、Google/Facebookその他IDプロバイダーのOAuth認証を通すために使っているが、IdentityProviderとしては使っていない。Web(React)で作っている画面の方ではJS用のAmplifyライブラリを経由していてログインができるんだけど、iOSアプリでSwiftからログイン用の機能を呼び出すと、なんかうまくいかない。認証用の画面が出てきてIDプロバイダー(Google)での認

    amplify-swiftを使ってAmazon CognitoでFederated Loginするときにクライアント設定で不必要なIdentity Providerを有効にしない - たごもりすメモ
    tagomoris
    tagomoris 2023/02/20
    何時間かハマった
  • EmacsでTypeScript/React開発する2023 - たごもりすメモ

    世間に死ぬほど色々な方法があるのはわかっているがとにかくまっさらな状態から最短手順でEmacsでJSX/TSXが書けるようになりたい! という話。VSCodeとかそういう話には目を背ける。 tsxファイルはweb-modeで起動するようにすればシンタックスハイライトとインデントはうまくいくので、あとはlspを起動するようにすれば快適です!— つかもとたけし (@itometeam) 2023年1月23日 自分で調べつつ試行錯誤したんだけど、最終的にはこのtweetで教えてもらった通りになった。メジャーモードとしてweb-modeを使いつつflycheckとLSPで開発支援。 macOSにインストールしたEmacs*1、およびMELPAにあるパッケージだけで、以下のようになった。 (require 'web-mode) (add-to-list 'auto-mode-alist '("\\.

    EmacsでTypeScript/React開発する2023 - たごもりすメモ
    tagomoris
    tagomoris 2023/01/24
    メモった。最終的にはだいぶ短い手順/設定になった
  • 象印の加湿器が最高で当面これしか使いたくないという話 - たごもりすメモ

    ちょっとTwitterに書いたらい付いてくる人が多かったので、ではアピールしとこうと思った。 象印の加湿器、とにかく手入れが簡単でこれ以外の加湿器はもう二度と買う気がないというくらい最高— tagomoris (@tagomoris) 2023年1月7日 TL;DR 衛生面などを考えると加熱式加湿器*1を使いたい 加熱式加湿器は加熱部に残留物が結晶化して固まるので手入れがめちゃ面倒 象印のやつは電熱ポットと同じなので、たまにクエン酸ぶちこむだけで超ラク、最高です 加湿器運用の手間を減らしたい人にとにかくお勧めです 自分が使ってるのはこれ。今年大きいのを買い足した。旧モデルの小さい方とあわせて2台とも使ってます。 EE-DC35・50 | 加湿器 | 生活家電 | 商品情報 | 象印マホービン 加湿器を加熱式のに替えるとき、某社従来型*2と象印の(2020年モデル)と2台買ったんだけど、手

    象印の加湿器が最高で当面これしか使いたくないという話 - たごもりすメモ
    tagomoris
    tagomoris 2023/01/10
    書きました
  • XcodeがMain.storyboardを見付けられずiOSアプリが落ちる - たごもりすメモ

    ……ことがたまにあって、なんでかなと思ったけどgit checkoutなんかでstoryboardのリビジョンをXcode外部から操作してると起きるのかなという気がする。アプリが起動しかけてから以下のようなエラーメッセージ出して落ちるのがタチ悪い。 "Could not find a storyboard named 'Main' in bundle NSBundle" Clean Build Folderとかやっても直らないので、以下のようにして直す。 Main.storyboardを選択して "Delete" -> "Remove Reference" 外部でやる必要のあるgit操作など実行 "File" -> "Add File to ..." してstoryboardを再度追加 起きるたびに時間を無駄にしてる気がするんでメモ。

    XcodeがMain.storyboardを見付けられずiOSアプリが落ちる - たごもりすメモ
    tagomoris
    tagomoris 2022/12/19
    めも
  • LFAというAWS API Gateway用Lambdaをそのまま動かすRuby用Web frameworkを作った - たごもりすメモ

    この記事はRubyアドベントカレンダー2022の15日目の記事です。 以下のような話をお送りします: AWS Lambda + API Gatewayを使ってる話 LFAというWeb frameworkをガッと書いた話 LFAでLambdaの手元開発が楽になるのではという話 Ruby 3.1で導入されたKernel#loadの便利機能が超便利という話 Lambda関数ごとに環境変数ENVの内容を変えたいという話 最近AWS Lambdaべったりな話 最近自分でサービスを作ってるんですが、サーバサイドは全部AWS Lambda + API Gatewayでやっつけてます。 EC2を常時起動して管理するのもやだし、大した規模でもないからゴツいビルドパイプラインをセットアップしてコンテナイメージをビルドするのも面倒だし、みたいなことを考えると、コードをそのまま送り付けるとあとは動きつづけてくれる

    LFAというAWS API Gateway用Lambdaをそのまま動かすRuby用Web frameworkを作った - たごもりすメモ
    tagomoris
    tagomoris 2022/12/15
    書きました
  • Fluentdのflush_mode immediateはいつ使うのか - たごもりすメモ

    Fluentd実践入門をあらためて手元でぱらぱらやってたら、しまった! この話をどこかにちょっとでも書こうと思ってたのに忘れてた! という話が出てきたので、忘れないうちに書いて放流する。 flush_modeとはなにか FluentdのOutputプラグインには<buffer>セクションで指定できるflush_modeというパラメータがあって、これはOutputプラグインがどういう基準でバッファ内のデータを書き出す(writeメソッドを呼ぶ)かという戦略をコントロールする。有効な値はdefault、immediate、interval、lazyの4つ。 ただし多くのケースでこのパラメータは明示的には指定されていないはず。というのも、デフォルト値であるところのdefaultの場合には、<buffer>セクションに指定されている他のパラメータ((と、例外的に<buffer>セクションの外側に指

    Fluentdのflush_mode immediateはいつ使うのか - たごもりすメモ
    tagomoris
    tagomoris 2022/10/11
    書き忘れてたことを書きました
  • 「Fluentd実践入門」を10月8日に出版します - たごもりすメモ

    Fluentd実践入門 Fluentdの現バージョン(v1.15)について世界で一番詳しいです。というか、Fluentdそのものだけについての、おそらく世界で唯一の技術書です。 出版社は技術評論社です。電子版もGihyo.jpやKindleはじめ各社で出ます。買ってね! gihyo.jp TL;DR 発売日は10月8日です 一部書店ではちょっと早く9月末に並ぶかも 電子版は発売日よりちょっと前に出るかも1 544ページ、Fluentd体については考えられる限り盛り込みました Fluentdをなんとなく使っている人が確信を持って使えるようになれるはず 組込みプラグインの頻出用法、番環境での運用ノウハウ、プラグイン開発からテストなどまで エコシステム的な部分についてはカバーできていません Kubernetes上での運用やFluent Bitとの組み合わせとか AWS FireLensやG

    「Fluentd実践入門」を10月8日に出版します - たごもりすメモ
    tagomoris
    tagomoris 2022/09/06
    します!
  • React appを手元でProduction modeで動かす - たごもりすメモ

    react-scripts startで使えるDevelopment modeだとなんか変なことがちょいちょい起きるので、動作確認をProduction modeでやりたい。 ところでこのアプリからはCORSリクエストを送りまくるのでHTTPSのサイトとしてlocalhostにアクセスしたい。Development modeについては、これはpackage.jsonに以下のように書いておいてnpm startすることで実現できる。 ... "scripts": { "start": "HTTPS=true react-scripts start", ... React appをProduction modeで動かす 単に動かすならドキュメントにあるようにnpm run buildでビルドしたあと、それを配信するサーバを実行すればいい。 $ npm run build $ npm insta

    React appを手元でProduction modeで動かす - たごもりすメモ
    tagomoris
    tagomoris 2022/06/10
    めも
  • @react-google-maps/apiでの描画地図にPolylineで線を描くと消えなくなる - たごもりすメモ

    という問題が起きてあれこれやってた。React難しいの巻。たぶんnpm startで起動できるDevelopment modeでだけ起きる問題。 問題 @react-google-maps/apiReactアプリ上にGoogle Mapsを表示*1し、そこに好き勝手にマーカーとか線を描きたい。以下のような感じ。 // MyMapComponent import { LoadScript, GoogleMap, Marker, Polyline } from "@react-google-maps/api"; // ...中略 // in function MyMapComponent return ( <LoadScript googleMapsApiKey={myApiKey}> <GoogleMaps id="myMap" mapContainerStyle={{height: "8

    @react-google-maps/apiでの描画地図にPolylineで線を描くと消えなくなる - たごもりすメモ
    tagomoris
    tagomoris 2022/06/10
    これにやたらハマった
  • RubyKaigi Takeout 2021でしゃべった - たごもりすメモ

    RubyKaigi Takeout 2021の途中ではあるけど、とりあえず自分の発表終わったのでメモ。 Ractor's speed is not light-speed from SATOSHI TAGOMORI Ractorをワーカーとして使うアプリケーションサーバを作ったよ! という話なんですが、まあこれは話の入りというかそういうもので、実際の内容の中心はRactorではどういうコードが動かないのか、どうすればよいのか、みたいな話です。 で、Ractorで動かないコードは全体的には直していきたいよねということになると思いますが、そうはいっても動かしてみないと確認もできないじゃんということで、主な問題であるところのWebアプリケーションを実際にRactorの上で動かして確認できるようにしておきましたよ、というのが今回作ったright_speedです。 github.com 当はRac

    RubyKaigi Takeout 2021でしゃべった - たごもりすメモ
    tagomoris
    tagomoris 2021/09/10
    めも
  • Amazon SESのメール受信は特定のリージョンでしか使えない - たごもりすメモ

    メモ。ap-northeast-1のコンソールでSES開いてても"Email Receiving"の"Rule Sets"が灰色になった(gray outした)ままで選択できなくて、ドメインのverifyとかIAMとかで何かうまくいってない? と調べてまわってた。 結論としては特定のリージョンでしかサポートされてない。 Email Receiving Endpoints Amazon SES doesn't support email receiving in the following Regions: US East (Ohio), US West (N. California) Asia Pacific (Mumbai), Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacif

    Amazon SESのメール受信は特定のリージョンでしか使えない - たごもりすメモ
    tagomoris
    tagomoris 2021/08/01
    めも
  • 退職します2021 - たごもりすメモ

    TL;DR 現職のTreasure Dataを日を最終出社として退職します しばらくは休みをとりつつ次に何をやるかを考えるつもり 次は自分でビジネスを立ち上げるか、それともエンジニアリングチームを作るところにフォーカスするか、これから考える 技術顧問業もはじめます、が、メインにはしないつもり その他これからの活動にご期待ください 現職について 就職時にこのエントリを書いてから6年3ヶ月、当初思っていたより長く働いたなあという感じです。入ったときはUSと日で合計40人もいなかったくらいだったと思うけど、今では世界中に同僚がいて規模は約10倍くらいになりました。途中Armによる買収もあって、スタートアップから中規模企業までのビジネスと会社の成長を見てきました。自分もそれなりに貢献できてたんじゃないかなと思います。 いま見直すと就職エントリに書いていた3点、「技術ベンチャーであること」「ベン

    退職します2021 - たごもりすメモ
    tagomoris
    tagomoris 2021/05/31
    個人的なお知らせです
  • Gradle経由でのテスト実行時、コンソールに失敗したテストケースの情報を出力する - たごもりすメモ

    `./gradlew test`とか`./gradlew build`とかしたときに失敗したテストの情報はこの`index.html`を見てね! っていうのがめんどくさくて、なんでデフォルトで失敗したテストの情報を出してくれないんだっけ、と思っている人、主に俺の問題を解決する。 ていうかデフォルトでそうしてくれればCIサービスの設定時にテスト結果の保存とかを個別にやらないと何が失敗したかもわかんなくなってて困る、みたいな状態にならなくてすむのにね。 調べてたら「とにかくコンソールに全部出したい!」みたいなのがいっぱいひっかかるけどそうじゃないんだよなー、そういうのはtoo muchなんだよ。 で、これ。 stackoverflow.com のうち一番下の回答(TestLoggingを使う)が簡単に調整できそうだったので、手元プロジェクトで以下のようにした。Kotlin DSL使ってるんで`

    Gradle経由でのテスト実行時、コンソールに失敗したテストケースの情報を出力する - たごもりすメモ
    tagomoris
    tagomoris 2021/04/22
    なんか似たようなことを何度もやってる気がする
  • macOS Big Sur なM1 MacのEmacsでDocuments以下のファイル(など)を開く - たごもりすメモ

    M1 mac (macOS Big Sur)買ってからまだちゃんと開発とかに使えてなくてちょっとずつセットアップ進めてるんだけど、Emacsで ~/Documents 下とかが読めないことに気付いた。以前のバージョンで指摘されてた解法であるところの以下の方法もダメ: M-x ns-open-file-using-panel で一度Documents下のファイルを開けばいける → ダメ EmacsにFull Disk Access権限を与える → ダメ 実は裏技で/usr/bin/rubyにFull Disk Access権限を与える → なんかファイル開くダイアログで/usr/binとかが開けなくなってない?(ダメ) というわけで調べてたらこんなのが見付かった。 braveam.com Can not do dired on ~/Documents when it is in iCloud

    macOS Big Sur なM1 MacのEmacsでDocuments以下のファイル(など)を開く - たごもりすメモ
    tagomoris
    tagomoris 2021/04/13