こなさんち

しがないフリーランスエンジニアの備忘録。

情報科学について~情報量や情報源~

初めに

数学って好きですか?

私は好きです。

基本情報を始めとした情報処理試験にも数学の知識は必要ですね、集合とか、対数計算とか、指数とか。

今回は数学の対数計算がちょっぴり出てくる 情報量 についてお話したいと思います。

情報量とは?

情報の量って何でしょうね?どうやって表されるんでしょうか。

意外と例は「天気」や「さいころ」、「コイン」を使って表されます。

例えば、 コインで表が出るか裏が出るか って、もちろん答えは「表」か「裏」なんです。

また、サイコロを振って出る数はいくつだろうか というのは「1」~「6」の6通り。

厳密にはそんな単純ではないにしろ、前者は2通り、後者は6通りと、答えの数に差があります。

このように、「何が答えとして出るか」のパターンの量を私は情報量だと解釈しています。

コインの例だと、表 or 裏 の2択なので、0 or 1 の 1bitで表すことができます。

サイコロの例だと、6通りを表すためには、0,1,10,11,100,101 の少なくとも6bitが必要ですね。

つまり、 サイコロで出る目の方が情報量は多い といえます。

これを踏まえて次項に行きましょう。

情報量の計算

ITの資格なので、計算が出てきてしまうのは仕方ないですね。

とはいえ、そんなに難しくはないはずです。数学アレルギーの方はがんばりましょう。

事象Aの生起確率(発生する確率)をP(A)と表すときの情報量をI(A)bit とするとき

{ \displaystyle
I(A) = -log_2 P(A)
}

となります。

は?とか言わずに思い出してください。

例えば前述のコインの例だと

{ \displaystyle
P(A) = 1/2
}

であるため、

{ \displaystyle
I(A) = -log_2 P(A) = -log_2 1/2 = log_2 2 = 1
}

となりますね。1bitで表せることがここでも証明されました。

また、サイコロの例だと

{ \displaystyle
I(A) = -log_2 P(A) = -log_2 1/6 = log_2 6 \fallingdotseq 2.585
}

となり、2と少しのbit数、つまり少なくとも3bit必要と証明されました。

情報源

情報量の話や計算をしましたが、続いては情報の話です。

こちらは至ってシンプルで、情報を発生させる行為を指します。

情報源が、何かしらの情報量を発生させます。例をだすと、「サイコロを投げる」といった情報源が「1が出た!」という情報量を発生させる、ということですね。

平均情報量

名前の通り、情報源に対する情報量の平均です。

サイコロの例だと、

1が出る確率とその情報量を掛けて全て足し合わせたものになります。

情報学ではこの 平均情報量 を H で表します。

{ \displaystyle
H = \sum_{k=1}^m P(a_k) I(a_k)
}

k が 1 から mまでの、確率 * 情報量 の合計ですね。

この平均情報量のことを、別名エントロピーとも言います。

マルコフ情報量

コイン、って次に出る面は、前回出た面に影響されないですよね。

じゃんけんも同様に、「さっきグーが出たから次はグーがでない」ということはありません。(心理戦は置いといて。)

このように、 ある事象の生起確率が、それ以前の事象に影響を受けない情報源無記憶情報源エルゴード情報源といいます。

逆に、天気のように「昨日は曇ってたし、梅雨だから明日はきっと雨が降るだろう」といった影響を受ける情報源を``マルコフ情報源**といいいます。

マルコフ情報源のうち、影響を与えるものが1つの情報源を単純マルコフ情報源といいます。上記のように、今日の天気に影響を与える要因が「昨日雨が降ったから」という、1つだけの場合は単純マルコフ情報源だと言えます。

オートマトンに関係するのは、単純マルコフ情報源なんですね。よく試験に出ます。

なんちゃって情報科学授業終わり。

バランススコアカード

概要

今回はバランススコアカード(Balanced Scorecard)について。

BSCって略されるし、当たり前のように「BSCについて~」なんて問題が始まったりもする。

分類

情報技術者試験にはテクノロストラテジマネジメントと大きく3つに分類されるが、この中のストラテジに分類される。

歴史や経緯

1990年に提唱されたBSC。アメリカのハーバード大学、ノーランノートン研究所で新たに業績評価システムのプロジェクトが発足されたんだ。

キャプラン教授と、ノートン博士が発表した、経営課題を解決する為のフレームワークなんです。

詳細

BSCって?

従来、企業の経営状況や業績を把握するのは「財務のみ」だったんです。お金が指標。稼いでればすごい。

そんな中提唱されたBSCでは「いやいや他にも考えるものあるでしょ」と、非財務評価を加えたんですね。

非財務評価を加えたScore(指標)をバランスの取れた状態(Balanced)にしようという仕組みや働きがBSCなんです。

評価基準

ここが重要。暗記する人は暗記できるだろうけど私はなかなかできないのがこの非財務評価の種類。

経営を、財務+非財務の「4つの視点」に分類し、整理するのがBSC。その分類は人材業務顧客財務。評価基準になるということは、経営に於いて大切だと判断されるものですね。

この順番で知っておくと記憶ではなく理解になるのではないでしょうか。

詳しくまとめます。

人材

まず、なぜ人材に注力するのか。

人材への注力、すなわち人材育成です。人材育成に力をいれる理由としては業務を活性化したいからです。今時だと「モチベーションアップを図る」というのも理由にありそうですね。

スキルアップによって意識改革や成長ができる企業かどうか、が良い経営かどうかの指標になってるんですね。

業務

次に、なぜ業務を活性化させたいのか。

そりゃもちろん、業務の活性化で、顧客満足度を高めたいからです。人材も育ち、いいアイデアや効率化が進めば、おのずと顧客満足度も高まります。

そのため、業務が活性化しているのか、よい業務プロセスがとられているかが経営指標になっています。

顧客

次に、なぜ顧客満足度を高めたいのか。

これも明白、顧客が満足すれば、もっと関係性がよくなり受注量が増えるからですかね。

財務

最後、なぜ受注量を増やしたいのか。

結局は財務に終始しますね。受注量が増えれば収益性が高まり経営が発展するからなんです。

4つの視点のまとめ

良い財務のためには良い顧客が必要。

良い顧客のためには良い業務が必要。

良い業務のためには良い人材が必要。

こんなつながりになっているんですね。

風が吹けば桶屋が儲かる仕組みなんです。

経営改善の方法

仕組みは把握したかと思いますが、ではこれをどうやって運用していくのか?という話です。

例えば、「具体的にどういった業務プロセスが求められるのか?」など。

売上アップというゴールがあれば、それに対する重要成功要因を考えていく必要があるんですよね。

しれっと登場してきた重要成功要因も試験では重要なキーワードです。Critical Success Factor(CSF)と称されますので知っておきましょう。

ゴールに対して、何をすれば成功するのか、その要因がCSFです。それを見つけるためにSWOT分析を行うんですね。

またまたしれっと登場してきたSWOT分析も重要。企業の強み(Strength)弱み(Weakness)機会(Opportunity)脅威(Threat)を分析する方法。

具体例はまた別記事に。

試験に向けたまとめ

今回出てきた用語などは以下。

BSC

前述の4つの指標は、以下のキーワードとなって試験に出てきます。だいたい穴埋め。

  1. 財務の視点
  2. 顧客の視点
  3. 業務プロセスの視点
  4. 人材と変革の視点

SWOT分析

これはまた別記事にて。

KPI、KGI

BSCのみならず、情報処理試験で必ず目にしますので、併せて紹介。

KPIはKey Performance Indicatorの略で、重要業績評価指標のことです。KeyとなるPerformanceのIndicatorです。

KGIはKey Goal Indicator。重要目標達成指標のこと。こちらはKeyとなるGoalに対するIndicatorです。

KPIはゴールにどれだけ近づいているかの数値。 KGIはゴールとなる数値です。

例を挙げると、売り上げ1億!がKGIで、売り上げを上げるために毎月集客活動を100回行うぞ!がKPIってことです。今回のメインはBSCなのでこれくらいにします。

なんか用語チックになっていますが、成り立ちや意味を知っておくだけで理解度は増すかと思います。

最後に

試行錯誤して、どんな情報が有用か考えながら項目を増やしていきますね。

1.5hかかりました。疲れた。

情報技術者試験カテゴリについて

このカテゴリについて

あくまで自己満です。

私は学生時代基本情報技術者試験に合格してます。また、それに関しての教鞭を執っています。

応用情報技術者試験にはあと1問、あと数点、というところで数度落ちています。(惜しすぎて萎えてます。いずれ受かります。)

教えることが好きな私が、自分の備忘録を兼ねてこのカテゴリにFE、AP、高度午前共通問題に出るようなものをまとめていこうかと思います。

私が勉強になったものなどをメインに書き連ねるので、基本的には自己満です。

また、私がITについて、プログラミングについて教えるときに心がけていることは 暗記だけで終わらせない ということ。勉強、暗記、という気持ちではなく、開発はゲームのように楽しむようなものだと考えています。 そして私は暗記が苦手なので、暗記ではなく、「理解する」というところから入っていこうと心がけています。

ということで、本カテゴリで紹介する用語についても、歴史・背景実例を加えて説明していけたらなと思います。

AといったらB!のようなものに終始したくありませんので。

便利なコマンド集@備忘録

きっかけ

仕事で「サンプル的なの作って」って言われたから

環境

php7.2

Laravel 5.8

コマンド

scaffold..?

php artisan make:model Board -mcr

例えば掲示板作るときにこれ。 -mcr で、ModelもcontrollerもMigrationも作ってくれる優れもの。

随時追記するよ

vue で v-bind ってのを知った今日。

前提

LaravelとVueは相性がいい。

ほう。使ってみるか。

私のレベル

Laravel -> 人に教えてる Vue -> 説明はできても、コーディングは未経験

vue

 
const app = new Vue({
    el: '#app',
    data: {
        types: []
    },
    methods: {
        fetchTypes: function(){
            axios.get('/api/uses' ).then((res)=>{
                this.types = res.data
            });
        }
    },
    created(){
    }
});

ってすると、例えば user.id だとか user.nameだとか、以下のように取得できる。

                <!--Card content-->
                <div class="card-body">
                    <div class="custom-control custom-radio" v-for="user in users" v-bind:key="user.id">
                      ぼく、@{{user.name}}だよ
                    </div>
                </div>

ただ、例えば

<div id="userid_@{{user.id}}">

...

</div>

とはできないんだよね。やりたいことはおそらくわかると思いますが。こんな時には v-bind:idを使うとよい。

この場合 idでなくてもclassやforもOK。

<div v-bind:id="'userid_' +user.id">

...

</div>

が正解。

違和感。

localhostにサブドメイン追加してみた

背景

部長「サブドメインで別々のフォルダ見れるようにしといて」

私「おかのした」

環境

WindowsServer

Apache

Localhost

前提

通常、サブドメインを作成することはhttpd.cond のみでは不可能です。

そこで、extra\httpd-vhost.conf をいじります。

httpd.conf の設定

... 

LoadModule vhost_alias_module modules/mod_vhost_alias.so # コメント外す

...

Include conf/extra/httpd-vhosts.conf # コメント外す

vhostsの設定

動的に生成するという手段もあります。

それは以下記事をご参照ください。

https://taitan916.info/blog/?p=1839

今回は、手動で追加していくパターンです。

www.softel.co.jp

というのもWindowsなのでバッチファイルでがちゃがちゃやりたいからですね。

便利なコマンド

httpd -S

現在のvirtual hostの一覧

httpd -t

設定ファイルの文法チェック

いまさら聞けない「Linux」って?

はじめに

閲覧ありがとうございます。 本記事の対象は、

  • Linuxって聞くけど何?
  • Linux、使ってるけど詳しく知らない…

というような初心者、中級者です。これらを知っておくと、個人開発やプロジェクトでの開発に役立つことでしょう。

なるべく初心者にわかるように、かみ砕いて説明するようにしますね。

そもそもLinuxとは

OS

この記事をご覧いただいているパソコンにしてもスマートフォンにしても、「マウスを操作する」「メールを送信する」などといった アプリケーションやハードウェアを操作する根幹となるシステムが必要です。

このシステムを OS (Opertiong System)といいます。このキーワードは聞いたことがあるのではないでしょうか。

例えば、パソコンなら

などが一般的ですね。

今回のテーマであるLinuxもOSの一種で、スマートフォンや多くのサーバでも利用されています。

また、WindowsやMaxOSは有償ですが、Linuxは無償で入手可能なんです。(ネット上でダウンロードが可能)

ところで、みなさんパソコンを買うとき、自分で「OSをインストールする」という作業を行った記憶はありますか?

ある方は、精通していらっしゃいますね。ちなみに私はありません。

実は、OSは、 * 自分でインストールする * 自分で再インストールする * 削除して別のOSを入れる * OSを切り替える

など様々なことが可能です。

カーネル

先ほどLinuxはOSだと説明しましたが、 狭義の「Linux」とはカーネル(OSの核となる部分)を指し、Linuxをインストールしただけでは、ファイルの操作やキーボードの操作、その他もろもろができません。

最初にこのLinuxカーネル)が公開されてから、多くの人がこれを使ってコンピュータを動かすソフトウェアを開発していきました。

この「カーネル」に関しては知っている方もあまりいらっしゃらないのではないでしょうか。普段意識することはない部分ですからね。

ディストリビューション

Linuxカーネルは常に公開されており、前述したとおり誰でも無償で利用が可能です。そして、このカーネルを利用したソフトウェアも数多く公開されています。

しかし、どのソフトウェアを使えばよいのか、何が必要なのか、などなど、すべてをそろえるのはなかなか難しいのです。

そこで、カーネルにソフトウェアを組み合わせてパッケージ化したものを配布するようになりました。 このパッケージを ディストリビューションといいます。

このキーワードも聞いたことはあるでしょうか。

一般的なディストリビューション

などがあります。

歴史

これも知っておくとなかなか興味深いものです。 学生時代にやったなあと思い出しつつ書きますね。

ここではまた新たなOSが登場します。

UNIX

UNIXというOSが昔ありました。 これは、研究用とで開発されていたOSであり、設計内容は公開され、改造も自由なOSです。

様々な個人や企業が、独自で改造や追加開発を行うため、ある人が使うUNIXと別の人が使うUNIXは全く別物、ということもありました。

そこで、UNIXも開発元である AT&TUNIXを管理するようになります。 これ以降、

  • AT&Tと契約を結んだ組織:UNIXを名乗る
  • AT&Tと契約を結んでいないもの:"UNIX互換OS"を名乗る

ということになります。

UNIXを名乗るなら契約すればいいのですが、UNIXが動作するPCは高価、AT&Tとのライセンス料も高価なため、手が出せない組織も多かったんですね。

そんな中、当時フィンランドの学生であった リーナス・トーバルズ(Linus Torvalds) が PCで使えるUNIX風のOS「Linux」を公開しました。

それが1991年の出来事です。Linuxは学生によって誕生したんですね。

最後に

概要については以上です。

実際のコマンドなどには触れませんでしたが、業務などで使うLinuxでの理解は深まったでしょうか?

ありがとうございました。