ITパスポート対策〜第6回「PPMについて」

今回のお題

今回のお題は、ITパスポート試験でも出題されることのある「PPM」という用語についてです。

目次

  • 用語の概要
  • 分析方法

用語の概要

PPMは Products Portfolio management の略です。

投資の世界でポートフォリオといえば、複数の投資先をどのように組み合わせて利益を確保していくのかという戦略を指します。

PPMは、企業が関わっている複数の商品や事業を分析し、最適な経営資源の配分を決めるための手法になります。

元々は、1970年台に米BCG(ボストン・コンサルティング・グループ)が提唱したフレームワーク及び開発した商品を指していたようです。

分析方法

PPMでは、「市場の成長性」と「市場におけるシェア」の2つを軸に、その企業の事業を4つに分類します。

  • 問題児
    市場の成長性は高いが、シェアは少ないというような事業がここに分類されます。
    今はその会社としては利益は出ていないですが、市場自体は魅力的なので上手くいけば大きなリターンにつながる可能性もあります。
    基本的にはハイリスクハイリターンなので、リソースを投下するかどうかは企業の方針次第ですね。
    成長よりも安定を重視するのであれば、撤退も視野に入ります。
  • 花形
    市場の成長性・シェア共に高い状態のものがここに分類されます。
    業界全体としての収益性は高いですが競争も激しいので、積極的に投資をしていきます。
  • 金のなる木
    自社のシェアは高い一方で成長性はあまりない分野です。
    花形と比較して競争率が低いので、ローリスクで高いリターンを得られる傾向にあります。
    ここに分類されている事業に関しては花形と並んで投資価値の高いものになります。
  • 負け犬
    なんとも直接的なネーミングですね。
    市場の成長性、自社のシェア共に低いものがここに分類されます。
    市場自体の価値が低く、その中での自社の立ち位置も悪いという状況ですね。
    上記の3つに分類されていた事業が負け犬のゾーンに動いてきた場合には、速やかな撤退が求められることが多いです。

 

ITパスポート対策その4

今回のお題

今回もITパスポート回です。

今回は、評価制度に関するものが主になるでしょうか。

ちなみに、今回からタイトルにナンバリングを入れてみました。

以前のものは直さないかもしれませんが、ご了承ください。

目次

  • KPI
  • CSF
  • KGI
  • value engineering

KPI

最近よく聞くようになった言葉なので、ご存知の方も多いかもしれません。

Key Performance Indicator の略で、直訳すると「成果のための鍵となる指標」となります。

現場では、目標達成のために何を意識すべきか、という意味で用いられることが多いです。

例えば、「売上の向上」が目標として掲げられている場合には、「客単価の向上」、「来客数の向上」などがKPIとして設定されます。

CSF

Criticak Success Factors の略で、直訳すると「成功のための決定的な要因」となります。

現場では、「目標達成のために最も重要な要因」を指して使われる用語です。

先程のKPIは一つの目標にたいして複数設定される場合も多いですが、このCSFは基本的に一つの目標に対して一つですね。

KGI

Key Goal Indicator の略で、直訳すると、「ゴールへの到達度をはかる鍵となる指標」という意味になります。

上記のKPIやCSFは、目標達成のために必要な要素の達成度を図るものでしたが、KGIはより直接的で、目標自体の達成度合いを図るためのものになります。

例えば、売上の向上が目的の場合、「客単価の向上」や「リピーターの増加」がKPI(あるいはCSF )、「前年同月比の売上高」自体がKGIとして設定されます。

value engineering

value engineeringは、組織の目標の達成度合いではなく商品やサービスを評価する際の用語になります。

その中でもvalue engineering とは、商品やサービスの価値を「機能とコスト」を軸に分析し、価値の向上を図るものになります。

最近の言葉で言うと「コスパ」に近い考え方ですね。

PHPのインストール・バージョンアップの方法

f:id:keishiprogramming:20211014100604p:plain


今回のお題

今回は若干番外編的な内容になります。

お題は、「PHPのインストール・バージョンアップの方法」です。

 

PHP自体はmacであれば最初から入っていますが、機能が不足しており本格的な開発に耐えうるものではありません。

例えば、laravel/duskというテストコード用のパッケージをインストールする際にはext-zipというzipファイルを扱う機能が必要になるのですが、プリインストール版のPHPにはこのext-zipが入っていないです。

では、前置きはこのぐらいにして、PHPのインストール・バージョンアップの方法を見ていきます。

 

ちなみに、今回の手順で使用するHomebrewについては導入済みという前提で進めます。

そちらに関する説明は今回は省略するので、各自で調べていただくようにお願いいたします。

目次

  • Homebrewのアップデート
  • インストール可能なバージョンの確認
  • バージョン指定でのインストール
  • パスの設定
  • PHPの再起動
  • バージョンの確認

Homebrewのアップデート

ここからは、全てホームディレクトリで実行してください。

念のため、Homebrewのアップデートを先にしておきます。

以下のコマンドを入力してください。

brew update

完了したら、次に進みます。

インストール可能なバージョンの確認

次に、インストール可能なバージョンを確認します。

ターミナルで以下のコマンドを叩いてください。

brew search php

 

すると、以下のような結果が出ます。

f:id:keishiprogramming:20211013192746p:plain

phpが名前に入ったものが全て混ざっているので若干見にくいですが、php@7.2, 7.3, 7.4とバージョン名なしのphpがインストール可能であると表示されました。

バージョン名なしのものは最新版(今回は8.0)です。

phpの横の✅はインストール済みの表記です。

この候補の中からPHPのバージョンを指定してインストールしていきます。

PHPのインストール

以下のコマンドで、希望のバージョンのPHPをインストールします。

brew install php@xx

xxには7.2などのバージョン名が入ります。

今回は上記の通り最新版にはバージョン名がついていないので、最新版をインストールする際には@xxは省略できます。

 

かなり時間がかかりますので、気長に待ってください。

完了したら、次に進みます。

パスの設定

インストールが完了したら、パスを通していきます。

そもそもパスを通すとはなんぞや、という話なのですが、簡単に言うとどのディレクトリからでも同じコマンドでPHPを操作できるようにするための処理です。

PHPのnamespaceに似ていますね。

パスに関してはざっくりとしか理解しておらず、あまり話しすぎても墓穴を掘るだけなので、本題に戻ります。

以下のコマンドを入力して、パスを設定します。

// vimファイルを起動

vim ~/.zshrc

// iを押してインサートモードに変更後、以下を入力

export PATH="/usr/local/opt/php@xxx/bin:$PATH"

export PATH="/usr/local/opt/php@xxx/sbin:$PATH"

// [esc]>[:]>wq>[Enter]でvimファイルを保存したのち、以下を実行

resource ~/.zshrc

 

これで、パスが登録されました。

次に、PHPを再起動します。

PHPの再起動

以下のコマンドを入力します。

brew services start php@xxx

次に、ターミナル自体を再起動します。

PHPのバージョン確認

最後に、以下を入力してバージョンを確認してください。

php -v

f:id:keishiprogramming:20211013195152p:plain

上記のようにバージョンが表示され、意図したものであれば成功です。

PHPのインストール・バージョンアップの方法

今回のお題

今回は若干番外編的な内容になります。

お題は、「PHPのインストール・バージョンアップの方法」です。

 

PHP自体はmacであれば最初から入っていますが、機能が不足しており本格的な開発に耐えうるものではありません。

例えば、laravel/duskというテストコード用のパッケージをインストールする際にはext-zipというzipファイルを扱う機能が必要になるのですが、プリインストール版のPHPにはこのext-zipが入っていないです。

では、前置きはこのぐらいにして、PHPのインストール・バージョンアップの方法を見ていきます。

 

ちなみに、今回の手順で使用するHomebrewについては導入済みという前提で進めます。

そちらに関する説明は今回は省略するので、各自で調べていただくようにお願いいたします。

目次

  • Homebrewのアップデート
  • インストール可能なバージョンの確認
  • バージョン指定でのインストール
  • パスの設定
  • PHPの再起動
  • バージョンの確認

Homebrewのアップデート

ここからは、全てホームディレクトリで実行してください。

念のため、Homebrewのアップデートを先にしておきます。

以下のコマンドを入力してください。

brew update

完了したら、次に進みます。

インストール可能なバージョンの確認

次に、インストール可能なバージョンを確認します。

ターミナルで以下のコマンドを叩いてください。

brew search php

 

すると、以下のような結果が出ます。

f:id:keishiprogramming:20211013192746p:plain

phpが名前に入ったものが全て混ざっているので若干見にくいですが、php@7.2, 7.3, 7.4とバージョン名なしのphpがインストール可能であると表示されました。

バージョン名なしのものは最新版(今回は8.0)です。

phpの横の✅はインストール済みの表記です。

この候補の中からPHPのバージョンを指定してインストールしていきます。

PHPのインストール

以下のコマンドで、希望のバージョンのPHPをインストールします。

brew install php@xx

xxには7.2などのバージョン名が入ります。

今回は上記の通り最新版にはバージョン名がついていないので、最新版をインストールする際には@xxは省略できます。

 

かなり時間がかかりますので、気長に待ってください。

完了したら、次に進みます。

パスの設定

インストールが完了したら、パスを通していきます。

そもそもパスを通すとはなんぞや、という話なのですが、簡単に言うとどのディレクトリからでも同じコマンドでPHPを操作できるようにするための処理です。

PHPのnamespaceに似ていますね。

パスに関してはざっくりとしか理解しておらず、あまり話しすぎても墓穴を掘るだけなので、本題に戻ります。

以下のコマンドを入力して、パスを設定します。

// vimファイルを起動

vim ~/.zshrc

// iを押してインサートモードに変更後、以下を入力

export PATH="/usr/local/opt/php@xxx/bin:$PATH"

export PATH="/usr/local/opt/php@xxx/sbin:$PATH"

// [esc]>[:]>wq>[Enter]でvimファイルを保存したのち、以下を実行

resource ~/.zshrc

 

これで、パスが登録されました。

次に、PHPを再起動します。

PHPの再起動

以下のコマンドを入力します。

brew services start php@xxx

次に、ターミナル自体を再起動します。

PHPのバージョン確認

最後に、以下を入力してバージョンを確認してください。

php -v

f:id:keishiprogramming:20211013195152p:plain

上記のようにバージョンが表示され、意図したものであれば成功です。

ModelFactoryを利用したインスタンスの生成

今回のお題

今回のお題は「ModelFactoryを用いたテスト用のインスタンスの生成」です。

以前にテストコードについては一度取り上げました。

あの時にテストしたのは、テーブルにレコードが保存されていなくても行える部分のみでした。

なので今回は、一歩進めて、テスト用のインスタンスを保存するための仕組みについてまとめていきます。

目次

  • ModelFactoryとは
  • ModelFactoryファイルの作成方法
  • 作成されたModelFactoryファイルの中身
  • ModelFactoryの編集方法
  • ModelFactoryを用いて実際にインスタンスを生成するには

ModelFactoryとは

ModelFactoryとは、テストコード内で利用するインスタンスを作成するためのLaravelの仕組みです。

具体的にいうと、database/factoriesディレクトリに各モデルに対応したModelFactoryファイルを作成し、その中にインスタンスを作成するルールを記述することで、テストの際にそれに沿ってインスタンスを作成することができるようになります。

ModelFactoryファイルの作成

それでは、ModelFactoryファイルを作っていきます。

例えばBookモデルに対応するFactoryを用意するのであれば、以下のコマンドをターミナルで実行することになります。

php artisan make:factory BookFactory --model=Book

make:factoryの後にファイル名を、--model=の後に対応するモデル名を指定してください。

これで、BookFactory.phpが作成されます。

作成されたModelFactoryファイルの中身

作成されたModelFactory中身は以下のようになっています。

ちなみに、UserLicenseというのが今回Factoryを作成したモデル名です。

<?php

namespace Database\Factories;

use App\Models\UserLicense;
use Illuminate\Database\Eloquent\Factories\Factory;

class UserLicenseFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = UserLicense::class;// 対応するモデル名を明記

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()// ここに、インスタンスの生成について記述する
    {
        return [
            //
        ];
    }
}

 

基本的には赤字部分のpublic function definition(){return;};のreturnの内部が、インスタンスの生成に関するルールを記述する箇所になります。

具体的な記述方法は、事項で説明していきます。

ModelFactoryファイルの編集方法

ModelFactoryファイルのreturn[]の中を編集することで、生成するインスタンスのプロパティの値を決めることができます。

記述例としては以下のようになります。

return [

    "name" => $this->faker->name,

    "age" => $this->faker->numberBetween(0, 100),

    "comment" => $this->faker->paragraph

];

基本的には、"カラム名" => $faker->項目名という形式ですね。

$fakerに関する書き方についてはGitHubのFakerの項目に詳しく書いてあるので、一旦は省略します。

ModelFactoryを用いたインスタンスの生成

では、実際にModelFactoryを用いてインスタンスを生成してみましょう。

この場合には、以下のように記述します。

Xxx::factory()->create();

(XxxにはModelFactoryの対象にしたモデル名が入る。)

 

ちなみに、LaravelのテストにはsetUpメソッドと呼ばれるメソッドがあります。

これは、テスト実行時に最初に必ず実行されるもので、この中でFactoryを用いてインスタンスを生成しておくのが一般的です。

以下、setUpを用いた書き方の例です。

protected function setUp():void// ①

{

    parent::setUp();// ②

    Xxx::factory()->create();

}

 

念のため、上記で下線をつけた部分について解説しておきます。

①:voidについて

これは、テストコードの中で定義しているsetUpメソッドの戻り値の型を定義するために使用します。

voidとは戻り値がない、という意味です。

echoで文字列を出力するだけの場合やインスタンスをテーブルに保存する場合は戻り値がないのでvoidになります。

逆に、returnで何かしらの値を返す場合は、string, integer, booleanなど何かしらの型が戻り値に設定されることになります。

 

では、なぜ戻り値の型を明示する必要があるのかという話をします。

全てのテストコードはTestCaseクラスを継承して作られているのですが、setUpメソッドは元々TestCaseクラスに定義されているメソッドになります。

つまり、今行っているのはメソッドのオーバーライドになるわけですね。

その場合には、上書き後も戻り値の型が変わっていないことを示さないとエラーになるので、このように型を明示しています。

 

②parent::setUp();について

これは、TestCaseクラスで定義されているsetUpメソッドの呼び出しを行なっています。

TestCaseクラスのsetUpメソッドは全てのテストの事前処理として必須の処理を定義しているので、上書き後もそれらの処理が実行されるようにしているのですね。

 

ちなみに、テストコード内でfakerを用いてインスタンスを作成する場合には、テストコードファイルの

use PHPUnit/Framework/Testcase;

use Tests/TestCase;

に書き換える必要があります。

ご注意を。

終わりに

以上が、ModelFactoryを用いたインスタンスの生成方法になります。

もちろん外部キーを絡めるなどのより高度な方法もまだまだあるのですが、そちらについては機会があれば取り上げていきます。

ITパスポート対策〜営業資源の効率化

今回のお題

今回のお題は、営業資源の効率化です。

例によってITパスポート関連ですね。

前回取り上げたSCMに近い内容です。

目次

SCM(復習)

Supply Chain Material の略です。

製品の原料調達から消費者に届くまでをしっかりと管理して無駄を無くしていこうという取り組みです。

ERP

Enterprise Resource Planning の略です。

販売・生産・購買・経理・人事などといった企業の基幹業務の情報を一元管理し、経営資源の配分の最適化を図るという考え方を元々は指していました。

今では、そのためのシステムを意味することが一般的です。

 

特定の企業専用で開発されたものと一般向けのERPパッケージとして販売されているものの両方があります。

MRP

Material Requirements Planning の略です。

ある製品を作る上で必要になる部品や材料を、必要な時に必要な数だけ調達するための生産管理方式のことを指します。

要するに、過不足のない在庫確保を実現することで在庫リスクの低減と品薄リスクの低減を両立させましょうということですね。

元々は、1970年台にアメリカの生産在庫管理協会(APICS)が提唱したものらしいです。

ちなみに、上記で「部品や材料」と述べましたが、広い意味では生産設備や人員の確保も含むそうです。

SFA

Sales Force Automation の略です。

営業支援ツールと呼ばれることも多いですね。

営業担当者の業務内容の中には、顧客リストの作成や進捗状況の更新などの提携業務も多数あります。

そのような提携業務を簡略化、自動化することで営業活動を効率化するのがSFAです。

ITパスポート対策〜業務プロセス関連

今回のお題

今回もITパスポート回です。

お題は、業務プロセスです。

業務プロセスというと、以前にBPRという用語を取り上げました。

今回は、それ以外の業務プロセス関連用語を幾つか取り上げていきます。

目次

BPR(復習)

Business Process Reengineeringの略です。

業務効率化のために手順などを抜本的に見直すことを指します。

BPM

Business Process Management の略です。

業務プロセスの設計・実行・監視・改善のサイクルの中で業務内容を継続的にアップデートしていくことを指します。

 

一度に大掛かりな改革を行なってしまうのがBPR, 小さくても継続的な変化を積み重ねていくのがBPMという違いですね。

BCP

Business Continuity Plan の略です。

直訳すると、ビジネスの継続性に関する計画、ですね。

災害などが発生した際にも業務が停止しないように対処法を考えておくことを指します。

上記二つが主に業務の効率・生産性に焦点を当てていたのに対し、こちらは有事の際のリスクマネジメントが主眼ですね。

SCM

Supply Chain Management の略です。

サプライチェーンという言葉は、聞いたことがある方も多いかもしれません。

直訳すると供給連鎖となり、原材料の調達から商品が消費者に届くまでの一連の流れを指します。

SCMとはこのSupply Chain のManagementなので、商品を供給する上での一連の流れをしっかりと管理して無駄を無くしていこうという考え方になります。

BPR/BPMの二つとは効率化という点では共通していますが、それらよりもスケールの大きな話ですね。

例えば、小売店でのPOSレジデータを活用して原材料の調達量を調節するなどといった取り組みがSCMになります。