変数とは？から1本のアプリをリリースするまでの道のり

## はじめに
僕は現在、個人でスマートフォン向けアプリを開発しています。今でこそアプリをリリースできるようになりましたが、そこに至るまでに多くの壁を乗り越えてきました。
この記事がみなさんの参考になれば嬉しいです。

## プログラミングを始めたきっかけ
10代の9割9分9厘を**囲碁**に費やした僕ですが、2年前の7月末に知り合いから言われた**ある一言**でプログラミングの世界に飛び込むことになります。

2年前の7月末、知り合いに「**囲碁のアプリ作ってよ**」と軽いノリで言われ、なぜか僕は根拠の無い自信を持ち「**わかった！面白そうだしつくる！**」と軽いノリで返しました。
今思えばよくそれでやろうと思えたなと思いますｗ

しかし、当時の僕は**変数とは？**という状態からのスタートでした。他の開発経験者からは「**やめとけ**」「**絶対無理**」など、色々言われました。
でも残念ながら僕はあきらめが悪いので、逆に**絶対やってやる！**とやる気1000％に。そしてプログラミングの世界へ！

## 目標達成に必要なこと
僕が運がよかったかもしれません。なぜ運が良かったのか？
最初から**囲碁のアプリを作る**という明確な目標があったからです。
目標が無いまま始めていたら、何も作ることができないまま今日を迎えていたと思います。

よくTwitter等で「**プログラミングすることを目的にするのではなく目標達成に何が必要か、というのが重要**」みたいなのを見かけますが、まさにその通りだと僕は思っています。いわゆるゴールから逆算して考えるアレですね。

ということで、まず囲碁のアプリを作るなら碁盤を制御するプログラムが必要だな、ということが分かってググりながら書いたJavaコードがこちら

```goban_ugoku.java
	public class goban{
	public static void main(String[] args){
		char goban_line[][] = new char[19][19];
		int i;
		int j;
		
		for(i=0; i < 19;i++){
			for(j=0; j < 19;j++){
			goban_line[i][j] = '+';
			}
		}
		
		for(i=0; i < 19;i++){
			for(j=0; j < 19;j++){
				System.out.printf("%2c",goban_line[i][j]);
			}
			System.out.println("");
		}

		
		while(true){
		
		System.out.println("あなたは黒番です");
		System.out.println("縦座標を入力してください");
		int tate = new java.util.Scanner(System.in).nextInt();
		System.out.println("横座標を入力してください");
		int yoko = new java.util.Scanner(System.in).nextInt();
			
		goban_line[tate-1][yoko-1] = '@';
		
			for(i=0; i < 19;i++){
				for(j=0; j < 19;j++){
				System.out.printf("%2c",goban_line[i][j]);
				}
				System.out.println("");
			}
			
			System.out.println("あなたは白番です");
			System.out.println("縦座標を入力してください");
			int tatenext = new java.util.Scanner(System.in).nextInt();
			System.out.println("横座標を入力してください");
			int yokonext = new java.util.Scanner(System.in).nextInt();
			
			goban_line[tatenext-1][yokonext-1] = 'O';
		
				for(i=0; i < 19;i++){
					for(j=0; j < 19;j++){
					System.out.printf("%2c",goban_line[i][j]);
					}
					System.out.println("");
				}
			}
	}
}
```

**圧倒的インデント力・・・！**
VSCodeを使ってたら今にも```Shift + Alt + F```で整形したいコードですね・・・(気絶)

それでも僕は、誰になんと言われようと続けました。

## 転機
プログラミングをJavaで始めてから約8か月が経とうとしていた頃、僕は**Android Studio**を使ってアプリ開発を進めていました。
しかし、碁盤画像の上に碁石画像を描画するところで1か月ほど苦戦します。どれだけググっても分からない状態が続きました。

**ここで転機が訪れます！**

ある日、とある個人アプリ開発者さん(仮名：Aさん)と会話することができ、そこで「**Android Studioでスマホアプリ開発してるけど全然先が見えてこない・・・**」みたいなことを言ったと思います。
それに対してAさんは「**Unityならかんたんだし、AndroidもiOSもC#だけで作れますよ**」と返してくれて、早速Unityをインストール。

正直、最初はUnityで作られたゲームはクオリティが低いものしか遊んだことがなかったので、Unityのイメージは「**低クオリティなゲームを作るツール**」というものでした。
**しかし、そのイメージはUnityを始めて数分でものの見事に消え去りました。こんな直感的でかんたんなツールがあって、しかもクオリティ高いものが作れるのかと。拍子抜けです。**

Unityを始めてからは1日平均8時間猛勉強。そして、**Unityを始めて3か月で囲碁アプリ「詰碁の森」をリリースすることができました！**
Android版をリリースする直前の公開ボタンを押すとき、手の震えが止まらず、泣いていたのをよく覚えています。

## あとがき
この記事を書いてたらリリース前のことを思い出して、また泣きそうになりました(泣)

これからプログラミングを始めようと思っている方、もうやってるけど先が見えてこない方、その他なにか作りたいものがある方、いろいろな人がいると思います。
そういう方たちに僕が伝えたいのは、**まず作るもの(目標)を決めること。そして、何よりも自分が楽しいこと！**

僕は大好きな囲碁を題材にしたので、作るのが楽しくて仕方なかったです！

それでは最後に、変数とは？から11か月間格闘した末にリリースしたアプリを紹介して〆たいと思います。
ありがとうございました！

![screenshot_spring.png](https://qiita-image-store.s3.amazonaws.com/0/228364/cde6940b-37b7-e8b0-f51e-a903423e1c15.png)

- **詰碁の森**
[Android版](https://play.google.com/store/apps/details?id=com.naokijinguji.TsumegonoMori)
[iOS版](https://itunes.apple.com/jp/app/%E8%A9%B0%E7%A2%81%E3%81%AE%E6%A3%AE-%E5%85%A5%E9%96%80%E3%81%8B%E3%82%89%E3%83%97%E3%83%AD%E3%81%BE%E3%81%A7%E9%81%8A%E3%81%B9%E3%82%8B%E5%9B%B2%E7%A2%81%E3%82%A2%E3%83%97%E3%83%AA/id1262745627?mt=8)

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">2017年6月7日(水)にandroid囲碁アプリ「詰碁の森」をリリースしました！<a href="https://t.co/k48QVmkuyz">https://t.co/k48QVmkuyz</a></p>&mdash; 欧米か@詰碁アプリ公開中！ (@oubeika11) <a href="https://twitter.com/oubeika11/status/872388713258430464?ref_src=twsrc%5Etfw">2017年6月7日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## 作ったアプリを取り上げて頂いた記事一覧
- [アプリマーケティング研究所](https://appmarketinglabo.net/individual-developer2017/)
- [【2018年最新】無料！おすすめ囲碁ゲームアプリまとめ](https://igo-life.com/igo-game-app-matome/)
- [プロの先生のブログ](https://blog.goo.ne.jp/starnine/e/b3346233cc0dfe75515fb351a4432105)
- [docomo ゲームナビ](https://game.dmenu.smt.docomo.ne.jp/game/b984/)

## 参考リンク
- [Unity](https://unity3d.com/jp)
- [詰碁の森](https://igo-creative.sakura.ne.jp/TsumegonoMori/tsumegonomori.php)