マルチプラットフォームに対応するソフトウエア開発

2022年08月22日

  • ICTシステム開発
世の中のコンピューターには、CPUやメモリなどのハードウエアと、オペレーティングシステム(OS)やアプリケーションなどのソフトウエアの組み合わせがあります。加えて、周辺機器の有無やネットワーク接続の有無など、いろいろなオプションの組み合わせがあり、さまざまな環境で使われています。

土台という意味での「プラットフォーム」は厚みのある言葉です。対象によって、ハードウエアにもソフトウエアにもその両方にも成り得ます。一般的にソフトウエア開発の世界では、主にOSの違いをプラットフォームとしています。たとえば、WindowsやLinuxやMacOSなどです。これは、OSが動作するという前提に立つと、ハードウエアの違いをOSが吸収して、あるいはOSがハードウエアをブラックボックス化して、ソフトウエア開発者がハードウエアをほとんど意識する必要がなくなるからです。本稿では、複数のOSをマルチプラットフォームと呼び、マルチプラットフォームで動作するソフトウエアの開発手法について解説します。

デスクトップアプリ開発

デスクトップアプリとは

ここでの「デスクトップ」とは、デスクトップ パーソナル コンピューター(≒ 机の上のパソコン)を略した言葉です。また「アプリ」もアプリケーション ソフトウエア を略しています。

デスクトップアプリとは、みなさんがお使いの机の上のパソコンにインストール(≒設置)して使用する、文書作成や表計算、メールの読み書きやインターネット閲覧など、ある目的のために作られたソフトウエアたちを指しています。

いままでは、アプリケーションと言えばデスクトップアプリのことでしたが、ここ最近「Webアプリ」(詳しくはこちら)が台頭してきたことで、対比して使われるようになりました。

デスクトップアプリ開発

異なるプラットフォームで動作するデスクトップアプリは、プラットフォームごとに開発します。Windowsで動作するアプリはWindowsで開発し、Linuxで動作するアプリはLinuxで、MacアプリはMacOSで、といったようにです。それぞれの開発には、プラットフォームに合った開発言語、開発環境、開発フレームワークが必要になります。
開発言語
開発言語は、Java、PHP、C#/C++/C、Swift/Objective-Cなどの多様なプログラミング言語です。
開発環境
開発環境は、Windowsの「Visual Studio」や、MacOSの「Xcode」などが用意されています。
開発フレームワーク
開発フレームワークは、下記などを含む枠組みです。
  • あらかじめ用意された手法や作法。
  • 一定の品質が担保された機能やライブラリ。

開発者は、開発フレームワークを利用することで、必要な機能の実現に注力することができます。
その結果として、開発者はより高品質なソフトウエアをより効率的に開発することができます。
代表的な開発フレームワークには、マイクロソフト社の.NETや Google社のFlutter(フラッター)などがあります。

Webアプリ開発

Webアプリとは

Web(ウェブ)は、World Wide Web 世界を包むクモの巣状のネットワーク( ≒インターネット) を略した言葉です。
Webアプリとは、クラウドが提供する表計算やメールなどのサービスの総称を指します。みなさんがお使いのパソコン(クライアント)に表計算やメールなどのデスクトップアプリがインストールされていなくても、そのパソコンにブラウザーひとつあれば、ブラウザー上でクラウドが提供するアプリを使ってデスクトップアプリと同じ作業ができます。
みなさんもよくご存じの、TwitterのようなSNSや 楽天のようなお買い物サイト、Gmailのようなメールサービスや YouTubeのような動画サイトなどは、Webアプリの代表例です。
  • クラウド(Cloud 雲)とは、インターネットのどこかにある、いろいろなサービスを提供するコンピューター(≒サーバー)たちの総称です。2006年 Google社 CEOのエリック・シュミットが使った「データサービスとアーキテクチャーは、サーバー上にあるべきです。私たちはこれを『クラウドコンピューティング』と呼んでいます。」から始まったとされています。おそらく、Gmailを開発している時にホワイトボードのインターネットの絵に担当者がモヤモヤッと雲のカタチとサーバーの仕事を書き込んだのでしょう。その雲の絵が実に見事で、この発言につながったのかもしれませんね。
  • クライアントとは、インターネットのサービスを使う側のことです。サービスを提供するサーバーと合わせて「サーバー・クライアント システム」と呼びます。
  • ブラウザーとは、インターネットを閲覧するためのデスクトップアプリです。 Webブラウザーとも呼ばれます。Google Chrome や Apple Safari、Microsoft Edge などが有名です。

Webアプリのメリット

  • アップデートが容易
    サーバー側でアプリを更新するので、クライアント側で何かする必要はありません。
  • インストールが不要
    クライアント側にデスクトップアプリをインストールする必要がなく、コストもリソースも少なく済みます。
  • 環境に依存しない
    ブラウザーが動作すれば、どのようなプラットフォームでも使うことができます。

Webアプリのデメリット

  • 通信障害やネットワーク障害が起きた時は、作業が止まります。
  • デスクトップアプリと比較すると、反応速度や実行速度が遅くなります。
  • ブラウザーは、セキュリティを高めるために、ローカルのファイルやハードウエア等へのアクセスが強く制限されます。

Webアプリ開発

Webアプリの開発には、クライアント側とサーバー側それぞれの開発言語、開発フレームワークが必要になります。
開発言語
クライアント側開発言語は「フロントエンド言語」とも言います。JavaScript、CSS、HTML などが有名です。ブラウザーの見た目やユーザーインターフェース、アニメーションなどに使います。

サーバー側開発言語は「バックエンド言語」とも言います。Python、Ruby、JavaScript、PHPなどが有名です。サーバーで提供するサービス本体に使います。
開発フレームワーク
開発フレームワークには、代表的なNode.jsの他、Ruby言語向けのRuby on RailsやPython言語向けのDjangoなどがあります。

マルチプラットフォーム対応のデスクトップアプリ開発の「これから」

前述したように、従来のデスクトップアプリはプラットフォームごとに開発が必要で、台頭するWebアプリは高い完成度でマルチプラットフォーム対応が進んでいます。

このような背景から、最近のトレンドとして、Webアプリの開発手法をベースにして、あらたなフレームワークにより、マルチプラットフォーム対応のデスクトップアプリ開発手法が提案されています。
ひとつは、Node.jsフレームワークと JavaScriptで記述したWebアプリを基にした例です。これにElectronフレームワークを用いることで、 LinuxやMacOS、Windowsなどの異なるOS上で、そのまま実行可能なマルチプラットフォーム対応のデスクトップアプリを実現しています。
また、2021年11月にMicrosoft社から正式リリースされた.NETフレームワークの.NET6には、単一のソースコードで Windowsや MacOS、iOS、Androidそれぞれのユーザーインターフェース(UI)を記述できるUIフレームワークであるMAUI (Multi-platform App UI) が含まれました。

これらの手法により、マルチプラットフォーム対応デスクトップアプリ開発の「低コスト化」や「開発期間の短縮」が期待できます。
 当社での「Electronを使ったデスクトップアプリケーション開発」の事例を下記のURLで紹介しています。
ぜひご覧ください。