プログラム初心者がiPhoneアプリでそこそこ稼ぐまでの軌跡

Swift(Playgrounds)とXcodeを頭の弱い素人が猛勉強しiPhoneアプリの開発を目指す(そしてあわよくばそこそこ稼ぐのを目指す)ブログです。

GoToアプリワールド! 【コードを学ぼう1】5:バグを見つけて直す

こんにちは。

Make appです。

 

このちょーしで行けば、一体アプリを作れるようになるのは何年後になるんでしょうかね…。

まぁ焦っても仕方ないですし、自分のペースでやり続けるのが良いかなと最近思い始めてきました。

年齢とともに、人生観って変わりますよね。

 

私の場合は40歳を境に、人生が一度きりなんだと言うことを強く意識するようになりました。

大切な人との出会いや別れなども経験し、それらが一期一会なんだと、なぜか急に思いはじめ、それ以降は自分の人生を見つめ直し続けた生活をしております。

 

このブログやアプリを作りたいって考えたのも、人生一度きりで、仕事も1つだけ(バイト以外)と考えると、なんだか寂しさを覚えたんです。

 

と、前置きがいつになく真面目風になってしまいましたが、そんなこんなで今日もSWIFTの勉強をしていきましょう!

 

さて、今回は「バグを見つけて直す」ということです。

最初に言っておきますが、めちゃくちゃ簡単です。

まぁまだ5回目って事もありますし、比較的年齢層が低く考えてるかもしれませんが、

それにしても簡単です。

 

f:id:amatureapp:20200726164230j:plain

コードを学ぼう1-5 バグを見つけて直す

このページは元からコードが書いてあり、そのまま実行するとエラーになります。

なので、そのエラーの原因(バグ)を見つけることから始めましょう。

 

(元のコード)

moveForward()

 

turnLeft()

moveForward()

moveForward()

collectGem()

moveForward()

toggleSwitch()

 

ちなみに、キャラクターの居る画面の方(右側の画面)下部にある、スピードメータみたいな所をタップすると、コードの実行の仕方(めっちゃ早く実行、ゆっくり実行)などが選べます。

そこの(コードをステップ実行)を選ぶと、1行ごとのコードをゆっくり実行してくれるので、エラーの箇所を調べやすいと思います。

 

ですが、最初に書いたように、いい大人なら直ぐに分かりますよね…。

 

moveForward()

moveForward() ←追加

turnLeft()

moveForward()

←この行削除

collectGem()

moveForward()

toggleSwitch()

 

さてさて、そろそろもう少しパンチのある勉強がしたいですね。

次はどんな感じになるでしょうか。

 

なるべく早くあげようと思います。(出来る範囲で)

 

では、今回もありがとうございました。

Make appでした。

アプリの未来は明るい! 【コードを学ぼう1】4:ワープの練習

こんにちは。

Make appです。

 

いや〜サボりました。

更新をサボってましたよ。

 

実際にはコロナの影響が少し弱まり、仕事が少しずつ戻ってきた事もあり、

時間が取れなかったというのが実際ですが、いや、やっぱりこういう更新モノは継続してやらないと絶対にダメですよね。

HIKAKINさんとか、以前は毎日動画をアップしてたとか、本当に尊敬します。

継続は力なり、と歳を重ねるごとに感じます。

 

さてさて、今日の時事ネタ(というには少し遅いですが)は、iOS関連の話です。

前回に書いていたWWDCにもあった、Apple Silicon搭載のMACが今後販売されるという話ですが、良く聞いてみると、アプリ開発の人には凄い朗報なんじゃないですかね。

 

正直、今の時点では良くわからないんですが、今までのMac OS以上に、今後のApple Silicon製Macに搭載されるOS上で、iOSiPad OSでのアプリがそのままネイティブの状態で、何も変更せず動けるようになる、とのことでした。

 

*1">

f:id:amatureapp:20200711104731p:plain

Apple Silicon搭載Macの仕組み *2

これ、何気に今からiOSアプリを開発する人にとっては、結構テンション上がることとちゃいますかね。(少なくとも初心者の僕はそう感じてます)

 

ただ、ハードウェアの違いがもちろんあるので、ちょこっと操作性などは注意するよう、とのお達しが出ているそうです。

 

とはいえ、夢が広がりまくりです!

サボってる場合ではない!!

何しろ、まだswiftの3回目の何も分かってない知識レベルなのに www

 

と、言うことでココから本題。

今回のお題は「ワープをの練習」です。

 

例のごとく、新しい仕掛けの「ワープ」が出てきます。

どのように「ワープ」の仕掛けを作ってるかは気になるところ(というか本来はそちらが僕のイメージするプログラミングのメインどころですが…)なのですが、それは華麗にスルーして、言われるがままやっていきましょう。

 

SWIFT 1-4

コードを学ぼう1-4 ワープの練習

画面はこんな感じです。

何となく光っている所がワープっぽいですね。

ぶっちゃけて、パッと見て、「あっ、ココがワープする所なんだな」と思わせる画面デザインは、アプリ開発のUIを考えるときにも非常に参考になりますね。

WEBサイトのデザインもそうですが、UIデザインが酷いと使う気にもならないですし、ましてや説明を読まないとわからないような、前時代的な発想のアプリは間違いなく淘汰されるでしょうしね。

 

と、本題が簡単なので、余談も長くなってしまいましたが、とりあえず「タップしてコードを入力」の部分を押しても、ワープに関する記述が無さそうなので、普通に歩いて行けば勝手にワープできるんだろうと推測。

 

なので、コードをそのまま書いてみると…(←プログラマーっぽい発言!!カッコいい!!)

 

moveForward()

moveForward()

moveForward()

turnLeft()

moveForward()

moveForward()

toggleSwitch()

moveForward()

moveForward()

turnLeft()

moveForward()

moveForward()

collectGem()

 

となりました。

 

って、これワープの練習になってるんですかね?

ということで、今回は課題の解決より、UIの着眼点が勉強になった次第です。

 

Make appでした。

 

 

 

 

*1: image apple

*2: image apple

祝!WWDC20 【コードを学ぼう1】3:スイッチを切り替える

おはようございます。

Make appです。

 

WWDC20が早朝にありましたね。

*1">

WWDC20

Apple WWDC20 *2

 

期待していた、iPhone12もapple watch6もiMacもどれもコレも今回は残念ながら発表が無く、やっぱり毎回「one more thing...」を期待してしまうjobs世代としては寂しい感じがしました。

 

とはいえ、一つだけApple siliconなるものが出ましたね。

「いや〜、これでアプリの開発が激変するよね〜」とか「マジで!?それならデバック時間が半減できちゃうじゃん!!」とか、言いたいっす!

 

正直、まったくもってプログラミングにどのような作用があるのか、良いのか悪いのか、まったくもって判断つきません(笑)

iMacがデカイiPadになるんでしょ?くらいの印象です。

まぁCPUの変更は、かつてのPowerPCからintelになったときも、OSの変更やら、それこそハードウェアの買い替えやら、アプリの互換性など、めちゃくちゃ面倒くさかったのを覚えてます。

今でこそ、フォントはMacでもwinでも同じように表示されますが、かつてはwinのイラストレーターとか、winの台数にしてはほっっっっっっっっとんど使ってない人ばかりで、Macからwinへのデータ渡しには苦労したなぁ…。MOとかでバイク便に頼んで…とかあったなぁ…。

 

とまぁ、かつてを偲ぶと涙しか出てきませんが、インターネットさまさまです。

こんなWWDCイベントが、世界で同時に見れちゃうんですからね。時代は変わったものです。

 

ということで、時事ネタをちょっと入れてからの本題。

 

今回は、次のようなお題「スイッチを切り替える」です。

Playgrounds Swift

コードを学ぼう1 スイッチを切り替える

今回も突然に新しいアイテム「スイッチ」が出てきましたね。

なぜ押すのか?何のために??なんて野暮なことは考えず、これはスイッチをオン・オフする練習と考え、スルーします。

 

そして、それに対するコマンド(命令)は、toggleSwitch()とのこと。

 

なんとなくスイッチなので、pushとかが分かりやすいとは思うんですが、ここはネイティブアメリカンの発想で行くなら、toggle=切り替える、という動詞になるようです。ネイティブジャパニーズにはあまり馴染みのない動詞ですけどね…。

 

それさえ分かれば、後は昨日のturnLeft()と組み合わせるだけで良いので、初心者のアラフィフにも超簡単。

 

moveForward()

moveForward()

turnLeft()

moveForward()

collectGem()

moveForward()

turnLeft()

moveForward()

moveForward()

toggleSwitch()

 

で、フィニッシュ。

 

新しいMacいくらでしょうね。

それをバリバリ使いこなしてアプリ作りたいなぁ…。

 

Make appでした。

ではまた。

 

*1:image apple

*2:image apple

まだまだ余裕 【コードを学ぼう1】2:新しいコマンドを追加する

こんにちは。

Make appです。

 

前回は、全くの素人だからおそらくハマるであろう、Playgroundsとは、プログラミングをゼロから学ぶのではなく、プログラミングのヒントをゲーム型式から学ぶ、という事に戸惑いを隠せず、初歩の初歩からつまずいた、という話をお伝えしました。

 

ただ、実際のお題に対しては、まだまだ屁でもない内容で、それこそ小学生でも簡単に解けると思います。

 

では早速、超序盤の2回目のお題も簡単だと思われますので、サクッと進めていきましょう!行きまっしょい!!

 

前回習ったのは、Byteくん(キャラ名)、前に進め(moveForward)、で宝石を取れ(collectGem)って話。

 

move=動く、Forward=実際の前、collect=集める…といった、まぁ簡単な英語ですしそこに関しては割愛しますが、やっぱりプログラミングは英語なのね、という日本人特有の劣等感は感じちゃいますよね。(日本語は美しい言語だとは思いますけど)

ただ、大事なのは、moveであってgoではダメなことや、Forwardであって、Frontではないことですね。

つまり、プログラミング(Swiftだけ?)は、やっぱり決まった単語を(覚えて)使って指示を出さないとダメってことでしょう。なんとなく、これも最初は意味さえあっていれば、goでも動いてくれたりするんだと思ってました。えぇすみません、ホント基本的な事も知らない初心者ですねん。

 

そして、今回のお題「新しいコマンドを追加する」です。

最初の画面は以下のような感じですね。

f:id:amatureapp:20200622165433j:plain

新しいコマンドを追加する

明らかにまっすぐだけではダメっぽいですよね。

ま、その辺はそれこそいくら初心者とはいえ、解決策はすぐ解ります。

 

そこで必要なコマンド(命令)が、turnLeftっていう(左を向け)っていう新しい指示です。

でも、まぁ何ていうか、命令なら(道路沿いに歩け)とか、そんな感じに出来ないのかなぁとは思いますよねぇ。

 

そんなこと言ってても課題は解決しないので、答えの欄です。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

moveForeward()

moveForeward()

turnLeft()

moveForeward()

moveForeward()

collectGem()

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

これにて一件落着。

 

そうそう、これも覚える感じだと思いますが、

 

moveForewardなど、1つのコマンドで単語が2つある場合の、2つ目の単語の頭は大文字にするっぽいです。

そして、最後に()をつけると、それが命令なのだよ、という暗号のような物みたいです。

 

これはもう、数学の方程式とかを覚える感じと同じですね。

なぜ?と考えだすとキリがなく、そういうものだと覚えちゃう方が、テストに合格するって感じでしょう。なので覚えちゃいましょう。

 

ということで、これだけ長い文章を使って(コマンド turnLeft)を覚えましたよ、という話。

 

ありがとうございました。

Make appでした。

 

 

いよいよPlaygroundsを始めるよ! 【コードを学ぼう1】1:コマンドを使う

こんにちは。

Make appです。

 

いよいよ本日から、本題であるプログラミングを進めていこうと思います。

 

www.apple.com

Plyagroundsは、プログラミングコード「Swift」を、ゲームのような感じで初心者が簡単に勉強できるappleが作ったMaciPadに対応しているアプリです。

と、私も思ってましたよ!!

ところが、前回の最後に書いたように、とんだ問題がありました。

 

というのもですね、Playgroundsをやり始めて気づいたんですが、これ、そもそもプログラミングコードっていうものを、ほんの少しでもわかっている人でないと、良くわからないと思います。いや、もしかすると、初心者向けである、という事は理解できるので、やっぱりプログラミングっつーーものが、比較的難しいものなのかい?ってな感想を現時点では抱いております。

 

f:id:amatureapp:20200618155227j:plain

少し具体的に言うと、↑これがPlaygroundsの最初のコードを書く画面なのですが、主人公(Byte)っていう右奥を向いている宇宙人みたいなのが要るんです。

 

何これ??

 

そして、moveForwardってコマンドを書いてくれって指示なんですが…

 

なんか思ってたのと違う。

 

いや、たしかにゲームっぽい画面にするならもちろんこのような感じが良いんだと思いますが、なんか、プログラミングって、思ってたのは、真っ白いなんにもないキャンバスに、自分で自由に書いていくような感じというか(←すみませんプログラミングの完全素人の発言と聞いてください)、そういうイメージで入ったので、

 

あれ?Byteってキャラは既に存在されてるの?とか、

MoveForwardってもうそういう「動作」についても決まってるの??

 

なんていう事がすんなり受け入れられないんですよ…。

もちろん、この画面になるまでに、プロローグ的な説明スライド(はじめに「コードを学ぼう1」)はあるので、親切だとは思うんですが、何ていうか、完全素人には、いきなりツキハナーシ感はありました。

 

高校の数学の教科書って、中学校の数学が分かっている人前提で書いているじゃないですか。なんか、中学の勉強をプロローグでサラッと言われて、いきなり高校の教科書を読め!と言われた感覚に近いです。えぇ、そんな経験したことないですけど、たぶんそんな感じです。

 

と、言うことで、もし私と同じく完全素人の方が入れば、以下のようにPlaygroundsに挑む心構えを持ってください。

 

1)キャンバスは真っ白ではないです。既にアップルさんが用意してくれた、キャラクターや動作のプログラムは組み込まれた状態のアプリです。(ま、よく考えたら当然なんですけどね。イキナリ真っ白だと、それこそ何書いたら良いかわかんないですし…)

 

2)各章のプロローグはしっかりと読みましょう。ただ、理解できないことも多いので「そういうことが前提の世界」としてサクッと読み進めましょう。

 

3)サクッと進めていくと、過去に戻った時に「これはこういう事だったのか!!」と分からなかった事が、ぱぁ〜〜〜〜〜〜!!と分かる事になる瞬間があります。

 

また前段が長くなってしまいましたが、基本的にはそういう事で進めていきます。

 

では、まずは最初のお題「コマンドを使う」です。

 

前提として…キャラはByteくん、動作(コマンドのこと)は、「進む」と「宝石を取る」っていうのがあるよ、と理解します。

 

結局プログラミングって、パソコンに(何が)(どうする)って指示出すことだと思うので、

(Byteくん)が、(3歩歩いて)(宝石を取る)っていう文章を書けば良いんだと思います。

ただ、今回は登場人物が(Byteくん)しか居ないので、あえて(誰が)の部分は書かなくて良いようですね。

 

そして(どうする)っていうのをパソコンに理解させるには、文字の後に()を記載する必要がある、と言うことも、そういうもんだとしてサクッと覚えて進めましょう。

ここで、「なぜ(括弧)なの?」とか言い出すと、マジで進まないです。

僕も早速その沼にハマりそうでしたが…何とか抜け出せました…。あやうく、プログラミングが大嫌いになるところでした…。

 

とりあえず、()つけたらそれが(動作)コマンドだよってパソコンが理解するんだ!と正義感を振りかざし、脳裏に焼き付けましょう!

 

 

結論、答えとしては…

moveForword()

moveForword()

moveForword()

collectGem()

 

で、無事にByteくんが宝石を取ってくれました!

(プログラム部分の背景色を付けたいんだけど…行ごとにしか付かない…こちらも素人ですので、ちょっとずつ勉強していこう…)

 

f:id:amatureapp:20200618164108j:plain

おめでとうございます!と大げさに褒めてくれます。

こんな感じで、一応人生で30年ぶりくらいにプログラミングを書いてみました。

30年前は雑誌に書いてあるのをそのまま打っていたので、少し考えた分、今回のほうがレベルが高いと思いましょう!思いたい!!

 

この程度の問題でつまずいてはられないので、サクッとこの辺で。

 

Male appでした。

 

 

遅々として進まないタイピング

Make appです。

 

PS5発表されましたね。

税抜5万円以内ならおそらく発売後すぐに購入しますが、5万以上なら数年は待つような、そんな気持ちです。無理ですかね?

今、PS4も持っているのですが、やるゲームはほとんど決まっていて、特に新しいゲーム(最近だとFF7R?とか)には興味は無いですね。子供の時分思い描いていた夢のようなゲームが今は遊べる時代なのに、全く楽しみではないということをタイムマシーンで過去の自分に伝えると、そんなワケない!と信じてもらえない自信があります。

何なんでしょうね。この冷めた感じ。

 

さてさて、そうそう、このブログは完全素人がiPhoneのアプリを作ってお金儲けをする、という所までの軌跡を書こう!と思って始めたのですが、という事はもちろん、現時点では、iPhoneのアプリの「ア」の字も作れていませんし、ましてや稼げてなんていません!書き溜めを公開しているのでもないため、完全に時間軸は、今現在進行系です。

 

ただ〜し、ちょっとだけチートしているのは、実はちょこっとPlaygroundsを進めてはいます。正確に言うと、Playgroundsを進めていて、ふと「これ、ブログにした方が続けられんじゃね?」と思い立ったので、このブログを書いています。

大多数の人と同じく、意志が弱いんです…(大多数の人を敵に回す一言ですかね)

なので、温かい目と応援などしていただけると嬉しく思っています。

 

Playgroundsイメージ

Playgrounds_image

で、その前には少しだけiPhoneアプリを作る初心者本、なるものを読んだりもしていました。いわゆるXcodeを勉強する本ですね。

 

ちょっと古いのを買ってしまっていたので後悔していますが、基本的にはこの2つを使って書いていこうと思っています。

 

全くの初心者なのに、なぜXcodeとかSwiftとか知ってるんや?おぃ?と思われる方もいらっしゃるかもしれません。

もちろん、最初は(というか今もそれほどは)知りませんでした。

ただ、googleさんで検索したところ、iPhoneアプリを作るにはこんなのが必要だよ?という親切丁寧に教えてくれる検索結果&ブロガーたちがたくさんいたので、このXcode&Swiftという大海原に出発しようと、コロナ禍の中(←変換しにくい)、思い立った次第です。

 

ちなみに、プログラミング自体は今後小学生の必須科目になると聞いたり、プログラム的な発想は、これからの世の中を渡り歩いていくには必要だよ、と波打ち際で聞いたりしていたので、自分の子供には、1日プログラム体験!的な所に連れて行ったりしたこともあります。

で、その時子供はPlaygroundsをやっていたんです。

でで、やっていた内容はとてもカンタンそうに見えて、それこそPS1時代の3Dパズルゲーム程度だと思って見ていました。

 

でも、でもでも、自分でやってみるとぜんっっっっっっっぜん違います!

 

いや、もちろん最初はカンタンですよ?めちゃくちゃ簡単です。

それこそ、マウスさえ使えればフォルダをゴミ箱に入れるくらい、簡単です。

 

ただ、進むにつれて問題が出てきました。

そう、Playgroundsの問題は、簡単とか難しいとか、そういう次元ではなかったんです!

おそらく初心者の人が必ずつまずくと思うんですが、Playgroundsの問題点は、”ボブの絵画教室”と同じ問題です!!

 


Bob Ross-ボブの絵画教室 ~パステル色の海~ 1/2

 

気になるその辺りの詳しい内容は、また別の機会に…。

 

Make appでした。

 

 

 

iPhoneアプリ制作を夢見て…プロローグ

はじめまして。

Make appです。

今回のブログ開設に辺り、まずは簡単な自己紹介をしておこうと思います。

(プロフィールに書けって話ですけどね)

 

dog PC 犬

年齢は昭和40年代生まれの男です。

子供の頃、家電好きの父親と兄の影響で、中学校くらいにはPC-8801(?)とかいうパソコンが自宅に有ったのをうっすらと記憶しています。(FM−7だったかな?)

マイコンとか呼ばれていた時代ですよね。

確か、雑誌名も「マイコン」だったように思いますが、そこに書かれているプログラムを見ながら、

 

10 run……

20 ……

30 ……(かなりうろ覚え)

 

とかいう言語を打ち込み、超簡単なプログラムを書いていた記憶もうっすらとあります。そういう意味では完全に初心者では無いですが、全く理解して書いていたわけではないので、単純に無料ゲームをポチポチ打って作っていた程度の事だったと思います。

高校時代からは、正直パソコン=オタクのイメージがあるような気がして、嫌いではなかったですが、のめり込むのは避けていたように思います。

 

それから10年ほどして、仕事をすることになり、業界的にMacを使うようになりました。(Windowsは未だに使い方がよくわかりません…)

当時は、PowerPC performaなど、ベージュの筐体のを使っていましたね。少し漢字トーク(懐かしい!!)OSも1〜2年ほど使いました。ほどなくして、Mac OSになりましたけど。そこからは、Macは仕事の相棒で、何台も乗り継いで来ています。

 

更に10年ほどして、iPhone 3Gソフトバンクから発売され、すぐに飛びつきました。当時のMacはノートパソコンとはいえ、持ち歩こうと思うほど軽いものは無く、やっぱり手元でメールの確認などが出来るのは、とても便利でした。全面が液晶タッチになっていて、日本語入力も新しいインターフェイスで、革新的なデバイスを使っている!という感覚が、とても心地よかったと記憶しています。

 

さて、簡単にと書きつつ意外と長くなりましたが、そんなこんなで、もう20数年はデジタルデバイスMaciPhone)と共に生活しており、すでに仕事の範囲だけでなくプライベートでも無くてはならない存在になってきています。

そうそう、Applewatchも2代目から使っています。(初代は電池持ちが余りにも悪そうだったので流石にスルーしました)

 

バイスを使っていると「こんなアプリが欲しい」とか「こんなサイトがあれば」などが沸々と湧いてきまして、それをどうにかして実現できないかと、数年前から考えておりました。知り合いにプログラマが居るので、色々と相談しつつスケジュールなども現実的になってきたところ、今回のコロナ騒動に巻き込まれる生活となりました。

コロナにより、僕自身も仕事は減ってしまい、プログラマもアプリやサイトを作るだけの(心と資金の)余裕が無くなってしまいました。

そして、2020年6月現在、世界中がまだまだコロナの渦中にあり、日々多くのことが激変しているのを実感している毎日の中、じっくりと考える時間があったので、そこで出てきた結論が、「You、やっちゃいなよ!自分で作っちゃいなよ!!」という結論です。

何度か自分でも作ることを検討はしたのですが、いまいち「俺の頭脳では無理じゃね?」と諦めていたこと数度、今度こそは時間的余裕も十分ありますし、何よりこのコロナ騒動を、少しでもプラスに考えられるように、自分の新しいアビリティゲット期間に使えるようにしたいという、モチベーションがあります!

 

正直、現時点では出来るか出来ないかはもちろん分かりません。

「諦めたらそこで終了」の言葉を胸に、本日からブログを立ち上げていこうと思った次第です!!(ブログとかが無いと、絶対に途中で諦めちゃう、という変な自信がある!)

温かい目で見守っていただき、コメントなどいただけると嬉しく思います。

 

ちなみに、このブログは通常のプログラマーブログと違い、分からない人目線のブログです。なので、分からない人がこのブログで解決しようと思っても、難しいと思います!そういう人は世の中にたくさん出ている、分かりやすい解説しているブログ、の方へお願いします。

 

一応、現時点で決めているコンテンツ内容は、

 

1)Swiftの勉強Padのplaygroundsを使って)

2)Xcodeの勉強(iPhoneアプリ開発の書籍を使って)

3)いよいよアプリの開発 構想編

4)プログラミング

5)apple申請→ローンチ

6)売上報告

7)そして伝説へ…

といった流れで考えています。

とはいえ、現時点ではSwiftとXcodeが何なのか、そもそも違うのか?っていうか、ソフトウェアの名前なのか??など、まっっっっったくわからない状態ですので、タイトルに偽りなしです。安心してください。

 

では、今後とも宜しくおねがいします。

Make appでした。