Xcode27のEmbed in...について

Xcodeが27になって、だいぶ見た目が変わった。AI活用・Coding Assistantについては、エディタ画面の上にNewConversationのボタンがあったり、右クリックからもメニューを表示させて使うことができたりして、言うことを聞いてくれるかどうかは別にして使いやすくなっている。

ただ、右クリックから、Embedが表示できたのがなくなってしまって大変残念。後からVStackとかHStackで囲みたくなった時、結構勝手にGroupとかだったかで囲ってくれて、それをVStackとかに書き換えるだけで{}とか、インデントとか考えることなく使いやすく、重宝していました。これがなくなってしまった。(いろいろ探したところ)メニューの一階層奥に入ってしまった。右クリックーRefactorで一番下にEmbed in...と表示される。ただ勝手に範囲を選択してはくれなくなっていた。ちょっと残念。

右クリックするとメニューの中にfoldが出てきて、ひとまとめにしてくれるのだが、今ひとつ使いにくい。このひとまとまりの{と}の対応は面倒でどこまでだか、よーく注意してないと間違える。foldよりはエディタの行番号の右の帯の方がわかりやすく、これあたりを使いながら、Shiftキーで範囲を選択して、Shift+[ で範囲を{}で囲って、VStackとかHStackでしょうか。一手間増えます。

 

Geminiで作った音楽ファイルの「SynthID」という電子透かしについて

先日、Geminiで音楽ファイルを作って、LogicPro12で編集したことを書いた。著作権関連で問題はないかと調べたところ。ファイルに「SynthID」という電子透かしが入っているようだ。これは、Geminiにファイルをアップして、聞いてやると入っているかどうかわかるようで、やってみるとどこからどこに入ってますと教えてくれた。

さらに、実際にはLogicPro12で編集をして、Compresserで圧縮をしているのだけど、ちゃんと「SynthID」が入っていますと答えてくれた。まあこのくらいでは消えないのでしょう。

著作権関連では、Googleは著作権を主張せず、Youtubeにアップしてもいいと書いてあったので、ちょっとした使い方には問題はないようです。ここがわかりやすかった。

note.com

 

Logic Pro 12 のStem Splitter を使ってみた

SwiftUIでコーヒードリッパーのタイマーを作っていて、再生終了の音楽をGeminiで作成した。ただ、Geminiがなかなか言うことを聞いてくれなくて、終了の雰囲気のある音楽はできたのですが、「できたよー」とかの声をなかなかとってくれなかったりとか、長さを指定しても30秒から短くならないとか、音声がなくなったら今度はチャイムの音になってしまうとか、自分がGeminiにうまく指示を出せてないのだと思うけど、思うようにならない。

そこでLogicProでどうにかならないかと調べてみたらStemSplitterというのがあることがわかってやってみた。

note.com

support.apple.com

を参考にしました。

Geminiで作成したMP3のファイルをドラッグドロップして読み込んで、ユーザーガイドにあるようにStemSplitterを選択すると、見事にパートごとのトラックが現れました。コードも解析されて表示されています。ここからは簡単で、ボーカルのトラックをミュートして、ちょうどいい長さにカットして、ファイルに出力してやると、終了の音楽ができました。かかった時間は5分くらいでしょうか。

これもAIをうまく使う一つの方法ですね。

SwiftUIのシュミレータについて

SwiftUIでシュミレータに入っているのに表示されず、選択ができないことに悩んでいた。やっとわかった。シュミレータで指定してあるiOSが開発環境と違うために表示されず、選択できないということがわかった。このことは、どこかに書いてありそうだけど、ない。シュミレータを開発環境に合わせて作ってなくてはならない。新しい機種のシュミレータが表示されたのはこれで理解できた。

とりあえずわかったので書いてみた。

画面がないので後でつけておきましょう。

GoogleのLookerStudioを使ってみた

GoogleのFormを使ってアンケートをとり、その結果がスプレッドシートにまとまるので、それをソースにしてLookerStudioでダッシュボードにまとめてみた。

まず、よかったのが、Formを使っているので、入力されるとスプレッドシートにどんどんデータがたまってくる。ソースを指定してLookerStudioで表示しているので、グラフやカウント表示が何もしなくてもリアルタイム(更新タイミングがあるが)で更新される。

さらに、グラフなどで特定のデータ項目を選択すると、その項目でフィルタがかかり、データが絞り込まれる。これも、考えながら選択して表示させられるので、新たな発見もあってとてもいい。

アンケートの中に、自由記述の項目があり、ここも結果を考察するのにキーワードで絞りたかったので、コントロールの中の入力ボックスを使って、キーワードを入力すると絞り込めるようにもしてみた。入力ボックスの設定がいろいろできて、検索タイプを「次を含む」にすると、キーワード一つをいれてフィルターをかけることができた。これもなかなか良かった。ただ、キーワードを複数入れてみたかったので、検索タイプを「次に含まれる」でできると思ったが、なかなかうまくいかずにけっこう大変だった。マニュアルを見ると「メロン、スイカ」のように書くとできるとあるができない。

結局は「正規表現」で複数ワードのOR検索ができた。ただちょっとこの正規表現が面倒で入力ボックスには「.*メロン.*|.*スイカ.*」と入力。.*でキーワードを囲ってORの|である。本当はもっと簡単に、入力するのは「メロン、スイカ」にして、別のところで正規表現で表して、フィルタをかけるようにできるといいかもしれない。まだやってない。

自由記述は、絞り込んだものをスプレッドシートなどに出力できるのもとてもいい。実は出力したものをNotebookLMをに取り込んでまとめることもしてみた。きちんと傾向をつかんでまとめてくれた。

アンケートは、集まったデータから何がわかるかで、LookerStudioのように簡単にグラフに表せたり、直感的にグラフを使ってフィルタがかけられたりできることはとてもいい。なかなかいいツールである。NotebookLMも含めてGoogleはすごい。

 

 

GASでAPIを使うためのサービスを追加(AdminDirectory)ではまったこと

Google Workspace for Educationを使っていて転出した生徒のIDがどうなっているのか確認するためにGASを使って情報を取得しようとしたところ、はまってしまった。

結局、サービスの追加でAdmin SDK APIでAdminDirectoryを追加すればいいのだが、これにバージョンが2つあった。この2つは「reports_v1」と「directory_v1」で、前者を指定してしまっていたので、エラーが出る。

const user = AdminDirectory.Users.get(owner);

でownerにIDを指定すれば、ユーザー情報がuserにはいるはずなのだが、ここで止まる。最初は、何も起こらないで、終了してしまうのでエラーが出ていることさえわからなかった。

まずは、GASの画面から左側の実行数を見て、完了と表示している行をクリックするとエラーが表示される。エラーは

デバッグ    エラーが発生しました: Cannot read properties of undefined (reading 'get')

undefinedなので、コードを書き直して、AdminDirectoryのあとに.を打ってもusersが候補に上がってこない。どうもAdminDirectoryがおかしそうだとなって、一番上のプロジェクトの詳細を開いて、一番下にプロジェクトのOAuthスコープを見ると

View usage reports for your G Suite domain で    https://www.googleapis.com/auth/admin.reports.usage.readonly なんか変 で、コードに戻って、サービスでAdminDirectoryを消して、登録し直そうとするとバージョンが2つ出てきて選択できることがわかった。

まあたいへんだった。でも、バージョンを「directory_v1」にするとAdminDirectoryのあとに.を打つとちゃんとUsersがでてくる。やはりエディタの予測補完をうまく使うことが大切なことがよくわかった。予測補完できないときは問題があり、設定に問題がある。

モンティ・ホールの問題

フェイクニュース時代の科学リテラシー超入門という竹内薫さんの本を読んだ。一気に読める本で、フィルターバブルの話とか相関関係と因果関係の話などもあり、納得しながら読めた。なぜ科学を勉強するとか、なぜ数学を勉強するのかの答えにもなる。ちょうどそんな話を先週もした。本の中にモンティ・ホールの問題が出ていた。ちょっとやってみたので書いてみる。

モンティ・ホールの問題は、知ってはいたのだが、ちゃんと考えたことがなかったので場合分けをきちんと書いて自分でやってみた。本当はドアを開けるのだが、簡単にあたりハズレにして、エクセルで表に書いたので下に貼り付けてみる。

  モンティ・ホールの問題    
  あたり ハズレ ハズレ 変えた時  
1 a b c ハズレ 2/6
2 a c b  
3 b a c あたり 4/6
4 b c a  
5 c a b  
6 c b a  

 

aが自分で上の1,2では、はじめにあたりを引いている。でも、このあと、変えるのでこれはハズレになる。

3,4,5,6がはじめはハズレを引いているのだが、司会者がハズレを教えてくれる(黄色のcとb)ので、自分の選んだものでないもう一つの方は必ず当たり、だから変更すればそれは必ず当たり(bとc)になる。でこれが4通り。

結局司会者がハズレを一つ教えてくれるので、自分の選択を変更すると当たりがハズレになり、ハズレが当たりになるという逆転が起こって、当たり:ハズレが2:4だったのが、逆転して、4:2になる。

なので、変更したほうが当たる確率が高くなるということになる。確率が2/6から4/6になるという話でした。ちょっと書くだけで、納得ですね。また、逆転していることもわかった。