プロジェクトシートK(仮)

技術の吐き溜めなどなど

どこから手をつければいいか分からない、アプリ制作第一歩へのお話

スマートフォンが広く普及し、高性能なパソコンを個人が簡単に手にすることができるようになった今「アプリ制作」に対するハードルはめちゃくちゃ低くなったように思います。

- 書店に行けば、日本語の書籍が山ほどあるし

- ウェブで検索すれば、知りたい情報がだいたい出てくるし

- 簡単にアプリ制作ができるようなフレームワークはあるし

- 先人が作った便利なライブラリなんかも充実してるし

アプリ制作を始めようと思えば、いつでも誰でも始められるような時代ですね。いい環境だ。アプリ制作を実際にしている!なんて中高生も結構いるでしょう。

それだけ恵まれた環境にいますと「それじゃあ実際に自分でオリジナルアプリを作ってみよう!」と考えるのも自然のことでしょう。しかしながら、いざ作業を始めようとなると「どこから手を付ければいいか全く分からない...」なんて状況に陥ります。

この記事ではそんな時にどうすれば良いのか、僕なりの考えをまとめてみました。

※すごく表面的な話なので、技術的な話へは深入りしていませんよ〜。

 

取り掛かりは誰にでもできる

アプリを作っていく上で気にしてほしいことがあります。それは

プログラムのことをよく知らなくても、自身の端末に環境構築をし、アプリ制作に取り掛かることができる

ってことです。それほどプログラミングに触れたことがない人でも、AndroidStudioをダウンロードして起動して適当にプロジェクト作ってxmlをビューで編集すればそれっぽいものが作れます。コードを全くいじらなくても"Hello World!"を出せます。

つまり「アプリ制作」を広く定義するなら、めちゃくちゃ簡単にできちゃいます。ぜんっぜん難しくないです。必要な知識も全然ありません。

ただし、作りたいアプリを設計通りに作れるかというと、答えはNOです。

おそらくここら辺の罠に陥ってアプリ制作を挫折してしまう人が多いのではないでしょうか。ごもっとも、ちゃんとした教養のある人であれば必要な情報を収集していくとは思いますが...!

始めるハードルはめちゃくちゃ低いけど、ちゃんとしたモノを作るのにはかなりの労力がかかるってことを最初に明言しておきます...!

 

必要な技術を把握する

僕は、アプリ制作をする上で重要なのは

実装に必要な技術を把握しているか

ってことだと思っています。アプリを作っていく上で何をすればいいか分からなくなっても、必要な技術を把握し羅列できていれば、そのことを順番に学んでいけばいいのです。

 

それが分からないんじゃねーか!!

ってツッコミがありそうですね、でも大丈夫です。ちゃんとその辺のお話もします。

 

そしてもう一つ。

作りたいアプリが具体的に決まっている

これは大大前提です。そもそも作りたいアプリが定まってないとモチベーションも湧かないだろうし、技術を身につけるって観点からも相当効率悪くなります。

アプリは作りたいけど何を作ればいいか分からない...という人もいるでしょうが、そんな人はまず本当に作りたいと思えるものを探すところから始めましょう。

「こんなアプリがあればいいな〜」くらいの動機さえあれば、モチベーションは湧くはずです!

 

最低限の知識(技術)は知っておく

作りたいアプリのアイデアを出して「いざ作り始めよう!」となる前に、最低限知らないとマズイ知識を羅列しておきます。アプリ制作における一般常識、とでも言っておきましょうか。ここで挙げるものはandroidを想定しています。

- アプリ制作に必要なファイル・ファイル形式・ファイル構造を大雑把に把握しておく

 androidのアプリ制作はAndroidStudio, iosであればSwift, 当たり前すぎるけど大事です。ファイル形式はandroidであればjava,xmlファイルがメイン。それと、プロジェクト内でのメインプログラムファイルが置かれている場所ぐらいは押さえておこう。

- プログラミングの知識そのもの

 当然だけどプログラミングは必ず勉強しよう。例えばjavaの知識なしでandroidアプリを作るのはほぼ不可能です。ビュー(xml)という便利なものもあるけどね。必要な言語の仕様は押さえておかないと、「この機能がどうしても実装できない詰んだ...」なんてことも日常茶飯事となります。ここら辺は下積みが大事!

VIEW関連の知識

 上のと被るけど、GUIに関わるある程度の知識は把握しておきましょう。少なくとも「Activityの上にレイアウトがあって、レイアウトの上にViewを配置して、...」ぐらいは知っていないと辛いです。

- プラットフォーム特有の設定ファイルの把握

 androidで言う所のAndroidManifest.xmlみたいなやつ。そもそもアプリが起動できなくちゃ、テストすらできないよねってことで、この辺は深く調べていくとよし!

- あとは動かして覚える

 他にも画面起動処理とかレイアウトの設定とかパッケージとか、最低限覚えておくべき知識はたくさんあります。だけどそいつらをいちいち調べるよりかは、実際にコードをいじったりして動かした方が理解できてくるし、効率が良いです。

 

実際にコードをいじってみる段階になると、知らない概念だらけで頭の中がいっぱいになるでしょう。最初はそんなもんです。別にそいつらを丸暗記しないといけないわけでもないので、分からないことがあればその都度ググりましょう。だいたいの情報は先人が書いてくれてます(古い情報には気をつけないといけないけどね...!)いろいろいじったりググったりしていくうちに、技術も身についていることでしょう。必要な知識は、必要な機能を実装していく過程で身につけていきましょう。

 

アプリと言ってもその種類はたくさん

まず、作ろうとしているアプリがどのような物なのかを考えましょう。

- パズドラのようなソシャゲみたいなアプリ

- 簡単に遊べるような一人用のゲームアプリ

- TwitterやLINEみたいなSNSアプリ

- TwitterAPIなんかを使った連携アプリ

- 通話をするようなリアルタイムアプリ

- 日記を書いたり家計簿を付けたりするようなアプリ

ここに挙げたのもアプリの一例ですが、一概にアプリといっても種類がたくさんありますね。そしてそれぞれのアプリを作るために必要な技術は全く異なってきます

 

例えば、よくある「日記を書いて記録していくアプリ」を作るとしましょう。

日記は端末内だけで保存されていれば良いですね。

アプリ利用者のみで管理すればいいから、日記の内容をいちいちサーバに送信してやる必要もないでしょう。(データ復旧とかのことを考えると話は変わるけど...w)

「日記の内容を誰かに送信する」なんて機能も問答無用でいらないでしょう。そうとなればネットワークを使う必要もありません(というか、使うにインターネット接続が必須な日記アプリとか聞いた事ないし普通に嫌だよねw)。

 

さてここで、このアプリを作っていく上で重要な機能を羅列してみましょう。

- 端末内に日記(文章や画像)を保存する

- サーバは使用しない

- ネットワーク接続は使用しない

なんだかすごく簡単に作れそうな気がしてきました。

 

- 端末内に日記(文章や画像)を保存する

日記アプリを作っていくためには、この技術だけ抑えておけば大丈夫そうです。どんな技術が必要なのかな〜と考えているだけではどうしようもないので、何が必要なのか検索しましょう。

アプリ開発 端末内 データ保存」なんかで検索してやればいっぱい出てきます。

例えばAndroidであれば、SharedPreferencesというものを使えば実装ができそう。

そうと分かれば、あとはその技術を使えば良いだけです。テストボタンでも作り、いろいろと試していきましょう。そうしてるうちに必要な技術は自身のアプリに組み込める段階まできているはずです。

 

さて、必要な技術はこれで把握できました。ひたすら機能やビューを実装していけば、特に行き詰ることなくアプリは完成するでしょう。

 

仕様書書くのは超大事!!

かなり大雑把な例になってしまいましたが、ここで特に重視して欲しいのは「仕様書(アプリの機能)を書く」ことです。作りたいアプリの構想だけあったとしても、文字で起こさないと手をつけづらいです。逆に、仕様書さえちゃんと用意できればそれに沿ってテスト・実装していくだけでアプリは完成に近づきます。

実際に、僕がソフトウェアを制作する時は、仕様書を細かく書いて設計をすることにかなり力を入れます。そこの部分が曖昧だと、何から手をつけていいのか右も左もわからない状態になってしまいます。

 

上の日記アプリの例はかなり大雑把なのですが、実際には

- 文章を入力して、ボタンを押したら端末内に保存させる

- 端末内に保存された文章があれば、リストで表示する

- 文章をタップすると文章を編集できる

- 削除ボタンを押すと、その日記が削除される

- etc...

などなど、機能を羅列していくだけでも結構な量になりうんざりします

でもここだけは妥協したらダメです。あとで響きます

 

参考までに、仕様を決める際に大事な要素をいくつか羅列しておきます。

インターネット接続を使うか否か

 →使うのであれば、httpの知識が必要になってくるでしょう。

外部アプリと連携するか否か

 →するのであれば、そのアプリのAPIの仕様を把握する必要があるでしょう。またTwitterなんかと連携するならhttpの知識も必要になります。

サーバを使うか否か

 →使うのであれば、Webサーバの仕組み・サーバサイドプログラミング・レンタルサーバssh(サーバの遠隔操作)なんかに手をかける必要があるでしょう。

遠隔データベースを利用するか否か

 →使うのであれば、上に加えてサーバへの接続(http通信)・データベースの知識(sql文とか各種データベースの比較とか)なんかが必要になるでしょう。

リアルタイム通信を使うか否か

 →使うのであれば、Socket.ioなんかの知識が必要になるでしょう。

3Dモデルを扱いたいか否か

 →扱うのであれば、UnityとかMAYAとか各種エンジンの知識が必要になるでしょう。

 

挙げたのは機能の一部ですが、アプリを作っていく上で大きな基盤となるはずです。上記の機能を確認し、それに必要な知識を抑えれておけば間違いないはず...!

 

まとめ

アプリを作ろう!と思っても、そう簡単に作れるわけではありません。

何から手をつければいいか分からない時は、仕様書(アプリの機能)を書きましょう

必要な技術や知識を把握して、一つずつ潰していけば形になるはずです!

 

 

...ってことですんごい長々と書いちゃった。

いろいろと補完したいとこあるし、後々httpの仕組みとかWebサーバの仕組みとか書きたいなぁ。