Jetpack Compose で 反転フラップ式案内表示機 (split-flap display) を実装する

これ。

👉 反転フラップ式案内表示機 - Wikipedia
👉 Split-flap display - Wikipedia

まあ、AI で動くものはすぐにできる。

が、なんか微妙なよくわからないコード。

どんなロジックになっているのかな、と興味あったので、ロジックをみながら整理してみました。

 

🧑🏻‍💻 考え方

切り替える文字列を以下に設定。


"各駅電車", "急行", "快速", "特急", "御座候"

そして、2つのレイヤーを重ねる。

・上下半分に分けた文字板
・アニメーションでめくれていく文字板

この考え方がいいようです。

重ね合わせには、BoxModifier.zIndex() を使います。

 

🧑🏻‍💻 上下半分に分けた文字板

下のレイヤーに配置する。

同じタイミングで、上下半分ずつの文字を切り替える。

 

🧑🏻‍💻 アニメーションでめくれていく文字板

上のレイヤーに配置する。

これを下のレイヤーに被せて、同期的にアニメーションさせる。

対象の Composable で Mofifier.graphicsLayer を使うと便利。

意図する回転方向と原点を指定するだけで良い。


modifier = Modifier
    .graphicsLayer {
        this.transformOrigin = TransformOrigin(...)
        this.rotationX = ...
    }

 

🧑🏻‍💻 出来上がり

とりあえず、ある程度まで整理。

アニメーション知識なく AI で生成したコードから入ると、ある程度ロジックを理解するまでは不具合修正はもちろん、調整さえ自在にできない。

厳しい時代かもしれません。


iPhone・Android・PC 間でデータを共有するなら、Google Keep が便利

 

🧑🏻‍💻 iPhone・Android・PC でデータを送りたい

スマートフォンとPCの間で、ちょっとしたデータを送りたいことがあります。

例えば、


iPhone → Android
Android → iPhone
iPhone → Windows PC
Android → Mac
PC → iPhone
PC → Android

といったケースです。

同じOSなら、AirDropやQuick Share など便利な方法があります。

しかし、iPhone・Android・Windows・Mac が混在すると、少し面倒です。

そこで便利なのが、Google Keep です。

 

🧑🏻‍💻 Google KeepならOSを気にしなくていい

Google Keep は、Android だけのアプリではありません。

スマートフォンだけでなく、PCのブラウザからも利用できます。


          Google Keep
               │
   ┌───────────┼───────────┐
   │           │           │
Android      iPhone      PC / Mac
   │           │           │
   └───────────┼───────────┘
               │
         Google Account

つまり、Google Keepを共有場所にすることで、OSの違いをあまり意識せずに済みます。

 

🧑🏻‍💻 Googleアカウントがあればいい

Google Keep の大きなメリットは、Google アカウントを使えることです。

例えば PC で調べた URL をスマートフォンに送りたいとします。


PC
 │
 │ URLをKeepに保存
 ▼
Google Keep
 │
 │ 同期
 ▼
iPhone / Android

スマートフォン側でGoogle Keepを開けば、そのURLを確認できます。

逆に、


iPhone
   │
   │ テキストを保存
   ▼
Google Keep
   │
   │ 同期
   ▼
Windows PC

のように、スマートフォンからPCへ送ることもできます。

 

🧑🏻‍💻 「自分の端末間」で使うのが簡単

実は、Google Keep の便利さは自分の複数端末をつなぐ用途で特に分かりやすいです。

例えば、


       ┌──── iPhone
       │
       ├──── Android
Google ┤
Keep   ├──── Mac
       │
       └──── Windows PC

すべて同じ Google アカウントでログインしておけば、Keep のメモを各端末から確認できます。

「自分の iPhone から自分の Mac へ URL を送りたい」といった用途なら、かなり手軽です。

 

🧑🏻‍💻 他の人とも共有できる

Google Keep は、自分の端末間だけでなく他の人との共有にも使えます。

共有相手の Google アカウントを指定すれば、同じメモを共同編集できます。


      Google Keep
      /         \
     /           \
自分の Google    相手の Google
  Account         Account
     │               │
  Android          iPhone
     │               │
    PC              PC

そのため、

・ 自分の Android → 家族の iPhone
・ 自分の Mac → 同僚の Windows
・ 自分の iPhone → 自分の PC

のような使い方もできます。

 

🧑🏻‍💻 「Google アカウントは今どき持っている」がポイント

iPhone ユーザーでも Google アカウントを持っている人は珍しくありません。

Android ユーザーなら、Google アカウントを利用しているケースはさらに多いでしょう。

PC でもブラウザから Google Keep を利用できます。

そのため、特別なアプリや専用の転送ケーブルを用意しなくても、OSの違いを超えて情報を共有できます。

 

🧑🏻‍💻 まとめ

iPhone・Android・Windows・Mac が混在する環境では、データ共有の方法に悩みがちです。

Google Keepなら、

・ Android
・ iPhone / iPad
・ Windows
・ Mac
・ Chromebook

などから同じデータにアクセスできます。

特に、

・ URL
・ テキスト
・ メモ
・ チェックリスト
・ 小さな画像

のようなちょっとしたデータを別の端末へ渡す用途に向いています。

「iPhone か Android か」ではなく、「Google Keep を共有場所にする」と考えると、端末間のデータ共有がかなりシンプルになります。


Mac Book の 日本語 JIS キーボードを 英語 US キーボードになるべく違和感なく変える方法

日本語 JIS キーボードが馴染めない場合とか

ストレスすぎますよね。

逆もしかり。

様々なキーボードマッピングカスタマイズアプリなどありますが、

強引にレイアウトを変更したとて、

そもそもキーそれぞれ一つ一つのサイズが違う。

この方法がベストだと思われます。

 

🧑🏻‍💻 Magic Keyboard を手に入れる

少し高いですが。

👉 Magic Keyboard - 英語(US) - Apple(日本)

これを買うなりして手に入れるのが一番操作感は一番近いです。

日本語 JIS と 英語 US。

指紋センサー付きとなし。

Mac Bookのキーボード。

すべてサイズ同じです。

上に乗せればそれが一番良い感じです。

以上です。

知らなかったわ。


Jetpack Compose と SwiftUI の相互乗り入れチャンス:宣言的 UI の「共通言語」を武器にする

モバイルアプリ開発の主戦場は、完全に「宣言的 UI(Declarative UI)」にシフトしました。Android の Jetpack Compose と iOS の SwiftUI。これらは単に似ているだけでなく、設計思想の根幹が驚くほど共通しています。

「片方の OS しかやらない」のはもはやもったいない。今回は、両者の似ている点と、実際に触れてみて分かったそれぞれの強み・弱みをエンジニア視点で深掘りします。

 

🤔 1. 驚くほど似ている「共通言語」

まずは、両者がどれだけ似ているかを見てみましょう。基本的な構造はほぼ 1 対 1 で対応しています。

このように、概念さえ理解していれば、文法を「翻訳」するだけでコードが書けてしまいます。これが今、エンジニアが「相互乗り入れ」すべき最大の理由です。

 

🤔 2. Jetpack Compose の「いいとこ・わるいとこ」

いいとこ:柔軟性とロジックの書きやすさ

  • Kotlin の恩恵: 単なる関数(Function)なので、UI の中に if や for などの標準的なロジックを非常に自然に記述できます。
  • プレビューの強力さ: MultiPreview などの機能により、複数のデバイス設定やテーマを一度に確認できるのが強力です。
  • 後方互換性: OS のバージョンに依存せず、ライブラリの更新で新機能が使える(Android 5.0+ 等)のは、ビジネスサイドから見ても大きな利点です。

わるいとこ:ビルド速度と環境構築

  • コンパイル時間: Kotlin Symbol Processing (KSP) や Compose コンパイラの処理により、プロジェクトが大きくなるとビルド時間が課題になりがちです。
  • プレビューの不安定さ: 依然として、複雑なプロジェクトではプレビューがビルドエラーで止まることがあり、ストレスを感じる場面もあります。

 

🤔 3. SwiftUI の「いいとこ・わるいとこ」

いいとこ:簡潔さと OS との一体感

  • Modifier の直感性: .padding().background().cornerRadius() とドットで繋いでいく記述(メソッドチェーン)は、Compose の Modifier よりも直感的で、記述量が少なく済みます。
  • プレビューの速さ: Xcode の Previews(Canvas)は、シミュレータを立ち上げ直さずにコード変更を即座に反映する「Canvas プレビュー」が非常に軽快です。
  • デフォルトの美しさ: 最小限のコードで「iOS らしい」アニメーションや挙動が手に入ります。

わるいとこ:OS バージョンの壁

  • 「iOS 15 以前」の壁: 新しい SwiftUI の機能を使いたくても、サポート対象の OS バージョンによって使えないことが多々あります。これが開発者の最大の悩みどころです。
  • ブラックボックス: 内部実装が隠蔽されている部分が多く、標準から外れた挙動をさせようとすると、途端に難易度が上がります(Introspect などのハックが必要になることも)。

 

🤔 4. 相互乗り入れがもたらす「エンジニアとしての価値」

今、この両方を触るメリットは「両方のプラットフォームでアプリが作れる」ことだけではありません。

  • 「UI 設計の抽象化」が身につく: 実装の詳細に振り回されず、「状態をどう定義し、どう UI に流し込むか」という設計の本質に集中できるようになります。
  • KMP (Kotlin Multiplatform) への布石: Compose を知っていれば Compose Multiplatform で iOS UI も書けますし、SwiftUI を知っていれば KMP の UI 層を SwiftUI で書く選択がスムーズになります。
  • Action and Simple: 複雑な理論をこねくり回すより、まずは両方の環境で簡単な Todo アプリを作ってみる。この「Action」こそが、モバイルエンジニアとしての視野を一気に広げてくれます。

 

🧑🏻‍💻 まとめ

Jetpack Compose と SwiftUI は、もはや別々の島の言葉ではありません。同じ「宣言的 UI」という大陸にある、少し方言が違う程度の差です。

Android エンジニアなら Mac を手に取り、iOS エンジニアなら Android Studio をインストールしてみましょう。その一歩が、モダンなモバイルアプリ開発における最強の武器になるはずです。


IDE × AIモデル別:プロンプトに食わせるべきファイルまとめ

主要IDEごとに、連携AI・推奨ファイル・目的・補足を整理した表です。プログラミング中心にまとめています。

1. 基本のセット

  • プロジェクト概要・設計
    README.md, architecture.md
    AIに全体像・設計方針・責務を理解させる
  • 依存・環境情報
    build.gradle(.kts), package.json, Podfile, .env.example
    SDK・ライブラリ・環境変数を正確に認識させる
  • コーディング方針・ルール
    .prompt.yaml, .copilot-instructions.md, .editorconfig
    命名規則、禁止API、コードスタイルを統一

2. IDE × AIモデル別の推奨ファイルと効果

IDE 推奨AIモデル 重点ファイル 効果 補足
Android Studio / IntelliJ Gemini Code Assist, Copilot .prompt.yaml, build.gradle, architecture.md Androidプロジェクト全体を理解した補完・設計提案 プロジェクト全体の構造を解析可能。方針ファイルで安定化。
Xcode Copilot, GPT-5 .prompt.yaml, Package.swift, README.md SwiftUI/MVVM設計に沿った正確なコード生成 Xcodeは依存解析が弱めなので .prompt.yaml を明示すると効果大。
VS Code Copilot Chat, GPT-5 .copilot-instructions.md, package.json, README.md 軽量環境で多言語対応、チーム開発の方針共有に有効 拡張機能単位でAI切替可能。指示ファイルが最重要。
Cursor / Windsurf / Aider GPT-5 / Claude 3.5 / Gemini 1.5 .prompt.yaml / .cursorconfig, README.md, architecture.md, build設定 設計・生成・リファクタを自動で分担 ファイル単位でAIが文脈キャッシュを保持。設計書参照可。
Jupyter / DataSpell / VSCode + Python GPT-4 Turbo, Gemini Advanced .ipynb / .csv / .xlsx, analysis.md / README.md, .prompt.yaml データ解析・統計・グラフ生成 データ+分析目的+出力形式を渡すと的確に解析可能。
Figma / Webflow / Framer Gemini 1.5 Pro (Vision), GPT-5 Vision .fig / .svg / layout.json, style_reference.jpg, .prompt.yaml UIデザイン→コード変換・スタイル抽出 構図+目的+出力フォーマット指定でSwiftUIやComposeコード化が容易。

3. 実務での運用Tips

  • サンプルコードを渡す
    /sample_code に小さな動作例を置くと、AIが文体やパターンを模倣しやすい
  • 変更履歴を渡す
    CHANGELOG.md や feature_list.md を読むことで、過去の修正意図を理解し、安全な提案が可能
  • 大きなファイルは要約して渡す
    設計書や長文ドキュメントは、AIの文脈理解の負荷を減らすために必要部分だけ渡す
  • 依存関係やAPI仕様は明示
    未定義関数や古いAPIの誤提案を防ぐため、build.gradle や .env.example を食わせる

4. まとめ

プログラミングAIを「単なるコード補完」ではなく、プロジェクト理解型のアシスタントとして活用するには、

「概要 + 環境 + 方針」をAIに与えることが最も重要です。

  • IDEや言語に合わせたファイルを食わせる
  • 設計方針と依存関係を明確化する
  • サンプルコードや履歴で文脈を補完する

この3ステップで、AIは理解に基づいたコード生成・設計提案を行い、開発効率と品質を大幅に向上させられます。