研修動画でIT基礎理論を学ぶ機会を得たので、メモを録りながら視聴しています。
n進数の考え方
「基数」と「重み」という概念の捉え方
いきなりわかんなくなってきたぞ。
例えば、「123.45」という数字があった時に、これをわざわざ基数と重みに分けて書き出した時に、
1×10^2+2×10^1+3×10^0+4×10^-1+5×10^-2
と書く…らしい。???
1の位が10の0乗…0乗はとにかく1?
この10進法の時の10が基数、^2、^1、^0、^-1、^-2が重みという。
桁上がりの基準が基数。
10進数の「1000」という値は「1 × 103」と表すことも出来ます。
この時の1を「仮数」、10を「基数」、103を「重み」といい、10進数の各桁はこの表現による値となっています。
言い換えれば、「基数」は桁上りの基準で、「仮数」は実際に表示されている数字、「重み」はどの桁かを表す値となります。
(但し、重みの桁数は0が1の位となる点に注意)このように、nを基数として数値を表す記数法を「n進数」といいます。
なお、n進数で小数を表すときには、「n-1」「n-2」といった重みを使います。
基数変換
- r進数を10進数に変換
-
各桁にr進数の重みを掛けて足す。
2進数:1001=1×2^3+0×2^2+0×2^1+1×2^0=8+0+0+1=9
16進数:165=1×16^2+6×16^1+5×16^0=256+96+5=357
となる。 - 10進数をr進数へ変換
-
rで割って、下から余りを並べる
補数
- 各桁を最大にするための補数…r進数 r-1の補数
- 桁上がりをするための補数…r進数 rの補数
うーん、まったくわからん!
2進数「0101」を例にした時に、
1の補数は、「0101」に何を足せば最大になるかを考えると、「1010」を足すと、最大の「1111」になる。
2の補数は、「0101」に何を足せば桁がひとつ上がるかを考えると、「1011」を足すと、桁が一つ上がって「10000」になる。
コンピュータの演算装置は構造上、足し算を超高速で行うという仕組みになっている。
なので、引き算がないので、「マイナスを足す」という考え方をする。
2の補数「1011」は「0101」(2進法の「5」)を相殺する数として、対応する負の数を表現できる。
…うーん。もう見失っている。
表現できる範囲
4ビットの場合、先頭ビットが0の場合は正数、1の場合は負数→-8から+7までを表現できる。
※C言語の「型」の例
データ型:int…2バイト(16ビット)の時、とり得る値の範囲は-32768〜32767
データ型:unsigned int…2バイト(16ビット)の時、とり得る値の範囲は0〜65535
論理演算
基本論理演算
- 論理和(OR)…入力される2つの値のどちらかが1なら出力も1。
- 論理積(AND)…入力される両方の値が1なら出力も1。
- 否定(NOT)…入力される値を反転して出力。
組み合わせた論理演算
代表的なのが
排他的論理和(XOR)…入力される2つの値が異なっていれば出力は1。
…私は何を聞かされているのだろう。
「なんでこんなものが重要かと言うと、コンピュータの回路というものは、こういった論理演算がすごくたくさんあって、それを組み合わせることによって、ICの回路が成り立っているから」だそうだ。…お、おう。
SQL文とは?
SQL文とはデータベースを操作する言語のことで、データの検索や追加などの命令を出す文を指します。Javaなどのプログラミング言語よりも比較的扱いやすく、基本の命令文は「SELECT」「INSERT」「UPDATE」「DELETE」の4種類しかありません。
ワイルドカードとは、任意の文字を指示するための特殊な文字記号のことである。あいまいな文字列やファイルなどの検索に用いられる。
主に「*」や「?」が用いられ、この記号を検索したい語句に付加して検索を実行すると、その語句を含む文字列やファイルがすべて検索される。その際「*」は任意の長さの任意の文字を、「?」は任意の1文字を指示する。
「ワイルド*」などのように検索したい語句が先頭に付くすべてのものを検索する手法を前方一致検索と呼び、「*カード」のような逆の検索手法を後方一致検索と呼ぶ。UNIXでは、「*」「?」の他にもいくつかワイルドカードが用意されている。
XORを使った組み合わせ回路
どのような信号が入力されているかにより、出力が1つに決まる回路。
(例)半加算器…2つの加算を行う論理回路のひとつで、2つの2進法の同じ桁どうしを加算し、その桁の値と繰り上がりの有無を出力する。
こういうものがたくさん組み合わされて、コンピュータの回路ができている。
確率・順列・組合せ
- P(permutation)…順列
- C(combination)…コンビネーション。
- !…階乗。4×3×2×1のように整数を階段状に掛ける計算。1 からある数までの連続する整数の積のこと。
- 順列…n個のものから重複を許さずにk個取り出して1列に並べる場合の並べ方。
nPk 通り→nから1ずつ降りていってk個掛け合わせる(階乗)。 - 組合せ…n個のものから重複を許さずにk個取り出して1組取る場合の選び方。
nCk 通り→nの順列をkの階乗で割る。
平均と期待値
期待値…各データの確率が得られる場合の平均値。
期待値は【確率変数(ある出来事が起きた時に得られるスコア)×確率(その出来事が起きる確率)の和】で求められる。
…文系脳には、数学の考え方をインプットするのがツライ。
ヒストグラムとは、対象のデータを区間ごとに区切った度数分布表を、棒グラフに似た図で表現したグラフのことです。 ヒストグラムを作成することで、度数分布表を視覚的に分かりやすく表現することができます。
ビットとバイト
- ビット(b:bit)…コンピュータが扱う、情報の最小単位。(「電気が流れているか、いないか」「Onか、Offか」「0か、1か」)2進数の1桁分にあたる。「binary digit」の略で作った造語。
- バイト(B:Byte)…コンピュータが情報の記憶に用いる最小単位。8ビットで1バイト。8ビットは256通りを表す。
文字コード
- 文字集合…文字の集合体。(ASCII、JIS、Unicode)
- 文字符号化…文字集合にコンピュータで扱いやすいデータ列に置き換えて実用性を持たせる。
(UTF-8など。UTF-8はASCIIと互換性を持つ。)
センサ
センサ…物理量/科学量を電気信号に変換する電気回路構成要素や装置。
※物理量/科学量(圧力、変位、位置、速度、回転数、光、温度、電圧、電力、など。)
アルゴリズム
Algorithm…数学的な問題を解くための一連の手順→物事を行う時の「やり方」
コンピュータの世界においては、逐一そのやり方を考えなければならない=アルゴリズムによって解決しなければならない。なので、特にプログラミングにおいてはアルゴリズムが重要になってくる。
アルゴリズムとは、解が定まっている「計算可能」問題に対して、その解を正しく求める手続きをさす。あるいはそれを形式的に表現したもの。 また、それを実行した際の効率性が優れていることも重要となり、大量の入力データなどに対する計算の際にも、より高速に実行可能となる。
アルゴリズムとは、簡単に言えば「作業手順」のことです。 特定の課題を解決したり、特定の目的を達成したりするための計算手順や処理手順がアルゴリズムです。 その手順に沿っていれば、誰がやっても同じ答え(結果)を出せるのがアルゴリズムの特徴だと言えます。
構造化プログラミング
基本制御構造
アルゴリズムに定義した手続きを実行するための3つの基本的な制御構造。
- 順次構造
- 選択構造
- 繰り返し構造
div要素は、文書に構造を付加するための汎用的なブロックレベル要素です。 要素自体は意味のない単純なブロックレベル要素のため、一般的にid属性やclass属性にスタイルシートを組み合わせることで特定の範囲にスタイルを設定する場合などに使用します。
コンソール(console)とは、コンピューターの操作に用いる入出力装置の一式のことである。 パソコンにおいてユーザーが使用する端末である表示装置と入力装置を一括してコンソールと呼ぶ。 具体的にはディスプレイとキーボードを指す。
WEBで用いられる言語や仕組み
クライアントサイド
- HTML(Hyper Text Markup Language)…タグを使って要素をマークアップして、文書の構造を定義する。
- CSS(Cascading Style Sheet)…HTMLで指定した要素をどのように就職するのかを定義する。
- JavaScript…ブラウザ向けのスクリプト言語。Webページに動的な仕組みを搭載できる。
・ライブラリ…jQuery、prototype.js、AnglerJSなど。
・AJAX(Asynchronous JavaScript + XML)…サーバー側の処理待ちとページ全体のリロードを行わずに、非同期でブラウザ側でXML等のデータを処理し、必要な部分を更新して表示する仕組み。
・jQueryは、ウェブブラウザ用のJavaScriptコードをより容易に記述できるようにするために設計されたJavaScriptライブラリ。
・Prototype JavaScript Framework は、Sam Stephenson が開発したJavaScriptフレームワークであり、Ajaxフレームワークやその他のユーティリティを提供する。prototype.js という名前の1つのJavaScriptファイルで実装されている。
・AngularJSは、Googleと個人や企業のコミュニティによって開発されていた、完全にJavaScriptで書かれたオープンソースのフロントエンドWebアプリケーションフレームワークである。
かつてはRIA(Rich Internet Application)という考え方が主流で、FlashやMicrosoft Silverrightなどを使用していたが、近年はSPA(Single Page Application)という、1枚のページの中でアプリケーションを完結しようという考え方が主流になってきた。
このSPAを実現するために用いられている技術がAJAXで、このAJAXを支えている技術がXMLとJavaScript。
データの持ち方
- XML(Extensible Markup Language)…マークアップ言語の一種。独自のタグを指定することから、ソフトウェアの情報交換に用いるデータ保持のために使われることが多い。
- JSON(JavaScript Object Notation)…データ形式の一種。JavaScriptのオブジェクトの表記法を踏襲している。→連想配列(キーと値のペアによる列挙)
連想配列とは? 連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列です。 キーを任意に指定できることによって、そこに格納されている値が何のことであるかということがより簡単に連想できるようになっています。
サーバーサイド
- PHP(「PHP:Hypertext Preprocessor」の略)
- Ruby…Ruby on Railsで使われるプログラム言語。
・PHPは、 “The PHP Group” によってコミュニティベースで開発されているオープンソースの汎用プログラミング言語およびその公式の処理系であり、特にサーバーサイドで動的なウェブページを作成するための機能を多く備えていることを特徴とする。
・Rubyは、手続き型プログラミングと関数型プログラミングの両方をサポートするオブジェクト指向プログラミング言語です。RubyコードはHTMLに簡単に埋め込むことができるため、Webデザインによく使用されます。
・手続き型言語とは、プログラミング言語の分類の一つで、コンピュータが実行すべき命令や手続きを順に記述していくことでプログラムを構成する言語。
広義の手続き型言語には、手続きと関連するデータを一つの単位にまとめるオブジェクト指向の手続き型言語を含むが、文脈によっては「手続き型言語」が非オブジェクト指向型の手続き型言語を指し、オブジェクト指向言語と対比される場合がある。在来型の手続き型言語にはFortran、ALGOL、C言語、COBOL、BASIC、Pascalなどがあり、オブジェクト指向型の手続き型言語にはC++言語やJava、C#、Python、Ruby、JavaScript、PHPなどがある。
プログラム言語の種類
- 低水準言語…機械語、アセンブラ
- 高水準言語…手続き型(C、COBOL、BASIC)、オブジェクト指向(Java、C++、Object-C、Swift)
- スクリプト言語…PHP、Ruby、JavaScript
アセンブリ言語(アセンブリげんご、英: assembly language、アセンブリ)はビット列命令に対応した文字列命令を利用する低水準プログラミング言語の総称である。
プロセッサは機械語プログラムを直接読み取り実行する。しかし人間にとってビット列は直観的に理解しづらいため、機械語コーディングは容易でない。これを解決するために、ビット列に対応する文字列命令(ニーモニック)を利用するプログラミング言語の総称がアセンブリ言語である。
アセンブラやアセンブルとの違いアセンブリ言語の関連用語として似た響きのアセンブルやアセンブラという言葉が使われます。用語としてアセンブリと同じく英語ですが品詞が異なり、
- アセンブリ=名詞。組み立てること
- アセンブラ=名詞。組み立てる人
- アセンブル=動詞。組み立てる
使用例としては「アセンブリ言語で書かれたコードをアセンブラを使ってアセンブルする」となります。アセンブラは、アセンブリ言語を機械語へ翻訳するソフトの名称です。
オブジェクトとはブックやシート、セルなどVBA*から操作可能な “もの” の総称です。
オブジェクトにはプロパティとメソッドと呼ばれるものが備わっており、プロパティはオブジェクトの情報を取得・設定するもの、メソッドはオブジェクトに命令を与えるものになります。
簡単に説明すると、プロパティはオブジェクトの「性質」「属性」のことであり、メソッドはオブジェクトの「動作」「処理」のことを指し示します。
プロパティとメソッドを合わせてメンバと言ったりします。
*VBA【 Visual Basic for Applications 】 とは、Microsoft Officeに含まれるアプリケーションソフトの拡張機能で、利用者が簡易なプログラムを記述して実行することで複雑な処理の自動化などを行なうことができるもの。また、そのために用意されたプログラミング言語。
概念とか構造をまず理解していないのに、知らない用語がたくさん出てきて、なかなか理解が追いつかないなあ。
もう少しストーリー仕立てでわかりやすい解説はないのかな。
ここからしばらくハードウェアの話が続いていたけど、割愛。
OSについて
オペレーティングシステムの目的
- ハードウェアの抽象化
- リソース(コンピュータで、動作の実行に必要な処理システムの要素や機器)の管理
- コンピュータ利用効率の向上
- 操作支援
OSのプログラム構成
- 制御プログラム
- カーネル…OSの中核部分。(ジョブ管理、タスク管理など)
- デバイスドライバ…周辺機器を制御、管理するプログラム
- ファイルシステム…ファイル、フォルダの作成や記憶領域の割り当て、アクセス権の設定、管理などを行うシステム
- 言語処理プログラム(コンパイラ、インタープリタなど)
- サービスプログラム(コンピュータの利用を支援するプログラム類)
プログラミングというと、「ソースコードを書いて実行する作業」をイメージする人も多いのではないでしょうか。しかし厳密にいえば、コンピュータで実行可能なプログラムとは以下のようなものです。
●実行形式:CPUが理解でき、直接実行できるもの(Windowsの.exeファイルなど)
●中間形式:仮想マシンが理解でき、仮想環境内で実行できるもの(Javaの.classファイルなど)
これらはコンピュータで実行する際の都合に合わせた形式のため、人間にとっては扱いやすいものではありません。より理解しやすいプログラミング言語でソースコードを書いてから、実行可能な形式に変換するほうが生産的でしょう。そのための仕組みが、「コンパイラ」と「インタプリタ」です。
コンパイラもインタプリタも、「ソースコードを変換して実行する仕組み」であることには違いがありません。ただし、変換と実行のタイミングに違いがあります。
コンパイラとは
コンパイラは、ソースコードを実行可能な形式に変換してくれるプログラムです。この変換作業を「コンパイル」と呼び、コンパイルできるプログラミング言語のことを「コンパイラ言語」といいます。
ソースコード全体を一度に変換し、その結果を実行ファイルとして出力するというのがコンパイラの基本的な動作です。そのため、実行時にはソースコードを必要としません。
例えるなら、外国語の本を日本語で読めるように、丸ごと翻訳するようなものだといえるでしょう。
インタプリタとは
インタプリタは、ソースコードを読み込みながらその場で実行してくれるプログラムです。また、この方式に対応したプログラミング言語のことを「インタプリタ言語」といいます。
インタプリタでは変換と実行が並行して行なわれるため、コンパイラのように実行ファイルは作られません。その代わり、実行時には毎回ソースコードを必要とします。
例えるなら、外国語のスピーチを日本語で伝えてくれる、同時通訳のようなものだといえるでしょう。
レスポンシブWebデザイン
PC、タブレット、スマートフォンなど、表示する画面サイズをもとに、ページのレイアウト・デザインを最適化するWebデザインの手法。
デバイスが変わっても、同じHTMLソース、同じURLというメリットがある。
ほとんどが12分割されたグリッドに沿うレイアウトになっている。
レスポンシブWebデザインの背景にある技術
- グリッドレイアウト…ページのコンテナにグリッドのイメージを適用して、パーセンテージによる相対単位をもとに柔軟に幅が可変する。
- メディアクエリ…CSSスタイルに適用するフィルタ。デバイスの種類、幅、高さ、向き、解像度に応じて、スタイルを仕分けて適用する。
マルチメディアデータの形式
コンテナとコーデック
- コンテナ…動画と音声を納めるファイルフォーマット(入れ物)
avi、mov、wmv、mpg、mp4、flv(AVC/HD)など
さらにその中に音声のコンテナ(aiff、wav、mp3など)がある。 - コーデック…エンコード(符号化)/デコード(復号)するための装置/ソフトウェア/アルゴリズム
映像コーデック(H.264、MPEG-1、MPEG-2、MPEG-4、DV、VP6、VP8、VP9など)
音声コーデック(MP3、AAC、WMA、PCM、AC-3など)
AVCHD(エーブイシーエイチディー)とは、Blu-ray Discのアプリケーションフォーマット「BDMV」を応用し、ハイビジョン映像をビデオカメラで記録するための規格の一つであり[発表 1]、パナソニックとソニーが共有する登録商標(第5011316号)である。名称はAdvanced Video Coding High Definitionに由来する。
文書データの汎用形式
マークアップ言語
- HTML
- XML
・rss
・Office Open XML
XMLの最も重要な目的は、異なる情報システムの間で、特にインターネットを介して、構造化された文書や構造化されたデータの共有を、容易にすることである。XMLを使うと、文書を構造化して記述できるし、コンピュータのデータを直列化 (シリアライズ) できる。データを直列化する用途でXMLを使う際には、XMLは、JavaScript Object Notation (JSON) やYAMLなどの、テキストを基にした他の直列化言語と比較衡量できる。
テキストデータ
- タブ区切り…txt
- カンマ区切り…csv(comma separated values)
ネットワーク
LANとWAN
- LAN(Local Area Network)…建物内や室内などの、一定の限定された範囲において構築されたネットワーク。ハブを介して複数のコンピュータが相互に接続される。(社内LAN、ホームネットワーク)
- WAN(Wide Area Network)…地域的に離れた場所を繋げた広範囲のネットワーク。ルータを通して、LAN外のネットワークへアクセスする。(インターネット、VPN)
VPNとはそもそも”Virtual Private Network”の略称で、日本語にすると「仮想専用通信網」を意味します。VPNでインターネットに接続することをVPN接続と言いますが、この場合、専用ネットワークとは言いつつも物理的な専用回線を用いるのではありません。「仮想」専用通信網というように、共用の回線を諸々の技術によって仮想的に独立した専用回線であるかのように扱うのがVPN接続なのです。
ルータの役割
ルータ(LANやWANを相互接続する装置)
- ルーティング…受信データのIPアドレスを解析して経路を選択する。
- フィルタリング…受信データを解析して、条件に該当するパケットを破棄する。
- 経路情報の管理…ネットワークの宛先への経路の一覧を保持するテーブル(ルーティングテーブル)を持つ。
●ブロードバンドルータ…一般家庭や小規模事業者などがFTTHやADSLなどのブロードバンド接続を行う際に用いられる接続装置。
- DHCP…LAN内のコンピュータにIPアドレスを割り当てる。
- ネットワークアドレス変換…グローバルIPアドレスとプライベートIPアドレスを変換する。NAT(Network Address Translation)
- フィルタリング…有害サイトにアクセスさせない。
- 無線LANのアクセスポイント…Wi-Fi接続のアクセスポイント機能。
- デフォルトゲートウェイ…出入り口。
Ethernet
イーサネット(Ethernet)とはコンピュータネットワーク規格のひとつで、LANを構成する物理的な取り決めを定めた技術規格のこと。IEEEにより標準化(IEEE802.3)されている。
IEEE(アイ・トリプル・イー、Institute of Electrical and Electronics Engineers)は、アメリカ合衆国に本部を置く電気・情報工学分野の学術研究団体(学会)、技術標準化機関である。日本語では米国電気電子学会、米国電気電子技術者協会とも。
有線LANを無線化したものを「無線LAN」、有線LANを無線化し相互接続を保証しているものを「Wi-Fi」ということになりますので、( Wi-Fiの普及を推進しているネットワークである「Wi-Fi Alliance(ワイファイ アライアンス)」が、無線LANの中でも相互で接続できるように統一した規格を使用している製品に「Wi-Fiマーク」をつけるようにしています。 )無線LANの通信方式のひとつにWi-Fiがあるという考えが適切といえます。
無線LANには、Wi-Fiだけでなく「Bluetooth」や超高域無線の「Ultra Wideband」などさまざまな通信方式あり、それぞれで周波数帯やチャンネル幅、変調方式などが異なります。
コメント