お役立ち情報|フォスタージャーナル

聞くは一時の恥!いまさら知ろう、アプリケーションエンジニアが習得したいシステム開発言語

  • Facebook
  • Twitter
  • note

2017年02月08日

2015年12月4日の記事を再構成(文言の追加)をして作成した最新記事です。

スマートフォンやタブレット端末の普及を強力に後押ししたのは何と言っても魅力的なアプリケーション(アプリ)の数々でしょう。

アプリケーションの種類は、情報収集にとどまらず、学習やヘルスケア、ゲームに至るまでユーザーのニーズやライフスタイルに応じて使い分けられるほどその数は日にひに増加しています。

アプリケーションは、一般的にも身近な「アプリ」だけではなく、企業の業務に合わせて開発されるものもあり、それらの開発・設計・構築を担うのがアプリケーションエンジニアです。

世の中のトレンドや各分野の業界・業務に精通し、顧客やユーザーのニーズに的確に捉えたアプリケーション提供が求められるため、この職種では全体を見渡す論理構築力と分析力が求められます。

また、開発チームにおける一員としての適性、管理者としての適性、さらに問題解決能力などIT分野に限ったスキルではなく総合的なヒューマンスキルも同時に求められるのが大きな特長です。

しかし、アプリケーションエンジニアを目指すなら、まず取り組まなければいけないのがシステム開発言語の習得です。それぞれ特徴があり、習得が比較的容易な言語やコミュニティーが活発なもの、汎用性の高いものなど様々です。

今回はそうしたアプリケーションの動向と、システム開発言語についてご紹介します。

Webアプリ、ネイティブアプリを巡る論争

日本国内で携帯電話の普及が加速した90年代後半、NTTドコモのi-mode、KDDIのEzweb、ソフトバンクのY!ケータイなどキャリア独自のインターネットサービスが開始されました。

後に、通信回線の整備が進み、各社がパケット定額制を実施したことと相俟って、携帯電話はもはや電話よりもメールの送受信やウェブサイトの閲覧などといった現在のモバイル端末に近い使われ方をするようになっていきました。

そしていよいよスマートフォンの登場です。この領域においては、端末はもはや電話付き超小型パソコンと呼ぶに相応しい進化を遂げ、パソコンと同じように様々なアプリケーションが開発、発売されるようになりました。

スマートフォンの利点は何と言っても携行を前提とした筐体であるため、移動時間や空き時間を有効に使える便利ツールやゲームなどのアプリが登場し、スマートフォンの普及を強く後押しする結果となりました。

また、iPhoneやAndroidは、ソフトウェア開発キット(SDK)が公開されており、審査を通過すれば誰でも自由にアプリケーションの開発・配付ができることで多くのアプリ開発会社が誕生し鎬を削る現在の市場が誕生したことも見逃せません。

しかしながら、そう遠くない昔に記録媒体を巡ってVHSとBetaが、Blu-RayとHD-DVDが主導権争いを繰り広げたように、スマートフォンの世界もiOSやAndroid向きに開発されたネイティブアプリと端末を選ばずに利用できるWebアプリがその主導権を巡る論争の渦中にいるのです。

Webアプリとは?

Webアプリとは、iPhoneでもAndroidなどのスマートフォンやMacやWindowsといったパソコンでも端末やOSに関わらずブラウザー上で動作するアプリケーションです。

ユーザー側からすれば端末へのインストールが必要なく、配付側にとってもプラットフォームごとにアプリケーションを開発する手間が省けるため、費用や時間といったコストを最小限に抑えられるのが大きなメリットです。

その一方で、インターネット接続を前提としているために、機能を盛り込むほど動作が遅くなり、利用者にストレスを与えてしまうデメリットが大きな問題とされています。

ネイティブアプリとは?

ネイティブアプリは、iOSやAndroidなどモバイル端末での使用を前提として最適化されているのが大きな特長で最大のメリットはその操作性にあります。

Webアプリと比べてより直感的なユーザーインターフェイスの実現が可能で、オフライン化でも基本的にはサクサク動作するのが最大の優位点です。

しかし、プラットフォームごとに開発が必要なのに加え、審査を通らなければ配付できない、アプリマーケットの課金システムを使うと30%の手数料を引かれる(iOS、Android)などの理由でかえってコスト高になってしまうことがデメリットとして挙げられます。

双方の強みを生かしたハブリッドアプリも登場、用途に合わせて選択を

近年は、双方のメリット、デメリットを極力低減したハイブリッドアプリのリリースも増え始めています。ハブリッドアプリは、入り口はネイティブアプリ、内側はWebアプリの形式を採用し、ユーザーが違和感なく操作ができるよう工夫されています。

とはいえ、速度や操作性など双方のデメリットを完全には払拭できていないのが現状で、開発の際には、そのアプリが何を重視しているのかを念頭に入れた上でいずれかを選択するのがベターだと思われます。

ただ、トレンドが劇的に変化するのがこの業界の特徴ですから、通信回線の整備が進めば速度の問題が解決されトレンドが一気にWebアプリに触れる可能性もありますし、まったく新しいプラットフォームが世に送り出されれば再びネイティブアプリの時代が到来するかも知れません。

この件についてはまさに「神のみぞ知る」領域と言えるでしょう。

 

アプリケーションエンジニアが習得するべきシステム開発言語

(参照:「ライフハッカー[日本版]」)

アプリケーションエンジニアを目指すならいの一番に習得しなければならないのは開発言語です。初心者にとってはエンジニアを目指すことさえ後悔させるほどの高い壁かも知れませんが、これはアプリケーション開発に従事するための最初の試練です。

メジャーな開発言語を押さえておけば、アプリケーション開発ばかりでなくあらゆるシステム開発にも対応でき、この分野に関しては世界中のエンジニアとコードを通じて対話することも可能となります。

本章では Lifehacker(米国)に掲載された、「学ぶのに最適な5つのプログラミング言語」よりご紹介します。

Java

Java は、最も歴史が古く、影響力の大きなプログラミング言語のひとつです。ウェブ内外のアプリケーションや、あらゆるプラットフォーム、オペレーティングシステム、デバイスを見れば、その中心には Java があるはずです。

高度な機能を持つクラスベースのオブジェクト指向言語であり、可能な限り多くのプラットフォーム上で正常に機能するよう設計されています。

そうした理由から、Java は世界でもっとも人気の高いプログラミング言語のひとつになっており、プログラミングの習得に興味がある人にとっては、学習する価値のきわめて大きな言語といえるでしょう。

一方、最初に習うのに適した言語として Java を推薦している人は、Java を使うと自然とプログラマのような考え方をするようになると指摘しています。

つまり、論理的かつ分析的思考力が身につき、コンピューターに情報をどう処理させればうまくいくのか、よく理解できるようになるというわけです。

そうした基本となる中心的なコンセプトは、この先、ほかの言語や技術に移行する際にも役に立つはずです。

Ruby

Ruby は、動的なオープンソースのオブジェクト指向言語で、広く使われているものとしては新しい言語のひとつで、比較的習得しやすい言語として定評があります。

Ruby 公式サイトで提供されている所要時間20分の簡単なスタートガイド(英語)を読めば、ごく短い時間で基本的な知識を身につけることができます。

Perl や Python といった言語のファンなら、いくつかの共通点を見いだせるでしょう。最初に覚える言語としてRubyを推薦する人たちは、理解と習得が容易で、言語を読まなければならない場合にも簡単に読める点を称賛しています。

また、大規模で活気と情熱にあふれる開発者コミュニティーがあり、Rubyの普及に力を注いでいる点も高く評価されています。

Python

最初に学ぶべきプログラミング言語や、すぐに理解できる簡単な言語について議論する際に、必ず名前の挙がる言語が Python です。Python はオープンソースの言語で、商用アプリケーションに使う場合でも無料で使用が可能です。

一方で Python は動的プログラミング言語でもあり、オブジェクト指向型プログラミング、手続き型プログラミング、関数型プログラミングなどにも対応しています。

Python を推薦する人たちは、Python の開発者コミュニティーが Python を教育用の言語として使うことにとても前向きであり、初心者がプログラミングを理解するのに役立つ数多くの学習用ツールやドキュメントを提供してくれている点をアピールしています。

公式チュートリアルはわかりやすく有益で、実用的です。

CとC++

C は、広く使われている汎用的な命令型プログラミング言語で、その後に生まれたほぼすべての言語に大きな影響を与えました。一方の C++ は、C をさらに進化させたもので、クラスなどのオブジェクト指向機能や、仮想関数、テンプレートなどが追加されています。

C++ も世界でもっとも人気のあるプログラミング言語のひとつとされており、ビデオゲームから生産性ソフトウェアまで幅広く使われています。

C++ は C よりも習得するのがやや難しいのですが、もはや C から始める理由はないという意見も多くあります。その議論については、ここで白黒つけるつもりはありません。

C と C++ で重要なのは、コンピュータ科学とプログラミングの分野において、どちらもきわめて基本的な言語だという点です。C や C++ を身につければ、結局あとで使わなくなったとしても、得られるものがあるはずです。

C や C++ を学べば、コンピュータ科学とコンピュータプログラミングの始まりとルーツを知ることができます。

C や C++ のさまざまなフレーバーやバリエーションは多くの人が推薦していて、Arduino マイクロプロセッサのプログラミングに使われている ANSI C や、ロボット工学専用の Robot C といった特殊なアプリケーションへの応用が可能です。

また、C や C++ のような厄介な言語からはじめれば、そのほかの言語(例えば Java など)がさほど難しく感じなくなる、という意見も多く見受けられました。

JavaScript

JavaScriptは、現在のウェブの基礎となった基本的技術のひとつです。JavaScript はブラウザの外にも存在していますが、主には、ウェブに接続するアプリケーションやサービスといった状況で使われています。

JavaScript そのものは動的な言語で、オブジェクト指向型プログラミングのほか、関数型プログラミングや命令型プログラミングに対応する柔軟性を備えています。

シンタックスの多くは C から受け継がれています。どんな形であれ、ウェブに関係するプログラミングを志すなら、JavaScript を学ぶ必要があるでしょう。

JavaScript は比較的覚えやすいですし、多くのブラウザにもすでに使われているので、いろいろと試してみることができます。

また、最初に JavaScript を習得しておけば、C や Java といったもっと複雑な言語もスムーズに覚えられるという意見もあるほどです。

さらに、JavaScript の需要は現在きわめて高くプロのプログラマを目ざしているのなら、必ず習得しておきたい言語です。

 

最後に確認して欲しいポイント

ここまでアプリケーションエンジニアを取り巻く状況とシステム開発言語について述べてきました。

アプリケーションはスマートフォンの普及によって加速度的に拡大を遂げた業界ゆえに、比較的歴史も浅く、今後も短い間に様々な進化発展を遂げていくことが予想されます。従って、新たに生まれる技術に対して柔軟かつ貪欲に学んでいく姿勢が求められます。

一方で、システム開発言語は、それぞれに特徴があるので、アプリケーションの特性に応じて使い分けられており、アプリケーションエンジニアにとっては必携の武器のようなものです。

グローバルビジネスに英語が必要であるように、エンジニアの世界でそれにあたるのがまさにシステム開発言語なのです。メジャーな開発言語をひと通り使いこなせるようになるに越したことはありませんが、まずは得意分野をひとつ作りましょう。

それができたら第二のプログラム言語はパラダイムの異なる言語を学びましょう。語学と同様、最初に学んだプログラム言語は様々な影響を及ぼしますので、視野を広げる意味でも最低2パターのパラダイムの言語を使いこなせるようになることが理想です。

プログラミング言語のパラダイムは大別して、手続き型、オブジェクト指向型、関数型、論理型、データフロー型などに分類することができますが、パラダイムの異なる言語を学ぶことで、エンジニアとしての技量を大きく向上させることでしょう。

 

  • Facebook
  • Twitter
  • note
新着案件情報を他の人より早くチェック!