ユーザーインターフェースとデータ処理

記事
IT・テクノロジー

ユーザーインターフェースとデータ処理

一般的な利用者が使うプログラムの場合、PC やスマホ、タブレットのアプリとして作成する場合が多くなります。その場合、プログラムは大きく、ユーザ=インターフェースとデータの処理を行う二つの部分に分ける事ができます。この記事では、この分類について概要を紹介します。


プログラムの基本はデータ処理
この連載でも何回も紹介していますが、プログラムの基本は「データ処理」です。プログラムにあるデータを渡して、そのデータを処理した結果を取り出すと言うのがプログラムの基本になっています。

ゲームなどのプログラムも基本は、データの処理を複雑にしただけで考え方は同じです。

ただし、プログラムにデータを渡したり、処理した結果を取り出す「仕組み」も必要になります。現在のコンピュータの場合は、基本的にデータの処理を「CPU」で行なっています。この CPU が処理するデータは基本的に「二進数」のデータになります。この二進数は人間にはちょっと扱い難い数値で、このデータをやり取りするのはあまり便利な方法ではありません。

そうした部分を含めて、実際にコンピュータでデータ処理を行う場合には、利用者である人間とコンピュータの間で上手くデータをやり取りするための仕組みが必要になります。その仕組みを「ユーザーインターフェース」と呼んでいます。

プログラムには、この利用者とのやり取りを行うのに必要なユーザーインターフェースのプログラムと実際にデータを処理する、プログラムの本体に相当する部分に分ける必要があります。

最近のアプリのユーザーインターフェース
最近のスマホやタブレット、PC のアプリは、基本的に GUI(Graphical User Interface)と呼ばれるユーザーインターフェースが使われています。これは、通常の電化製品のように、ボタンなどを使って、あまりコンピュータを使っていると言う事を利用者に意識させないようなやり方で利用者とやり取りするようになっています。

あとは、実際に実装するプログラミング言語によって、このユーザーインターフェースを作成するための仕組み(ライブラリ)が用意されている場合が多く、プログラムを開発する際にはこうした、仕組みを利用してユーザーインターフェースを作ります。

Python のデスクトップアプリの場合は Tk と呼ばれる仕組みを使ってユーザーインターフェースを作れますし、Java なども Swing などユーザーインターフェースを作成する仕組みを持っています。Web 系のプログラミングの場合、Web ブラウザを利用してユーザーインターフェースを利用するため、HTML にこうしたインターフェースを作成する拡張機能を持たせています。

こうした、利用しやすい GUI を使って、フォームからデータを入力したり、ファイルからデータを読み込んだりできるようにしています。処理結果も、ファイルにデータを保存したり、実際に処理したデータを利用して、画面上に2 D や3 D のグラフィックスで表示ができるようにするなど、利用者に分かりやすい形で処理結果を提供できるようになっています。

プログラム開発のコツは?
実際のプログラムの開発では、このユーザーインターフェースとデータの処理部分をできるだけ分けて別々に開発した方が良い場合が多くなっています。

例えば、データを処理する部分は同じでも、ユーザーインターフェースの作り方でプログラム(アプリ)の使い勝手は大きく変わってきます。実際にアプリをリリースした後でも、実際のデータ処理の部分は問題なくても、実際に利用者が操作する部分が使いにくかったり、違う方法での操作の要望がある場合も沢山出てきます。こうした実際の利用者からの声を参考にプログラムの操作性を改善したりする場合には、このユーザーインターフェースとデータ処理部分を別々に作っておくと、そうした改良をする際にもユーザーインターフェースの部分だけを入れ替えるなどの方法で効率的に行うことが可能になるからです。

また開発したプログラムのテストを行う際にも、ユーザーインターフェースとデータ処理部分を別々にテストできた方が便利な場合が多くなります。

ユーザーインターフェースの場合には、利用者が準備したデータが希望するような形になっているかの確認や、ユーザーの操作の手順などが正しいかや、誤った操作をした際のエラーメッセージが正常に表示されるかや、実際に処理されたデータの表示が期待通りの形で表示できるかなどに集中できます。

データ処理の場合には、ファイルなどに準備されたデータを処理した結果が想定した処理結果になるかをチェックするなどテストの目的や範囲を限定する事ができるのでより効率的なテストが可能になります。

プログラミングのやり方も違ってくる
実際のプログラミングを行う場合でも、ユーザーインターフェースとデータ処理ではプログラムの書き方も変わってきます。

ユーザーインターフェースの作成の場合、最近の開発環境は、ユーザーインターフェースを作成するためのツールも充実してきていて、ある程度パターン化することが可能になっています。従って、ある程度、対象とするアプリに必要なパターンをマスターすれば少ない経験でも十分に対応が可能になってきます。実際のテストもユーザーインターフェースの場合、利用者の操作をある程度限定する事ができるので、比較的バグが少ないインターフェースの構築も短期間でマスターできます。

一方でデータを処理する部分は、色々なデータ処理のやり方を学習したり、予期しないデータに対する処理なども必要になりますし、処理のやり方によっては性能など処理時間や必要なメモリなど大きく変わってきます。また、テストの範囲も限定するのが難しい場合も多く、実際には、同じような分野のアプリでも習得には時間がかかるのが普通です。

データ処理の学習には、ある程度の時間と、きちんと学習の指針が必要になります。このエリアは、もちろん独学でも可能ですが、学校や教材を使った方が初心者の場合学習がスムーズに進むといえます。独学する場合には、何が必要かを本などの文献やインターネットの検索などから見極めて学習プランを作っていく必要が出てきます。

プログラミングの「本質」と言う観点で考えると、この「データ処理」が色々なアプリを開発する上での「コア」になります。この部分の学習には、どのようにデータを処理するかの手順と同時に、どのような形でどのようにデータをプログラムの中に取り込んで行くかも大きな鍵になります。この部分の処理の学習には、アルゴリズムと呼ばれる、よく利用されるデータ処理の手順や、データ構造と呼ばれる、どのような形でデータを保持するかなどを決めるデータの形やパターンなどをカバーする必要があります。

まとめ
プログラムには、利用者とコンピュータの間を取り持つ、ユーザーインターフェースと実際に必要なデータを処理するデータ処理の部分に分ける事ができます。

ユーザーインターフェースの部分は目に見える部分で、不具合も発見しやすく、ある程度パータン化しやすいため、短期間でもある程度のレベルのインターフェースは開発可能になっています。最近では、ユーザーインターフェースを開発する仕組みも発達して以前よりは開発のハードルが低くなってきています。

一方で、データ処理部分は、プログラムの中心とも言える部分で、この部分の学習には、色々なデータを処理するための基本的な手順(アルゴリズム)やデータをどのような形でプログラムに取り込むかなど(データ構造)の知識が必要になります。その上で、実際の目的に合わせて何を利用していくかを決める必要があるため、学習・習得には時間がかかります。

実際のプログラムの本質はデータ処理部分にあるので、学校などではこのデータ処理の色々なパターンを時間をかけて学習するようなカリキュラムが組まれています。

Web 開発のフロントエンドのフレームワークは基本的には、ユーザーインターフェースを設計するための仕組みで、HTML の機能をユーザーインターフェースの開発向けに仕組み化したものです。実際にアプリを開発するには実はこれ以外に、どのようにデータ処理を実現していくかの部分が必ず必要になります。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す