tomoima525's blog

Androidとか技術とかその他気になったことを書いているブログ。世界の秘密はカレーの中にある!サンフランシスコから発信中。

開発

あなたのしらない米国所得申告システム

確定申告の時期なので、米国の一風変わった(?)所得申告システム(Information Return)と連携するアプリケーションを開発した話について書こうと思う。 米国の所得申告 所得申告システム、FIRE 不思議なファイルフォーマット みよ、これがメジャーの仕様書だ …

プロンプトエンジニアリングってソフトウェア開発?と感じるあなたへ ~ LLM開発とソフトウェア開発の違いの話

この記事はLLM開発におけるプロンプトエンジニアリングに違和感がある人に向けた、捉え方を変えてみたら少し印象が変わるかも、という提案をするものです。 かくいう自分もなんだか普通のソフトウェア開発とは異なると感じていました。この違和感の言語化を…

TypeScript の AWS Lambda function を2000倍見栄え良くする

AWS Lambda Advent Calendar 13日目の記事です。 qiita.com 今回は AWS Lambda function で TypeScript の 関数を書くときにコンソール上で2000倍(※当社比)見栄え良くする方法を書きます。 ちなみにここでの"見栄えの良さ"はAWS コンソール上での読みさすさ…

LLM開発のいろはをおさらいする~手法からツール、開発ノウハウまで

最近PoCやサービス開発を通じて、どっぷりLLMの開発をしています。この記事では最近の大規模言語モデル(LLM)を使ったアプリケーション開発の種類や手法、ツール群について一通りまとめました。よくあるチャットボットからReActといった最先端のものまで、こ…

Amazonのサーバレス→モノリス移行記事から学ぶこと

今年の3月頃、Amazon Prime のテックブログでストリーミング監視システムのマイクロサービスをモノリスに作り替えて90%コストを削減した記事が投稿され、ソフトウェア業界に波紋を呼びました。この記事の真相はなんだったのか、我々が学ぶべきことはなんだ…

Lambda LayerからRustベースのWebAssemblyを使用する

最近、とあるRustベースのモジュールを、Lambda function(Node.js)のサーバレスプロジェクトで利用できるか調査しました。その際に、 WebAssembly (wasm)をLambda Layerからどう活用するか検証したので、記事にまとめました。 RustベースのWebAssemblyを使用…

ゼロ知識証明を学ぶ ZKUniversity を修了しました

zku 3 月から参加していたゼロ知識証明を学ぶプログラム ZKUniversity を先日修了し、卒業生の NFT も貰ったので、感想や最終プロジェクトについて書き残します。 zku graduate NFT ZKUniversity とは Learn to Earn コースの構成 受講の感想 最初がつらい。…

アムステルダムで Web3 カンファレンス Devconnect に参加した

2022年 4/17 - 4/25 にかけてアムステルダムで開催された Devconnect というカンファレンスに参加したので、そこで得た知見、ブロックチェーンや web3 が向かう先について感じたことをまとめます。 Devconnect とは 参加したイベント Layer2 Amsterdam zkSum…

パスワードレス認証サービスMagicとAmplify(Cognito)を使った認証システム

これは AWS Amplify Advent Calendar 2021 https://qiita.com/advent-calendar/2021/amplify 20日目の記事です。 Magic は Email や今はやりの web3 におけるパスワードレス認証を実現するためのツールです。 magic.link Magicのパスワードレス認証 AWS Ampl…

プロダクト思考とプロジェクト思考を理解し、優れたプロダクト、チームを作り出す方法

ツイッターで偶然見かけたプロダクト開発に関する一連のツイートが、プロダクトチームと経営陣、あるいは開発メンバーやプロダクトマネジャーの間に起きる摩擦を見事に言語化していました。 As they grow in size, teams within megacorps and startups tend…

ブロックチェーン知識ゼロから Solana ハッカソンに参戦するまでの学習記録

つい先日、Solana というブロックチェーンを使ったオンラインハッカソンに参加し、1 つのプロダクトをローンチしました。この記事はブロックチェーンについて全く無知の状態から2ヶ月後にスマートコントラクト(Solana ではプログラムと呼びます)を書き、ア…

Provisioned Concurrency を Amplify 上の Lambda Function で利用する方法

Provisioned Concurrency は、Lambda 関数を常にクラウド上に起動させておく機能です。Amplify はこの機能をサポートしていませんが、CloudFormation ファイルをカスタマイズすることで Provisioned Concurrency の生成を自動化することができます。この記事…

初回の AppStore レビューで7回リジェクトされたので項目と対応をまとめとく

最近パイロットアプリを AppStore にリリースしました。最初の審査は通常よりもきびしいという噂の通り、いや、噂を通り越して審査を通るまでに 7 回リジェクト(メタリジェクト含む)され、休日も挟んで 12 日ほどかかりました。しんどかった気持ちを供養する…

Serverless Framework で作る mono repo AWS プロジェクト構成

サーバーレスなアーキテクチャを実現するサービスは世の中いくつか存在します。その中でも Serverless Framework(serverless.com) はベンダーに依存せずサーバーレス構築を提供するユニークなサービスです。サポートするベンダーも AWS, Google, Azure とい…

React Nativeの次世代アーキテクチャTurboModuleとJSIの話

stand.fm 社が主催する React Native 勉強会にて Catching up with TurboModules という題名で未だ全容がはっきりしない TurboModules について発表しました。 speakerdeck.com この記事は発表では伝えきれない部分を補うものとなっています。 現状の Native…

Google Speech To Textでそこそこ使える書き起こしツールを作る

奥さんが自分のメディアを持っていて日々サステナビリティや育児について発信しており、その一環で色々な方にインタビューをしています。 www.misamisaz.com インタビューページ インタビューは録音した音源をもとに対話形式で書き起こすわけなのですが、こ…

Apollo Client v3 アップデートのハマりどころまとめ

先日会社のプロジェクトにて、ようやくApollo Clientをv3にアップデートしました。今回のメジャーアップデートはいくつか大きな変更点があり、我々のプロジェクトでは影響を受けたファイルは合計300以上になりました。この記事ではどのような変更があったの…

React NativeでiOSアプリをAndroidアプリに移植するときに気をつけること

数ヶ月前、自社製品(2年以上前にiOS版をリリース)のAndroid版アプリを開発/リリースしました。アプリはReact Nativeで実装されており、多くのコードがそのままで動きます。しかし、ビルド設定やデバイス固有のNativeコードについては、アプリを正しくビルド…

柔軟に開発チームを拡張する ~スタッフ・オーグメンテーションの知見~

ベイエリアにある今のスタートアップに入っておよそ一年ちょっとが経過しました。入社してから開発の他に採用やチーム作り、プロジェクトの推進などに力を入れて取り組んでます。今回は UI 改善や短期的なプロジェクトを回すために、スタッフ・オーグメンテ…

2020 年の React Native 開発

2019 年は React Native にとってはさまざまな変化があったので、それらを振返りつつこの記事では最近の React Native をめぐる状況と個人的見解について書きます。採用を検討している方、Flutter などのクロスプラットフォーム開発フレームワークと比べたい…

旅をしながら仕事をする、あるいはリモートワークができるチームの作り方の話

12月中旬から1月中旬のおよそ3週間と少しのあいだ、ヨーロッパを旅しつつリモートで仕事をしていました。自分が働いている会社は現在サンフランシスコと日本に拠点があり、日本にいるメンバーも北海道や北関東など様々な場所からリモートで働いています。今…

クライアントとサーバーどちらに実装するかの設計指針をチームで持つこと

モバイルアプリケーションを開発していると、この要件や仕様はクライアントとサーバーどちらに置くべきか、という議論がチームでなされることがしばしばあります。例えば、 あるレスポンスAを受けて処理Bを行い、その結果をユーザーに提示する 登録処理など…

メルカリを退職してChanoma, Inc. にジョインしました

近況報告です。11月頭にメルカリを退職し、サンフランシスコを拠点とするChanoma, Inc.にジョインしました。

Android App Bundle/Dynamic feature modulesにみるモジュール化の未来

Google I/O 2018で発表された新機能であるAndroid App BundleとDynamic feature modulesが大規模アプリのペインポイントを解決しそうなので、早速利用/サンプルプロジェクトを触ってみた所感などを書きます。(5/9Dynamic featureのテスト方法について更新し…

日本向けのアプリとUS向けのモバイルアプリの違いはなにか

日本向けアプリとUS向けのモバイルアプリを開発した経験から「日本のアプリとUS向けのアプリの違いって何ですか?」と聞かれることがあります。個人的に最も違う点を挙げるなら、タイポグラフィだと思います。具体的にどういうことなのか、またもし海外向け…

「Android アプリ設計パターン入門」でReactNativeハイブリッドアプリやMVVMアプリ設計について執筆しました

本を書きました! ひょんな経緯から、クラウドファンディングによるAndroid設計本「Android アプリ設計パターン入門」の執筆に携わりました。 自分が担当した章は「7章 チームとアーキテクチャ」になります。クラウドファンディングの本で手にとっていただく…

React Nativeハイブリッドアプリケーション開発ことはじめ

React NativeとNativeのハイブリッドアプリケーションはFacebookやAirbnbなど大企業がを積極的に導入していることやNativeアプリを部分的にリプレイスできる利便性から今後も採用が増える分野と考えられます。本記事ではハイブリッドアプリを開発した自分の…

結婚式でLINE Message APIを使った写真共有サービスを作った話

先日結婚式を挙げました。式中ご参列いただいた方と簡単に写真を共有したいなと思い、LINE Message APIを使ってそういうマイクロサービスを作ってみました。ここではどのように実装していったのかを記憶が薄れぬうちに書きました。

Flow導入して数ヶ月がたった所感

ReactNativeプロジェクトで、型がないことによるつらいシーンが多くなり(特に変数の解釈に起因するバグ)、Facebook製の静的型解析ツールである[Flow](https://flow.org/en/)を数ヶ月前に導入しました。導入時の学びと、しばらく運用して感じていることについ…

中規模チームスプリントでSlack上のコミュニケーションが抜群に取りやすくなったひとつの方法

チーム規模が大きくなってくると、メンバーでコミュニケーションを取る際のストレスがだんだん上がってきます。特にSlack上でのやりとりは関係者が増えると複雑になりがちです。この点に関してここ最近、明らかにコミュニケーションの質が向上した取り組みが…