プログラミング初学者が半年でアプリをリリースする５つの秘訣

[もちろん俺らは抵抗するで？技術で🤜🤛](https://qiita.com/advent-calendar/2017/ofcourseweresistbyusingmytech)に参加させていただきました。
今回は初心者向けの記事です。

---

#はじめに

皆さん、プログラミングの経験はありますか？
**"Qiita"**のサービスに登録している方のほとんどの方が、何かしらのプログラミング言語に触れていると思います。

また、この記事を見てくださっている方の中には、プログラミングをやってみたいけれどまだやったことがない人もいると思います。

では、プログラミングに興味がある方に**質問**します。

**"あなたはなぜ、プログラミングに興味あるの？"**

はい。オウム返しですね。
人によって、理由はかなり異なると思います。

>ゲームを作ってみたい！

>大ヒットするアプリを作って一攫千金したい！

>機械から好きなように画像や音を出したりしてみたい！

様々な意見がありますね。

例えば、**"プログラミングをやったことない、もしくは不慣れな初心者で、アプリを作りたい人がいるとします。"**
そのような方は大勢いると思います。

でも、多くの方は最初の一歩でつまづいて挫折する傾向が多いように感じます。
とある説によると、90％の人が挫折するとか……(驚愕ですね)

では、着実にスタートアップするにはどうすればいいのか、考えていきます。

#1.まずは1つのプログラミング言語を学んでいこう

一見、簡単のように見えますが、とても難しいことです。
何故なら**"プログラミング言語は世の中に沢山存在しているから。"**

初心者からみれば、行ったことのない遠方の諸国(例えばアフリカの国々)を比較されるようなもんです。

インターネットで初めてのプログラミングについて調べてみると、
**"Javaがおすすめ！"**
**"Cがおすすめ！"**
**"Rubyがおすすめ！"**
**"Brain fu*kがおすすめ！"**
……などなど、人によっておすすめする言語はバラバラです。

そりゃそうですよね、その人によって好きな言語が違うから。
なので、初心者はどの言語から始めればいいのか悩むわけです。

じゃあ、どれから始めればいいの？と思いますよね。
シンプルにいきます。

**"検索によく出るプログラミング言語 かつ 外見で気に入ったものを選びましょう。"**
これですね。

マイナーな言語は検索してもあまり出てきません。マイナーな言語は情報量が少ないので、初心者に向きません。
だからこそ、検索で沢山ヒットする、ネットの情報量が多いメジャーな言語を学ぶべきです。


ちなみに私は今年の5月から **"C"** というプログラミング言語を選び、学習し始めました。
初めて学んでから、まだ7か月しかたっていませんね。

選んだ理由はただ一つ。**"めっちゃ有名で人気だと思ったから。"**
こんな感じでテキトーで大丈夫です。まずは何のプログラミング言語を始めるか選びましょう。

というわけで、次はC言語を軸に、どのようにしてプログラミング力を磨いていったのかを説明します。

#2.プログラミング言語の参考書を買って、奥を知ろう

はい。当時の私は、調べてみて良さそうなものを本屋で買い、また、友人に貸してもらいました。
それがこちら。

[・Cの絵本 第2版 C言語が好きになる新しい9つの扉](https://www.amazon.co.jp/C%E3%81%AE%E7%B5%B5%E6%9C%AC-%E7%AC%AC2%E7%89%88-C%E8%A8%80%E8%AA%9E%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%AB%E3%81%AA%E3%82%8B%E6%96%B0%E3%81%97%E3%81%849%E3%81%A4%E3%81%AE%E6%89%89-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%82%A2%E3%83%B3%E3%82%AF/dp/479815038X)

この本はタイトル通り、絵本のようにたくさんの絵を使ってC言語を解説している本です。
本を読む習慣がない人でも抵抗なく読めると思います。
とてもおすすめの品です。

[・新・明解C言語 入門編 (明解シリーズ)](https://www.amazon.co.jp/%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3C%E8%A8%80%E8%AA%9E-%E5%85%A5%E9%96%80%E7%B7%A8-%E6%98%8E%E8%A7%A3%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%9F%B4%E7%94%B0-%E6%9C%9B%E6%B4%8B/dp/479737702X/ref=pd_lpo_sbs_14_t_1?_encoding=UTF8&psc=1&refRID=EDEH4VASF9V16K03QAK5)

Amazonでもかなり人気が高い本。わかりやすい。

[苦しんで覚えるC言語](https://www.amazon.co.jp/%E8%8B%A6%E3%81%97%E3%82%93%E3%81%A7%E8%A6%9A%E3%81%88%E3%82%8BC%E8%A8%80%E8%AA%9E-MMGames/dp/4798030147/ref=pd_sim_14_4?_encoding=UTF8&psc=1&refRID=XXEGG01GSWWGVM7EA0BS)

ネットの講座が本になったもの。わかりやすい。

個人的には、**"Cの絵本 + 新・明解C言語"**の組み合わせが１番良いと思います。
この２つがあれば、挫折は少なくなる~~はず。~~

学びたいと思ったプログラミング言語の参考書を検索して、おすすめの本を詳しく調べてみることをおすすめします。
本は先生です。優秀な先生を選びましょう。

#3.CUIとGUIを理解する

まず、初めての方は**"CUI、GUIとは何?????"**と思ったかもしれません。
CUIは**"Character User Interface"**の略、GUIは**"Graphical User Interface"**の略です。

とても簡単に言うと、
CUIは**"文字でやり取りをするもの。"**
GUIは**"絵や図形でやり取りをするものです。"**

ドラマや映画などでハッカー集団が高速でプログラミングを打っている映像をイメージしてください。
黒い画面にひたすら文字を打ち込んでいませんか？あれが**"CUI"**です。
**"CUI"**は文字しか表示できません。

しかし、**"GUI"**は文字も音楽も図形も画像もなんでも表示することが出来ます。
皆さんが開いているブラウザ、開いているスマホアプリ、これらほぼすべてが**"GUI"**です。

スマホのアプリやパソコンのソフトウェアは基本的に**"GUI"**なので、**"GUI"**を意識して開発していきます。

サンプルとして下記に例をあげときました。
これらすべて、 **Hello World!!** と画面に表示するプログラムです。


これはC言語の書き方。

```cpp:C/C++(CUI)

#include <stdio.h>

int main(){

    printf("Hello World!!");

    return 0;
}

```

これはC++の書き方。

```cpp:C++(CUI)

#include <iostream>

int main(){

    std::cout << "Hello World!!" << std::endl;

    return 0;
}

```

これはC++のGUI用ライブラリ、DXライブラリの書き方。

```cpp:C/C++(GUI)-DXライブラリ

#include "Dxlib.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

    DxLib_Init();

    printfDx("Hello World!!");

    WaitKey();

    DxLib_End();

    return 0;
}

```

これはC++のGUI用ライブラリ、Siv3Dの書き方。

```cpp:C/C++(GUI)-Siv3D

#include <Siv3D.hpp>

void Main()
{
	const Font font(15);

	while (System::Update())
		font(L"Hello World!!").draw();
}

```

特にC言語を学んでいる方には、DXライブラリはとっても初心者向けのやさしいGUI用のライブラリです。
DXライブラリは[こちら](http://dxlib.o.oo7.jp/dxdload.html)からダウンロードできます。試しに使ってみるのもおすすめします。

他にもSiv3Dライブラリ、クロスプラットフォームのUnityなど、GUIアプリケーションを作るためのツールが色々とあるので、自分に合うツールを探してみましょう。


#4.ある程度覚えたら、やってみたいことに挑戦してみる
>アプリが作りたい！

たくさんの方が口をそろえて言っていますね。

>だけど、アプリの作り方全然わからない……

そうですよね。確かにアプリ開発は何にもわからなくて、究極に難しいと感じます。

アプリ開発といえばスマホですね。
世の中にはスマホ２大勢力のOSがあります。それは、

**"iOS"**と**"Android"**

iPhoneはiOS、その他のスマホはほぼAndroidだと思っていいでしょう。
せっかくスマホアプリを作るなら、両方でリリースしたいですよね。

しかし、それには大きな穴が……
両方のOSでリリースするのは初心者にとって、とても難しいことです。
片方のOSで良いので、頑張ってみましょう。

ただ、スマホアプリの界隈はスピードが凄まじく速いです。
半年前の情報でもすぐに化石になってしてしまうので注意です。

今までは、**"iOSはObject-C"**、**"AndroidはJava**"がメインの開発言語でした。
……が、今は両方とも新言語に移っています。
**"iOSはSwift"**、**"AndroidはKotlin"**ですね。

なんか**"Kotlin"**ってアイドルの略称名みたいですよね。ことりん。

私はAndroidアプリの開発をすることに決めました。
決めたのは今年の9月、10月くらいですね。

アプリをリリースしたのが11月初めです。

開発言語はC++にしました。(使っているコードはほぼC言語のみ)
５月からDXライブラリにお世話になっていましたが、アプリ開発でも使用することを決めました。

DXライブラリは馴染みやすいライブラリですね。

今回は、アプリ開発を例として解説していますが、やってみたいことならなんでも大丈夫です。
ぜひ、目標を設定して、やってみたいことに挑戦しましょう！

#5.どんなに駄作でも公開してみる

11月にリリースしたアプリ。超駄作です。

[**・３時間で作った自作(超クソ)スマホゲーム**](https://qiita.com/Gaccho/items/a7f1d75be7eb3e822b2c)
[⇒Android OSのダウンロードはこちら](https://play.google.com/store/apps/details?id=com.gaccho)
[⇒Fire OS(Kindle)のダウンロードはこちら](https://www.amazon.co.jp/dp/B0774FZVZT/ref=sr_1_1?ie=UTF8&qid=1513679618&sr=8-1&keywords=%E9%A3%9F%E6%9D%90%E3%83%95%E3%82%A3%E3%83%BC%E3%83%90%E3%83%BC)

どんなにゲームが面白くなくても公開してみましょう。
自分が面白くないと思っていても、それを面白いと感じる方はきっといます。

ポジティブに開発していきましょう！

上記リンクの記事にソースコードを載せておきました。
たったこれだけのコードでゲームが作れるってすごくないですか？

これは使いやすくなるように設計してくださったライブラリの作者のおかげです。
巨人の肩の上に立つという認識で、ありがたくライブラリを使わせていただきましょう。

リリースできたら、これであなたも**"アプリ開発者の１人！"**

#さいごに
誰しも最初はプログラミング初心者です。
焦らずに自分自身のペースで楽しく開発していきましょう！

最後までお読みいただきありがとうございました。

##ソースコードのライセンス

These codes are licensed under CC0.
[![CC0](https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg "CC0")](http://creativecommons.org/publicdomain/zero/1.0/deed.ja)

ソースコードは自由に使用してください。