カテゴリ:ソフトウェア
ワイルドカード
トランプやUN〇のようなカードゲームで特別な効果を持つカードを指しますが,コンピュータ操作では複数のファイルやデータを指定するために活用する特殊な文字のことになります。
Windowsのコマンド操作では「?」が1文字分,「*」が0文字以上の任意の文字列をあらわします。たとえば図のデータに対して「*ka*」で操作する場合,「mikan」「ponkan」「suika」が該当することになります。
※OSやアプリケーションによりワイルドカードの種類は異なります。
電源ONーOFF
機器を使用するとき先ずは電源操作しますが、電源ONを「電源を入れる」、電源OFFをよく「電源を切る」「落とす」とも言ったりします。一般的にも言うことが多いので「電源落として~」「電源切っといて~」といわれて、いきなり機器を机から落としたりケーブルを実際に切断したりする人はもういないと思います。
コンピュータの多くは様々なソフトウェアが動作しているので、正しい「シャットダウン」手順で電源OFFしましょう。
パス
ITパスポート試験の略称でIパスといったり、パスワード入力のことを口頭ではパス入れて~と言ったりもしますが、ここではファイルやフォルダの構造のことを説明します。
スマホだけを扱っている場合は意識しづらいですが、パソコン操作やソフトウェア開発をするときには様々なファイルの位置関係を意識しなければなりません。
ファイルやフォルダの位置関係を表す文字列をパスと呼びます。Windowsを例とすれば、ドライブ名「C:」に続いて「¥」で区切られたフォルダ名が続きます。
コミットとアボート
オンラインで処理される銀行システムやチケット発行など、不具合でお金につじつまが合わない結果が発生することは許されません。
データベースシステムでは、一連のデータ処理(トランザクション)が確実にできる機構を備える必要があり、処理の成功をコミット、失敗をアボートと呼びます。基本的に一連の処理後に、さらに「コミット処理」という正常に一連の作業がなされているかの処理がなされ「コミット済」ではじめてデータ確定となります。データ処理中はもちろんコミット処理中でも異常があればすべて「アボート処理」に入り、さらに「アボート済」でデータ更新なされていない状況に戻ります(ロールバック)。
Mnemonic
ニーモニック(ニモニック)コードという言葉はアセンブリ言語を扱うときによく出てきますが、アセンブリ言語にかかわらず意味が連想できる英数字や記号の組合せをコードとして割り当てる方式のことです。(表意コードともいう)
アセンブリ言語は数値のみの機械語をLDやADDなど動作の略語で対応させたものですが、身近なところでWebサイトのアドレスでも、「~.jp」「~.uk」「~.us」のように国名から略してつけられています。
一時期流行ったKY(空気読めない)などの略語も当時としては、日常の一言をコード化したニーモニックといえるかもしれません。
コンピュータのタスク管理
どんなコンピュータでもOSをはじめ幾つものプログラムが動作して成り立っています。そしてCPUの作業単位をタスクといいます。
細かいタスクを優先順位などでOSが管理する形式をプリエンプティブといいます。タスクは「実行状態」と、CPUの順番を待つ「実行可能状態」と、入出力などを待つ「待ち状態」としてOSに管理されます。優先順位の高いタスクが発生すると実行状態でも一旦に実行可能状態になり(プリエンプション)、先のタスクが終わって実行可能状態から実行状態になります(ディスパッチ)。
これに対し、個々のプログラム基準でタスク実行から離れるか待ち状態で順次タスクが実行される形式をノンプリエンプティブといいます。
ゼロ除算
10÷0=?
数学的には不定や計算不能などありますが、プログラミングでも計算するデータ型によって違う結果が得られたり計算不能としてエラーが返されたりします。重要なシステムに限らず、突然止まったりとんでもない結果が返ってきたら困ります。より安定した動作実現のために、除算する変数をチェックしたり例外処理を組み込んだりすることが重要になります。
(プログラミング言語や変数の型によって結果が異なることも是非試してみましょう)
RGB
プログラムなどでディスプレイ画面で見る「色」を指定する場合、基本的に光を合わせて表示するので加法混色(additive mixture)が用いられます。Red,Green,Blueの3色の組み合わせで表現します。多くの場合、各色8ビット(256段階)であらわしますが、3色の値が少ないほど黒に近づいて大きくなるほど白に近づきます。(3色×256段階=1677万7216種類の色が表現できる)
16進数で各色を連ねた「カラーコード」という表記がWebページでよく扱われます。黒(black)なら#000000,赤(red)なら#ff0000,紫(purple)なら#800080 になります。「カラーコード」などで検索すると色と数値の対応が紹介されたページが多くあります。
COBOL
COBOL(COmmon Business Oriented Language)は1959年に開発されたプログラミング言語です。この言語で新たにシステム開発が行われることは無いかもしれません。
役割別に4つの部(DIVISION)とさらに節(SECTION)で構成されていて高い可読性があります。コード内で帳票入出力の設計がしやすいなど、非常に事務処理に特化しています。
(画像は https://paiza.io で給与算出を想定してコードを作成したものです。正式には何を何文字目から記述するかについて決まりがあります。)
H.264/MPEG-4 AVC
スマホやパソコンなどインターネット経由で動画を見るときによくお世話になるコーデックです。テレビの地上デジタル放送やDVDビデオは主にMPEG-2が使われています(ワンセグ放送やBlu-rayDiscビデオはMPEG-4)。MPEG-2でもかなりのデータ圧縮(元データに比べ10分の1など)が行われていますが、MPEG-4では更に倍程度のデータ圧縮率が実現されています。
AI(artificial intelligence)
人工知能といわれますが、研究者の中でも何をもって人工知能といえるかは分かれています。巷で「AI搭載」などといっても様々な技術で特定の状況でそれっぽく動かせていることが現状だともいえます。シンギュラリティという言葉で人工知能の進化を掲げる研究者がいて、その後(今まで無理であった一部の)特定のことであれば人間を超えて結果を出すことができていて、技術開発は盛んに行われています。
AI技術はツールであり、本格的にコンピュータプログラミングや数学に携わる人間がそのツールに踊らされることのないように、使う立場になりましょう。
※人工知能に関しては理解が変わることが想定されるものです。この内容は2020.4現在のものです。
コンパイラ言語とインタプリタ言語
という、特定のプログラミング言語があるわけではありません。
どちらもコンピュータが直接実行できる機械語に翻訳されますが、プログラムの実行形態として機械語で記述された実行ファイルにしてから実行させるコンパイラ言語と、そのプログラミング言語で書かれた(ソース)ファイルを1ステップごと翻訳実行するインタプリタ言語に大別されます。
他にも○○言語といいながら特定のプログラミング言語ではない呼び名がありますので注意しましょう。
コメント
プログラムのコーディングをするとき、見返したり他の人が理解しやすくするためにもコードの説明を加えておくことが望ましいです。コード中に日本語でも英語でもいきなり説明文を書くとエラーになってしまうのでそれぞれのプログラミング言語には処理と関係なくするための記述方法があります。
C言語であれば //2つのスラッシュ以降の改行まで部分はコメント
または /*スラッシュとアスタリスクで囲んだ部分がコメント*/
説明だけでなく、試行錯誤しているとき元コードを残すためにも使えます。(コメントアウト)
スタック
stackという言葉には積み重ねられた干草などありますが、コンピュータ分野では最後に入れたものから取り出せる(LIFO:Last-In First-Out)データ構造のことを指します。
身近な例ではブラウザ履歴で戻る進むことや画像編集時などのUndo機能の記録構造はスタックです。
統合開発環境(IDE)
システム開発は、エディタやコンパイラ、リンカ、デバッガなど様々なソフトウェアが必要で、さらに動作対象のマイコンやOS、プラットフォームによって対応したものが必要になる。これらがまとめられて提供されているものをIDE(Integrated Development Environment):統合開発環境 といいます。
開発環境の準備や開発自体が容易になりますが、IDEによっては独自のデータ形式になることも多いので作業ファイルの取り扱いに注意が必要です。
POS
販売時点情報管理(Point of sales - system)を意味します。
コンビニやスーパーでは支払いする所にレジ端末を置いて、バックヤードのコンピュータが商品価格などの情報を蓄積しています。今では様々な機能が連携されたり、アプリとしてスマホをPOSレジとして活用することもできるようです。
商品コードから価格を求めて、販売した記録をつけ、必要に応じ集計情報を出すことが基本です。基礎的なプログラミングができればもう作れますね。データ管理をより本格的に扱うならばSQLなども必要になります。
CODEC
CODEC(コーデック)は動画や音声を扱うときによく出てきます。
音楽であれば、実際に演奏されている音をマイクから取り込んだのち、例えばMP3という形式にのっとってコンピュータのデータに変換(符号化)する「Coder」(enCoderともいう)と、保存などされたMP3形式のデータをスピーカーで再生させるための周波数信号に変換(復号化)する「Decoder」がセットになります。※「Compression/Decompression」(圧縮/伸長)の場合もあります。
ソフトウェアだけでなくハードウェアでもいくつかのCODECが実現されていますが、基本的にはプレイヤープログラムがCODECを利用しデータの再生をしています。
疑似乱数
サイコロをふってでる目のように、不規則な動きをさせてみたい。
C言語にはランダムな値を得るしくみとして、rand( )と初期化のためのsrand( )関数があります。rand( )だけではいつも同じ順番に数が得られてしまうのでsrand( )に現時刻を与えることで不規則な値を得るように見せかけることができます。
基本的にC言語など多くのプログラミング言語で準備されている乱数の仕組みは疑似的なものなので、疑似乱数と呼びます。
うるう年
でも、うるう年ごとにスマホやパソコンの日付を設定せずに自動で表示されています。
うるう年は「4の倍数年にあり、でも100の倍数年には無く、でも400の倍数年にはある」というものです。
法則性があれば、プログラムで解決しやすいことになります。
たとえばC言語などで丁寧に組み立てるとしたら、次のように
if(year % 4 == 0){
if(year % 100 == 0){
if(year % 400 == 0){
days = 29;
}else{
days = 28;
}
}else{
days = 29;
}
}else{
days = 28;
}
考え方次第では、もっと少ない処理で同じことができます。(%は余りを求める演算)
可逆圧縮と非可逆圧縮
「かぎゃくあっしゅくとひかぎゃくあっしゅく」早口言葉ではありません。
様々な手法でデータ量を小さくすることを圧縮といいます。その中で、圧縮後に元と同じデータが再生できる手法は可逆(Lossless)、圧縮後の再生データは元と異なる手法が非可逆(Lossy)に分けられ、非可逆は多くの場合圧縮率が高くなります。
元に戻せないと困る文書等には可逆圧縮を用いて、画像や音声は人間の感覚で気づかない部分もあるため非可逆圧縮でデータ量を大幅に削減して活用されています。
OR(オペレーションリサーチ)
「OR」は、論理演算の論理和(オア)だけでなく、オペレーションリサーチ(オーアール)という分野としても表記として出てきます。
あることがらを よりよいものにするために、「なんとなく」ではなく「定量的」に分析,管理,評価することになります。
たとえば、100個のシュウマイ弁当を製造するために必要な豚肉の量は何グラムか。ある地点Xから〇地点を経由して地点Yに行く最短経路は? などに対して、勘ではなく数学的に分析し最善策を導くこともORの一つです。
ORのように定量的に考えることで、様々なことをプログラムで実現(自動化)することにもつながります。
入れ子
たとえば画像は縦と横(さらに色)で構成されるので、画像データなどを扱うには何重もの繰返し処理が必要になります。
HyperText Markup Langage
Webページは文字だけでなく、画像や音声、動画やリンクを合わせて表示できます。
HTMLは様々な「タグ」でコードを構成してWebページがつくられます。
※このページのHTMLの一部
予約語
そのプログラミング言語で、すでに処理命令などで使われている語句と同じ名前は使えません。
(同名がつけられる言語でも、同名は望ましくありません)
「おもしろさをつくる」とは?
そのゲームのどのようなところが楽しいですか?
「おもしろさ」をプログラムで実現するには、どうすればよいでしょう。
さらに楽しくするためには、どのような要素などがあればよいでしょうか、
そしてどのように実装できるか・・・
おもしろさは発想力だけで突発的にできるのではなく、ニーズの分析や
様々な要素を綿密に組み上げて、本当のおもしろさがつくられると言えます。
パリティ
7ビットのデータに奇数パリティを付加した例
0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
もし、何らかの異常でビットが反転してしまった場合・・・
0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
代入
プログラミング言語の処理では基本的に、イコール記号の右側に式や処理をおいて、左側に結果を得るかたちで記述します。
エスケープシーケンス
プログラムコード内でEnterキーを打ってもコードが改行されるだけで、実行中の表示は変化しません。
動作を示す記号や、特殊な文字を表示する記号をエスケープシーケンスと呼びます。
たとえば改行であれば、「\n」を使用します。(※環境により、半角の「¥」または「\」と表示されます。)
C言語の例
1+1は?
この場合は、1が「いち」ではなく、成立している状態「真(True)」をあらわし、「真もしくは真であることは真」ということになります。
他にも算数とは異なる公式がいくつかあります。
構成する電子回路から、プログラム上の条件式や、データベースの操作にいたるまで、
2値が扱いやすいコンピュータには、このブール代数は応用しやすい考え方となります。
今、何月何日?
月ごとに日数が違ったり、うるう年で日数が変わったり・・・
さらに、うるう秒だったり、国によって暦が違ったりしています。
コンピュータに「今日」の日付が表示されているのは、単純なことではないのです。
例外処理
たとえば、停止してはならないシステムや、危険な状態で停止しないために、
起こりうることへの対処をプログラムに組み込むことで、処理の継続や、安全な状態で停止させることができます。
画像表現
格子状(ピクセル)に切り分けて色情報を保存するラスタ型
座標位置や大きさ回転情報を保存するベクタ型
それぞれに利点があり、目的に応じて使い分けられるとクオリティの高い状態で出力が得られます。
プログラミングにおける配列
添え字を変化させてデータを指定することになり、多くのデータでもプログラミングしやすくなります。
フローチャート
ソフトウェア開発に限らず、実社会の様々な作業手順でも用いられていることがあります。
ものごとの流れを整理し、相手に伝えるためにも活用できます。
(図記号は全国工業高等学校長協会情報技術検定を基準に紹介しています)
入力促進メッセージ
コンピュータはたいてい、「入力を受けるまで待っている」ことになります。
何も変化が無いと、ただ動作が停止してしまったように見えてしまうので、
特定の記号
「○○を入力してください:」のようにメッセージを表示して、入力を求めていることがわかりやすいつくり方が必要です。
文字コードと文字化け
"N"→(4E)16進数 "S"→(53)16進数 "G"→(47)16進数 ※ASCIIコード
"あ"→(82A0)16進数 "い"→(82A2)16進数 "う"→(82A4)16進数 ※S-JISコード
"あ"→(A4A2)16進数 "い"→(A4A4)16進数 "う"→(A4A6)16進数 ※EUCコード
コンピュータ内で記憶されている値が、同じ文字コードで扱われれば問題ありませんが、特にインターネットなどで様々なコンピュータでも同じ文字が表示されることは大変なことなのです。
アルゴリズム
「こうすればこうなる」というような様々なアルゴリズムがいくつも確立されていますが、
ソフトウェア開発に限らず、ものごとに手順や解決手法は常に状況に応じて考えるべきことです。「どうしたらうまくいくか」手順を考えることがプログラミングです。
分岐
字下げ
括弧(かっこ)の重要性
プログラミングでも計算だけでなく、様々な処理の書き方で、何から処理されるか
という優先順位があります。
まれにプログラミング言語によって変わることもあり、間違えやすいところです。
( )を効果的に使って、わかりやすく組み立てましょう
「3年2組ではない生徒」 の条件式の例
NOT 学年=3 AND 組=2
は、3年生ではない、たとえば1・2年生の2組の生徒になってしまう。
NOT((学年=3)AND(組=2))
変数
四則演算ほか
GUIとCUI
マウスやタッチなどでアイコンやウィンドウなどで操作する Graphical User Interface
キーボードでコマンドを打って操作する Character User Interface があります。
GUIがあたりまえになっていますが、いざというときやコマンド操作しかない場合もあるので、ぜひ知っておきましょう。
画面の原点
コンピュータでは基本的に、原点(x=0,y=0)の点から右方向と下方向に+(プラス)になります。
ある場所から 横に動かしたければ、右はプラス、左ならマイナス
縦に動かしたければ、上はマイナス、下ならプラス という計算になります。
文字の書き分け
ファイルとフォルダ
ソフトウェア開発をする上では、様々なファイルや、ファイルなどのまとめられたフォルダ(またはディレクトリ)の構造を把握しておかなければなりません。
プログラミングでは、ファイル名やフォルダ配置関係も意味がある場合が多いので、注意しましょう。
不等号記号
処理の分岐や繰り返しをしたい場合に、不等号を使って条件式を立てることがありますが、
まずは不等号の意味を把握して、逆向きにしないように、成立する範囲を正しく設定しましょう。
A < B (A小なりB、たとえばAの内容がBより小さければ関係は正しい。)
A > B (A大なりB)
A >= B (AはB以上)
A <= B (AはB以下)
ちなみに、変数Nをもとに条件が成立する間、繰り返されるとき・・・
変数Nの内容を0(ゼロ)から1づつ増やして10回継続するためには、どんな条件が必要?
N 10
半角文字と全角文字
入力の際、半角文字と全角文字の違いを把握しなければ、プログラムエラーの原因になります。特に表示に表れてこない「 」空白文字にも注意しましょう。
全角文字の例→:あいうえおABC123*+/「 」
半角文字の例→:ABC123*+/[ ]
ショートカットキー
文章や文字列、ファイルでも、選択している状態でキーボードの
「Ctrl」押しながら「C」でコピー(控えが取られるイメージ)
「Ctrl」押しながら「V」で貼り付け(控えたものから出力されるイメージ)
活用できると便利です。
オブジェクト指向における「継承」
料理でいえば、『カレーの作り方』を「継承」して『カツカレーの作り方』をつくる場合、プログラミングでは、『カツカレーの作り方』としては、新たに{トンカツを揚げて、カレーにのせる}と追加するだけで、『カレーの作り方』の内容は継承元をそのまま活用することができるイメージです。