musicLineアプリ開発日記

作曲を誰でも楽しく簡単に♪

技術系

記念動画デザインの観察(ランキング・急上昇・殿堂入り編)

musicLineの記念動画(ランキング・急上昇・殿堂入り)のデザインを紹介。 内部の実装もちょこっと紹介!の第二弾です。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール ランキングの記念動画 3分作曲 musicLine~ いつでも、どこでも、気軽に作…

記念動画デザインの観察(コンテスト編)

musicLineの記念動画(コンテスト)のデザインを紹介。 重ねているエフェクトを観察し、内部の実装をちょこっと紹介します。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール コンテストの記念動画 3分作曲 musicLine~ いつでも、どこでも、気軽…

Observation (iOS17+) の注意点

今回は監視フレームワーク・通知機構のObservationの話。 Observationを使用してメモリが圧迫する状況があったので調査しました。 Observationでメモリが圧迫 3分作曲 musicLine~ いつでも、どこでも、気軽に作曲 ♪ ~ はじめに musicLineではMIDI楽譜を編集…

SwiftUIでダイアログ

今回はSwiftUIでダイアログを表示する話。 様々なダイアログを表示してモデルのプロパティを変更できる機構を考えます。 ダイアログの動作 3分作曲 musicLine~ いつでも、どこでも、気軽に作曲 ♪ ~ はじめに musicLineではMIDI楽譜を編集するために様々なダ…

OpenGL(描画)の高速化

今回は音符を描画するために使用しているライブラリOpenGLの高速化の話。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール 描画の高速化(コマ落ち解消) 3分作曲 musicLine~ いつでも、どこでも、気軽に作曲 ♪ ~ はじめに musicLineでは、コミュ…

リンク先のページ情報を取得する

今回はリンク先のページ情報(タイトル、詳細、サムネイル)を取得する話。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール ページ情報の表示 3分作曲 musicLine~ いつでも、どこでも、気軽に作曲 ♪ ~ はじめに musicLineではコミュニティでユー…

シングルトンの活用方法(依存性の注入2)

今回もmusicLineの内部実装の話。(前回の続き) Transformを末端のクラスNoteへ共有する方法(依存性の注入)において、シングルトンを用いた方法について考えてみました。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール Transformの共有 3分…

インスタンスの共有方法(依存性の注入1)

今回はmusicLineの内部実装の話。 Transform(スクロール量等の画面状態)の情報を末端のクラスへどのように共有するか(依存性の注入)について考えてみました。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール Transformの共有方法は? 3分作…

座標変換(2D)

今回はmusicLineの座標系と座標変換の話。 例えば、タップ位置の音符とは、どの音符を指すでしょうか? いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール タップ位置の音符とは 3分作曲 musicLine~ いつでも、どこでも、気軽に作曲 ♪ ~ はじめに …

作曲のモデル設計

musicLineの作曲モデルを設計した話。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール モデル設計 音符選択動作 3分作曲 musicLine~ いつでも、どこでも、気軽に作曲 ♪ ~ はじめに musicLineでは全体的な依存関係がわかりやすくなるようにマルチ…

描画コストの最適化

musicLineでは画面をSwiftUIを使って描画しています。 今回はその描画のコストが気になったので、その調査と最適化した話。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール 描画コストの表示 3分作曲 musicLine~ いつでも、どこでも、気軽に作曲…

DIでSwiftUIのプレビューを高速化

必要ないモジュール依存を省いてSwiftUIのプレビューを快適にした話。 musicLineではマルチモジュールで開発を行っており、それが原因かSwiftUI のプレビューが遅いのが気になっていました。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール はじ…

SwiftUI + MVVMでの実装調査

musicLineのiOS版を開発する時に、MVVMパターンの構造を選択した話。 iOSアプリ開発におけるSwiftUIとMVVMを使った実装方法を調査しました。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール また実際にSwiftでタイマーを作ってみて、MVVMパター…

SwiftPackageでマルチモジュール開発

今回はマルチモジュール開発の話。 最近のSwiftPackageを使ったマルチモジュール開発について調査しました。 はじめに 開発が大きくなったり複数人で進めていく場合、モジュール分割してないとよくわからない状態でも実装を進められてしまいます。最初はなん…

includeタグでレイアウトを再利用する

Android開発で、同じようなレイアウトを部品化して再利用する話。 今回はmusicLineで実装中の機能「アクティビティログ」を例に解説します。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール アクティビティログ レイアウトを部品化 アクティビテ…

そうだChatGPTに考えてもらおう

はじめに 最近流行りのChatGPTですが、何かを調べるくらいならわざわざ使うほどでもないかと思い、使う機会がないまま過ごしていました。 そんな時、musicLineの開発で複雑なSQL文を考える機会があり、あまり慣れていない私は頭を悩ませていました。。。 そ…

DialogFragmentでNavigationを使用する

皆様はAndroid開発において、画面推移をNavigation Componentで実装していますか。 今回はDialogFragmentでNavigationを使用したらハマった話。 musicLineでは、新しく作成する「データを移行」ダイアログにNavigationを使用しました。全体としては従来通り…

ローカル環境にサーバーを構築する

musicLineのテストサーバーをローカル環境に構築してデバッグを簡単にした話。 WindowsでDockerとVSCodeを使って、サーバーをデバッグしたい時に役立つ内容です。 課題 musicLineでは、コミュニティ(クラウド)にデータをアップロード・ダウンロードする際…

ナンバーピッカーで数字入力を良い感じに

数字入力をダイヤル式のナンバーピッカーに変えて使いやすくした話。 ナンバーピッカー 例えば musicLineでは、拍子の指定にテキスト入力を使っていました。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール テキスト入力 でも、テキスト入力だと…

ViewModelのスコープを意識する

ViewModelは画面の状態を保持する役割があります。 今回は画面の状態をいつまで保持するかについての話。 ViewModelの概要 ViewModelは紐づけたFragmentが破棄されるまで生き続けます。 この生存期間のことをスコープといいます。 ViewModelを生成する時は、…