ライドシェアの合間にAIツイルを構築する:デッドタイムを開発の宝に変えた方法
こんにちは、私はクリスです。バンクーバーで元職人からライドシェアドライバーに転身し、とても素晴らしい何かを見つけました。毎日、ライドの合間に平均して1時間半ある時間を活用して、スマートフォンでAI搭載アプリケーションを構築する方法を独学しています。こうした細切れのダウンタイムで達成したことは、私自身にとっても驚きです。
職人を辞めたのは自分の意思ではありません。Skil ソーで親指のほとんどを失ったためです。塗装工、配管工、大工として20年以上働いてきましたが、一瞬のミスで終わりました。しばらくは悔しさを感じていたと認めます。しかし、職人としての経験で培ったのは、道具が変わっても問題解決のマインドセットは変わらないということです。障害に直面したとき、誰かが解決するのを待つのではなく、自分で解決策を組み立てるのです。
このマインドセットはソフトウェア開発にも完璧に応用できました。ただし、トレードオフがあることも認めます。コーディングの過程で障害にぶつかるたびに(そして頻繁にぶつかります)、その問題に対処するためのツールを作ります。まるで渡れない川に遭遇したら橋を架けるようなものです。このアプローチは非常に自由をもたらしてくれます。たとえ月額サブスクリプションの方が効率的に同じ問題を解決できたとしてもです。
職人のマインドセット:コードでの問題解決
職人仕事とソフトウェア開発の類似点は、想像以上に深いものです。大工仕事では、特定のジグが不足している場合、端材から自作します。配管では、適切なアダプターが見つからない場合、一時的な継ぎ手を作ります。このようなブリコラージュ(手近にある材料で間に合わせを作ること)は、自然に身につくものです。
しかし、ソフトウェア開発には肉体労働にはない複雑さが加わります。大工がジグを作った場合、機能するかしないかのどちらかです。壊れたらすぐにわかります。一方、カスタムアプリケーションを作るとき、故障の仕方はもっと陰湿です。対処されていないエッジケースが気づかれないまま接続を切断したり、依存関係に数か月間気づかれない脆弱性があったり、コード自体が継続的な注意を必要とする負債になります。
ただし、自分でツールを作るロマンは確かにあります。自分のワークフローに完璧に合ったソリューションを、プロダクトマネージャーがユーザーのニーズについて抱く仮定ではなく、自分の特定のニーズに最適化して作り上げることに深い満足感があります。私が常に悩むのは、このアプローチがいつ生産性に貢献し、いつ問題解決を装った過剰エンジニアリングになるのかという点です。
最初の橋:カスタムSSHクライアント
私の代表作は、Termsと呼ぶiOSアプリで、現在4番目のイテレーションです。このSSHクライアントは、ライドの合間の細切れの時間での実際の使用を通じて何年もかけて進化し、私の独特なコピーペースト、音声認識、AI駆動のコーディングワークフローに完璧に合わせられています。
このアプリは生体認証、具体的にはFace IDを使用します。開くとシステムが顔を認証し、そのままVPSホスティング環境のコマンドラインに直接ドロップします。Face IDの背後にある技術は魅力的です。AppleのTrueDepthカメラシステムは、3万以上の不可視ドットを投影して顔の正確な深度マップを作成し、赤外線イメージングを使用して暗闇でも機能します。
スマートフォンで快適に座り、実際に可能性のあるツールを構築しながら、常にバグを修正し最適化することは、純粋な喜びです。強くおすすめします。そう、壁の骨組みを組んだり、銅管をはんだ付けしていたのと同じ手が、バンクーバーの駐車場からLinuxサーバーにPythonをデプロイしているという事実には、静かな満足感があります。
私のお気に入りの機能の一つは、モバイル開発環境での共通のストレスに対処するものです。バグやトレースバックでターミナルがフリーズした場合、アプリを上にスワイプして閉じ、再び開き、Face IDで再認証すると、すぐにコマンドラインに戻り続行できます。このシームレスな復旧プロセスにより、数え切れないほどのフラストレーションから解放され、貴重なライドの合間のコーディングセッションで勢いを維持できます。
技術的な実装では、暗号化されたSSHキーをiOSキーチェーンに保存します。キーチェーンはSecure Enclaveを搭載したデバイスでハードウェアによるセキュリティを提供します。接続状態の管理は最も難しい部分の一つで、市内を移動する際の異なるセルタワーやWiFiホットスポット間のネットワーク遷移に対応する必要がありました。ネットワークの変化を検出し、リモートセッションに自動的に再接続する接続永続化レイヤーを実装しました。多くの場合、遷移が発生したことに気づかないほどシームレスです。
既存のSSHクライアントで同様の機能を実現できたでしょうか?もちろん可能です。しかし、それらのアプリは一般的なユースケースに最適化されていますが、私のアプリは特定のワークフローに焦点を絞っています。カスタムキーボードショートカット、音声コーディングのためのiOSの音声認識との統合、スマートフォンとサーバー間でコードスニペットを受け渡すための専門的なクリップボード管理など、これらの機能は私が正確なニーズに合わせて構築したからこそ存在します。
動画から音声への橋:コンテンツワークフローの摩擦を解決
二つ目の主要なツールは、コンテンツ作成ワークフローにおける特定の摩擦点から生まれました。動画の文字起こしを確実に行う方法が必要でした。この処理を扱うウェブサービスはありますが、個人のコンテンツライブラリにはもっと柔軟なものが求められました。
私のアプローチは、まず動画を音声に変換することでした。これは大きな動画ファイルをアップロードするよりもはるかに軽量なプロセスです。長年サードパーティアプリに頼っていましたが、iOSのアップデートで動作しなくなったり、特定の音声フォーマットが必要になったりすると、行き詰まってしまいました。そこで、自分で変換ツールを作りました。
基盤となる技術はFFmpegという、強力なオープンソースのマルチメディアフレームワークに依存しています。
Get new posts
Subscribe in your language
New posts delivered to your inbox. Unsubscribe anytime.
Receive in: