プログラミングの世界で成功する秘訣は?

記事
IT・テクノロジー

プログラミングの世界で成功する秘訣は?

新たなキャリアを求めてプログラミングの学習を始められる方は多いと思いますが、プログラミングの世界で成功する「秘訣」をご存知ですか?

実は、プログラミングの学習ではプログラミングの知識やスキルに目が行きがちですが、実は、一番重要なのは「アイディア」です。プログラミングで何を利用者に提供するか?この感覚を磨くことが成功に繋がります。

この記事では、Firebase の利用事例でよく取り上げられるチャットアプリを題材に価値あるアプリを考えてみました。

実際に Firebase はチャットのようにリアルタイムでメッセージをやり取りするようなアプリケーションには向いています。ほぼリアルタイムで送られたメッセージを各端末(スマホ・PC)で取り込む仕組みを提供しているからです。

しかし、実際はよく利用されるチャットのアプリと似たようなメッセージの交換ができるますが、細部は大きく違います。


良くある実装は?

良くある Firebase の実装サンプルで使われているチャットアプリを良くみてみると、殆どのものは、一対一でメッセージを交換するようなアプリです。

実際に、このようなアプリならば Firebase を使えば簡単に実装できます。

実装の基本方針は:

* メッセージを Firebase のデータベースに保存
* データベースに保存されているメッセージを表示
* データベースに新しいメッセージが保存されたら表示を更新
これだけで実現できます。 あとは、UI を作ってメッセージの表示部分、送信メッセージの入力フォーム、送信ボタンと画面のスクロールなどを実装すれば、メッセージをやり取りするアプリが作れます。

Firebase とのやり取りは、データベースにメッセージを保存する処理と、データベースからメッセージを読み込む処理だけです。あとは、UI(ユーザーインターフェース)を作れば良いので、Firebase のデータベースの利用事例としては、素晴らしい題材だと思います。

よく利用されているチャットアプリは?

上で示したような実装をすれば、見かけ上良く利用されるチャットアプリと似たような機能が実現できます。

メッセージのやり取りをする部分は同じような感じで利用できます。ところが、細かいところは良く利用されるアプリとは違います。

大きな違いは、多数の利用者が同時に利用できるような工夫がされている点です

* 利用者の登録
* やり取りを行う人の管理
* 添付ファイルが可能(画像やビデオなど、さらにはファイル転送)
最近のサービスでは、ビデオコールや通話などがついているのも常識になっています。

ここでは、チャット(メッセージ交換)に絞って詳細をみてみることにします。

個々の機能はシンプル!

良く利用されるアプリの機能を詳しくみてみると、実は個々の機能自体はとてもシンプルで簡単に作れます。メッセージを交換する部分は、チャットアプリとしてよくチュートリアルに登場する部分です。UI はフロントエンドのフレームワークを利用すれば簡単に作れるとすれば、あとは、Firebase のデータベースにメッセージを書き込んだり、読み出すだけです。

データベースの更新を検知して表示を更新する必要がありますが、これも、Firebase が提供する「onSnapshot()」の機能を使えば簡単に実現可能です。Firebase のドキュメンテーションをみるとサンプルコードとともにやり方が解説されています。

初心者でも、チュートリアルなどを見ながら実装すれば数時間もあれば、メッセージの交換部分の実装は十分に可能です。

利用者の登録は、ユーザー認証機能を利用して、ユーザー登録してもらう方法で対応可能でこちらもシンプルなコードで実装できます。

やり取りを行う人の管理は、各利用者毎に、Firebase のデータベースにコンタクト(友達)を保存するコレクションを作成して、登録するようにすれば実現できます。多少、アクセス権限を設定するセキュリティルールの設定が面倒ですが、以前紹介したような形で複雑なルールの設定も可能ですので、実装はそれほど難しいわけではありません。

ファイルのやりとりも Firebase のストレージを利用して行えば可能です。

つまり、個々の機能自体は Firebase のチュートリアルやサンプルの実装でよくインターネットに投稿されているもので実現できるという事です。

ところが、これを組み合わせて実際のサービスとして組み上げるには少しく工夫が必要ですし、経験も重要になってきます。

アプリは組み合わせで価値を提供するもの

Web サービス自体は殆どの場合、シンプルな機能の組み合わせで実現されています。 個々の機能自体はプログラミングの勉強の例題として取り上げ荒れるようなシンプルな物が殆どです。つまり、サービスの価値は実は組み合わせによって生まれています。

多くは、特別な機能というよりは、良く利用される基本機能の組み合わせだけで実現できます。

そうなると「アイディア次第」という事になります。

プログラミングでアプリを作るのに一番必要なのは、プログラミングのスキルよりは実はアイディアの方が価値という点で考えた場合重要です。この辺りが、プログラミングを学習しただけでは、実際に価値あるアプリを作るのが難しいと言われる理由です。

プログラミングを勉強したけれども何を作って良いのか良くわからないという話をよく耳にします。実は、これが一番難しい部分で、これを教えてくれるスクールやコースは少ないと言えます。スクールやコースでは、例題や課題という形で制作を行うと思いますが、その多くは「部品」という機能の実装に違い場合が非常に多いと思います。

最近では、多くのよく利用される機能は、パッケージ(モジュール)としてインターネットで公開される場合も多く、誰でも簡単に機能を取り込むことが可能です。そう考えると、プログラムの実装は「レゴ」のように部品を組み合わせるという要素が以前よりも大きくなっているという事になります。

まとめ

チャットアプリを例に取り上げていますが、この記事でお伝えしたいのはアプリを作る上で大事なのは、基本的な機能をいかに組み合わせて「価値」あるアプリに仕上げるかという点です。

この考え方は料理に似ています。料理に使う材料は同じでも料理人の腕で同じ素材でも全く違った料理になりますよね?アプリの開発もこれに似ていて、プログラミングの基本機能は誰がプログラムしても余り大きな違いはない場合が多いです。

しかし、誰もが利用できる仕組みや実装方法を利用しても、大きな差がついてしまします。

プログラミングの世界では他の業界を経験して学習をされる方も多いと思いますが、プログラミング以外の経験をプログラミングの世界でうまく生かすことができるという大きな利点を持つことだといえます。

プログラミングと別の世界を「つなぐ」これが、プログラミングの世界で成功する秘訣ではないでしょうか?
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す