39ギター

35年ぶりに弾き始めたクラシックギター
神経痛と戦いながら
どこまでバッハに迫れるか
蝶も花もアーチェリーもあるよ

まだまだ進化の途中

2020-03-24 21:03:55 | 日記

こんばんは

 

そろそろ桜が咲き始めました

広島はもう開花宣言したんですが、我が家の団地は少し標高があるせいかまだちらほらです

 

来週には見頃を迎えるでしょうね

 

近所の山野草のあるお家の玄関先にこんな花がありました

可愛らしいですよね

それにみずみずしい感じが春らしい

これはヒトリシズカ

 

アーチェリーアプリはフィールドアーチェリー用に続き今はターゲットアーチェリー用を作っています

同じアーチェリーだからにているかと言うと、そうでもない

しかし全体の構造はほぼ同じで細かいところの違いだらけ

実は今日その大きな構造の点でまた前回同様の障害が出てきました

最後の大きめの画面を繋いだ瞬間に暴走してしまいます

前回と同じところです

NavigationLinkで次の画面に遷移するんですが、destination:で次の画面をコーディングした瞬間に落ちます

また前回と同じように変数名の定義を調べてみたりいろいろと修正してやっとつながるようになりました

どうやら前回も同じことだったんですが、次の画面を呼び出すときに引数の表記に間違いがあると暴走するみたいです

コーディング状の間違いは大抵エディターがチェックしてエラーの場所を知らせてくれるんですが、この場所だけは暴走するみたいです

例えば引数で渡す変数にselfをつけ忘れたり、ちょっとスペルを間違えたりです

こんなちょっとしたことで暴走してくれたんじゃ、話にならないですね

暴走するとマウスもキーボードもほとんど受け付けてくれなくなりxCodeの強制終了もそう簡単にはできなくなります

一瞬矢印が戻る時があるのでその時に強制終了のボタンを押してなんとか終わらせます

ちょっとしたことなんですが修復に非常に時間がかかります

 

SwiftUIはコーディングと並行して裏でいろいろと動いているようで、そこでおかしなことが起きるようです

まだまだ進化の途中といった感じですが、上手く乗りこなせばこんなに便利な言語はないでしょう


ターゲットアーチェリー用のアプリ

2020-03-22 21:32:56 | 日記

こんばんは

 

一週間のご無沙汰でした

前回はアプリをAppStoreに出す手続きが面倒くさいと嫌になっていました

どうなったかというとやはり面倒くさい

なのでそれは少し置いといて先にターゲットアーチェリー用のアプリを開発することにしました

アーチェリー競技には主に、フィールドとターゲットとインドアがあります

とりあえずこの3種類のアプリを用意してから、アーチェリー仲間の評価をもらってからAppStoreに出すかどうか決めます

年会費が12,000円もかかるし毎年継続してないとアプリのダウンロードができなくなるらしい

そうなると何年も出典していても良いようなものにしておかないとただの自己満足になりますからね

今はコロナ騒ぎでアーチェリーランドへはいけません

他の人は案外平気な顔で言っているのかもしれませんが、こちらはもう高齢者ですからとにかく気をつけておかないと

日本だけでなく世界的に収束するようでないと安心できないと思いますよ

オリンピックだって日本が収束していても世界がそうでなければできないでしょうね

主催側の日本もオリンピックのIOCも自分が大きな決断をすることには躊躇いがあるようで、まだ誰も思い切ったことをいうことができませんよね

欧米各国はアスリートの安全のためにも1年の延期はやむを得ないという考えが大勢です

 

ということで外出できない今の状況を利用してアプリの開発に全力で取り組んでいます

フィールドもターゲットも同じアーチェリーだからほとんど同じアプリになるかというと、これが全然違うんです

あと一週間もすれば全体像が見えてくるので「お楽しみに」ということです

え?誰も待ってないし関心はないよ・・・ですか?

いやいやきっとどこかでこの記事を読んでいる人がいるに違いない

その人のためにもちゃんと報告はしますからね・・・


アイコンを設定、広告はどうする

2020-03-16 22:44:34 | 日記

んばんは

 

アーチェリーアプリは次第に形が整ってきました

つまり完成に近づいてきたということで、今日はアイコンを作って設定しました

全然面白味がないですが、これが一番フィールドアーチェリーらしいです

iPhoneの画面にこれが出てきてタップするとちゃんと自分の作ったアプリが起動すると、ちょっと嬉しいですね

本当はもっと色々と機能をつけたりシェイプアップというかいろいろとこだわってみたいのですが、次のステップに進みたいと思います

課題は「広告の設定」と「AppStore」

どっちを先にする必要があるのかわからないのでとりあえず両方とも調査から入りたいと思います

AppStoreへの登録はAppleIDはもうあるので何らかの設定と会費の振り込みだけですが、広告の設定については全然わかりません

アップルの広告システム「iAd」とGoogleの「AdMob」があるらしいというところまではわかる

あとはどうしたらいいのかさっぱり見当もつかない

プログラム的にはどちらも専用のライブラリをインポートすることになるんだろう

果たしてSwiftUIに対応しているのだろうか、それもわからない

しばらくはネットで検索して勉強ですね

本屋でそれなりの本を探してみたいのですが、まだコロナが怖いので人のいるところには行きたくないのでしばらく辛抱です

自分のiPhoneには入れられるのでそれを持ってアーチェリーランドでみんなの意見を聞いてみたいのですが、まだコロナが収束しそうもないのでこれもしばらくお預け

無料アプリの広告でがっぽり儲けるなんて都合の良いことばかり書いている記事もあるし、そんな内容の本も出ていますよね

要は多くの人が毎日長時間起動しているようなアプリがいいのでしょうが、このアーチェリーアプリは全然違いますよね

アーチェリー人口は他のスポーツと比べても多いとは思えないし、週に一度ちょっと使ってみようかという程度かもしれません

この次はターゲットアーチェリー用のアプリを作る予定です

同じアーチェリー競技でもターゲットとフィールドではアプリの仕様は随分違うことが想像できます

それとも何かガッポリ儲かりそうなアプリのアイデアでもあればいいのですが、そんな都合の良いことはなかなかないでしょう

 


SwiftUIはまだ始まったばかり

2020-03-14 21:19:34 | 日記

こんばんは

 

一夜明けてアプリは順調に動いています

が・・・

まだ色々と改善点があります

少しずつ改造を行っていますが、今日もまた暴走事故がありました

ちょっとしたことなんですが、状況は無理な変数の使用が意図せずして起こったということです

こういった現象はエディターが検出するようにしてもらいたいですよね

他のことはしつこいぐらいにメッセージが出てきて、例えば使わない変数があるだけでビルドが止まってしまいますよね

エディターで検出できなくてもビルドの段階で止まるとかしてもらいたいのですが、ちょっと不思議なのはそのコードを打ち込んだだけで暴走が始まるんですね

コードの打ち込みと並行して色々とチェックしたりしているんでしょうがその時に暴走が始まっているようです

 

まあ、SwiftUIはまだ始まったばかりでこんな貧弱マシンでの暴走ケースまでは対応できてないということなんでしょう

 

本当なら明日はアーチェリーランドに行く日ですが、今の時期はとにかく外出しないことです

アーチェリーランドは家にいるよりもよっぽど空気は綺麗なんですが、仲間との歓談や食堂での食事などいつもと違う人との接触がどうしてもありますからね

気がついてみれば私も高齢者しかも持病持ちです

万が一にも感染したりするとどれだけ周りに迷惑をかけるかもしれません

少なくとも3月いっぱいはあまり外に出ないようにしたほうがいいですね

 

おかげでアプリ作りに専念できます

今からまた改造に取り掛かります

 

追記:

やはりちょっとでもタイプを間違えると暴走が始まります

プログラムの改造中は一時的に辻褄の合わない状態はあるものです

関数の引数が合わないだけで暴走してくれたんじゃあ、困ったもんだ

これもメモリーのせい?


暴走の件、ついに解決

2020-03-13 23:27:16 | 日記

こんばんは

 

やった〜

ついに克服しました

何日も悩んでいたメモリー暴走の件、ついに解決しました

メモリー容量のせいにしていたのは結局逃げですね

原因はやはり自分にありました

何度も心折れそうになっていたのですが、とにかくおめでとう

 

で、どういう事だったのかと言うと、つまり

 

A画面からB画面をNavigationLinkで呼び出していたんですが、その両方で宣言している変数名にかぶりがあったのが最初の原因です

そこでB画面の方の変数定義を@State宣言にしてA画面に持っていって、B画面では@Bindingで宣言しました

かぶっていた変数はA画面にあるものをB画面で@Binding宣言すれば被りません

しかし、それでも暴走は止まらず状況はだんだん悪くなる一方

あ〜でもない、こ〜でもないと色々と試行錯誤していましたが、フリーズするたびに再起動してまた同じことをして再起動

何度も繰り返しているうちに、ふと気がついたのは@Stateと@Bindingで変数を共有する必要はないのではないかと言うこと

そこでまたよく考えて、A画面で必要な変数はそのままA画面で@State宣言しておいてB画面で必要な変数はやはりB画面で@State宣言しました

その時両画面で名前の被っていた同じ内容の変数はB画面では少し違う名前にして、A画面からB画面を呼び出すときに引数として渡すことにしました

最初から引数渡しにすればなんてことなかったんですね

それを変数の共有という少しかっこいいやり方に拘ってしまったのが敗因でした

しつこいバグも治ってしまえば何事もなかったようにすんなりと動きます

 

さっきまでの暴走はなんじゃったんか・・・

気に入らないことがあったのかも知らんけど、そんならそうと言ってくれよ

黙ったまま突然暴走してくれたんじゃぁ、なんもわからんじゃろ

なんかゆうてくれたらよかったんじゃがノォ

まあ、じゃがしっかりと目を見てじっくりと話し合ったらわかってくれたんかの

急に改心したように大人しくなった

そぉじゃ、大人になったんかもしれんノォ

 

随分経験値をもろぉたで・・・

RPGなら中間の中ボスを倒した感じじゃの

まだ中ボス?

そうじゃろ、まだこれからもう一回中ボスが来て、その次がラスボスかのぉ

じゃが、この経験値でだいぶ強ぉなったけえ、もぉ大丈夫じゃろ

 

ということで、やっとアプリの姿が見えてきました

これから実機でのデータベースの動作確認とか、細かい使用感の調整とか色々と面倒なことがあります

アイコンも考えとかないとね・・・

 

ということで今日はグッスリと眠れそうです