商売力開発ブログ

非エンジニアがWebサービスの開発、運営によって商売力をつける記録、その他の雑記

はてなブログが独自ドメインでもHTTPS化できるようになってたので手順を確認しておく

はてなブログが独自ドメインでもHTTPS化できるようになってました。

staff.hatenablog.com

手順を確認しておきましょう。

HTTPS化の対応手順

上記のリンクに記載されている手順は以下の通り

  1. ダッシュボードから設定画面から詳細設定へいき、HTTPS化の設定変更を行う。こちらは1回行うと元に戻すことはできないとのこと・・・
  2. 混在コンテンツ(Mixed Content)の対応を行う。ただしmetaタグの設定での対応部分はEdgeなどのブラウザでは未対応。

記事内に張った自身のブログのリンクとかも、HTTPSに変更する必要がありますね。

後はツール関連ですが、対応が必要なのがグーグルの Search Console のアドレス変更の対応です。独自ドメインで運用しているような人ならば、使用割合は高いでしょう。

www.prj-alpha.biz

HTTPからHTTPSに301リダイレクトされる必要があるのですが、そこは自動でやってくれそうなので問題なさそうです。

とりあえず、はてなブログの設定変更を行っているユーザは結構いるみたいです。我々も早めに対応する予定です。

以上

Laravelのマイグレーション機能の活用⑤ 複数テーブルに同じカラムを追加する

今回はPHPフレームワークの一つのLaravelの中から、データベースのマイグレーションの機能の利用に当たって、我々の活用方法を紹介します。
今回利用するDBはMySQLですが、一部については他のDBでもほぼ同様に対応できます。
またマイグレーションに関連する内容は以下を参照して下さい。

Laravelのデータベースのマイグレーション機能 順番を強引に入れ替えることも可能 - 商売力開発ブログ
Laravelのマイグレーション機能の活用① メンバ変数を追加した上でテーブルのコメント追加も簡単に設定する方法 - 商売力開発ブログ
Laravelのマイグレーション機能の活用② 1つのファイルで複数のテーブル管理も可能 - 商売力開発ブログ
Laravelのマイグレーション機能の活用③ カラム定義の管理を楽にする方法 - 商売力開発ブログ
Laravelのマイグレーション機能の活用④ カラム定義のメソッド設定例 - 商売力開発ブログ

カラム共通設定用のメソッドを使用してのカラムの追加

前回までの記事で説明したように、カラム名を指定することで定義を設定できるようなLaravelのファサードのメソッドを今回も利用します。

MigrationFunc::columnDef($table,'column_name');

このMigrationFuncファサードのメソッドの引数は以下のようなもので、nullableやデフォルト値の設定もできるものです。詳しくはこちらを参照して下さい。

public function columnDef(Blueprint $table,$column_name,$nullable_flg=false,$default=null)

今回は複数のテーブルに対して、同じカラムを追加する場合の対応を行います。ほぼ同じ構成のテーブルに対して行うイメージとなります。
まずはマイグレーションファイルに、テーブル名と追加するカラム名を設定します。今回はMySQLのみだけで利用できるafterのカラムも設定しています。

    public $tbl_array=array('tbl_name_1','tbl_name_2','tbl_name_3');
    public $add_col_name='add_colomn';
    public $aft_col_name='after_column';//MySQLのみ

これらのプロパティ(メンバ変数)を利用してupメソッドとdownメソッドを設定していきます。
またテーブルへの変更の場合、Schema::tableを使用して設定します。

Schema::table($tbl_name, function (Blueprint $table) {
    MigrationSet::columnDef($table,$this->add_col_name);
});

upメソッドの設定

upメソッドでは、追加対象のテーブル配列をforeachで処理するようにします。処理をする前に追加対象のテーブルが存在することと、そのテーブルに追加対象のカラムがないことをチェックすることが可能です。

if(Schema::hasTable($tbl_name) && !Schema::hasColumn($tbl_name,$this->add_col_name))

MySQLの場合、afterの設定によって特定のカラムの後に追加が可能です。こちらも追加対象のテーブルにafter対象のカラムがあることをチェックすることが可能です。

if(Schema::hasColumn($tbl_name,$this->aft_col_name))

ある場合はafterを設定し、ない場合はafterを設定しないようにします。
MigrationFunc::columnDefの設定により、afterを続けて設定することができます。

MigrationSet::columnDef($table,$this->add_col_name)->after($this->aft_col_name);

これらをまとめたupメソッドは以下のようになります。

    public function up()
    {
        foreach($this->tbl_array as $key => $tbl_name){
            if(Schema::hasTable($tbl_name) && !Schema::hasColumn($tbl_name,$this->add_col_name)){
                if(Schema::hasColumn($tbl_name,$this->aft_col_name)){
                    //MigrationSet後にafterを実行
                    Schema::table($tbl_name, function (Blueprint $table) {
                        MigrationSet::columnDef($table,$this->add_col_name)->after($this->aft_col_name);
                    });
                }else{
                    //afterなし
                    Schema::table($tbl_name, function (Blueprint $table) {
                        MigrationSet::columnDef($table,$this->add_col_name);
                    });
                }
            }
        }   
    }

こちらを実行すると、追加対象のテーブルに同じカラムが追加することができます。

downメソッドの設定

downメソッドでも、追加対象のテーブル配列をforeachで処理するようにします。処理をする前に追加対象のテーブルが存在することと、そのテーブルに追加対象のカラムがあることをチェックすることが可能です。

if(Schema::hasTable($tbl_name) && Schema::hasColumn($tbl_name,$this->add_col_name))

downメソッドでは追加したカラムの削除を行います。カラムの削除はdropColumnで行います。

$table->dropColumn($this->add_col_name);

これらをまとめたdownメソッドは以下のようになります。

    public function down()
    {
        foreach($this->tbl_array as $key => $tbl_name){
            if(Schema::hasTable($tbl_name) && Schema::hasColumn($tbl_name,$this->add_col_name)){
                Schema::table($tbl_name, function (Blueprint $table) {
                    $table->dropColumn($this->add_col_name);
                });
            }
        }
    }

こちらを実行すると、追加対象のテーブルに追加したカラムを削除することができます。

まとめ

今回はLaravelのマイグレーションの我々の活用方法のうち複数テーブルへの同じカラムの追加方法を紹介しました。

以上

【関連するリンク】 www.prj-alpha.biz www.prj-alpha.biz www.prj-alpha.biz www.prj-alpha.biz www.prj-alpha.biz

Laravelのマイグレーション機能の活用④ カラム定義のメソッド設定例

今回はPHPフレームワークの一つのLaravelの中から、データベースのマイグレーションの機能の利用に当たって、我々の活用方法を紹介します。
今回利用するDBはMySQLですが、一部については他のDBでもほぼ同様に対応できます。
前回説明したカラムの共通定義用のファサードのメソッドの設定について、具体的に紹介します。
www.prj-alpha.biz
また他のマイグレーションに関連する内容は以下を参照して下さい。

Laravelのデータベースのマイグレーション機能 順番を強引に入れ替えることも可能 - 商売力開発ブログ
Laravelのマイグレーション機能の活用① メンバ変数を追加した上でテーブルのコメント追加も簡単に設定する方法 - 商売力開発ブログ
Laravelのマイグレーション機能の活用② 1つのファイルで複数のテーブル管理も可能 - 商売力開発ブログ
Laravelのマイグレーション機能の活用⑤ 複数テーブルに同じカラムを追加する - 商売力開発ブログ

カラムの共通設定用のメソッド

前回の記事で、カラム名を指定することで定義を設定できるようなメソッドについて書きました。Laravelのファサード(MigrationFuncとします)を使用してメソッド(columnDefとします)の定義をすることで、マイグレーションファイルに以下のような記述をすることでカラムの定義ができるようにします。

MigrationFunc::columnDef($table,'group_cd');

このMigrationFuncファサードのメソッドの引数の定義は以下のようにし、この定義の具体的な実装部分を紹介します。

public function columnDef(Blueprint $table,$column_name,$nullable_flg=false,$default=null)

引数には以下を設定します。

  • $table:Schema::createやSchema::tableでカラム定義を設定するBlueprintインスタンスです
  • $column_name:設定対象のカラム名です
  • $nullable_flg:nullableを設定するかです、省略・指定がない場合はカラムは必須となります
  • $default:デフォルト値の設定用です、省略・指定がない場合はカラムのデフォルト値は設定しません

カラムの共通定義は連想配列などで以下のようなものとし、今回はMigrationFuncファサード内に設定しておきます。設定するタイプに応じて必要な値を追加しておきます。例えばstring型の場合はlenghtを追加して、設定する際にデータ長にします。

$columnSet = [
    'id' => ['type'=>'increments','comment'=>'ID'],
    'name' => ['type'=>'string','length'=>255,'comment'=>'名前'],
    'group_cd' => ['type'=>'string','length'=>5,'comment'=>'グループCD'],
];

ちなみにcommentはMySQLの場合、列に設定することができます。
続いて、指定されたカラム名から対象となる定義を取得し、データ型を指定します。データ型ごとに設定するメソッドが違いますので、それぞれ別けて設定する必要があります。ここでは、switch文で対応しています。また指定できるデータ型ごとのメソッドはかなり多いので、必要なものについて設定して下さい。

//対象のカラムセットを取得
$targetCol=$columnSet[$column_name];

//データ型の指定
switch($targetCol["dataType"]){
    case "increment":
        //incrementの設定
        $tblSetter=$_table->bigIncrements($column_name);
        break;
    case "text":
        //textの設定
        //defaultは設定できない
        $tblSetter=$_table->text($column_name);
        break;
    case "string":
        //stringの設定
        $tblSetter=$_table->string($column_name,$targetCol["length"]);
        break;
    case "dateTime":
        //dateTimeの設定
        $tblSetter=$_table->dateTime($column_name);
        break;
    case "date":
        //dateの設定
        $tblSetter=$_table->date($column_name);
        break;
    case "flg":
        //flgの設定
        $tblSetter=$_table->boolean($column_name);
        break;
    case "tinyInteger":
        //tinyIntegerの設定
        $tblSetter=$_table->tinyInteger($column_name);
        break;
    case "unsignedTinyInteger":
        //unsignedTinyIntegerの設定
        $tblSetter=$_table->unsignedTinyInteger($column_name);
        break;
    case "integer":
        //integerの設定
        $tblSetter=$_table->integer($column_name);
        break;
    case "double":
        //doubleの設定
        $tblSetter=$_table->double($column_name,$targetCol["length"],$targetCol["decimal"]);
        break;
    default:
        //設定がない場stringで設定する
        $tblSetter=$_table->string($column_name,255);
        break;
}

カラムの定義のあとに、nullableなどの設定を追加で行います。データ型を設定した変数:$tblSetterに追加で設定します。

//必須の解除
if($nullable_flg){
    $tblSetter->nullable();
}
//デフォルト
if($default!==null){
    $tblSetter->default($default);
}
//コメントの設定
//MySQLのみ設定可能
$tblSetter->comment($targetCol["comment"]);

最終的にはこの変数:$tblSetterをreturnします。こちらをreturnすることでマイグレーションファイル側で追加で別の設定を行うことも可能となります。

return $tblSetter;

以上がカラム定義のメソッドの設定例です。

カラム定義のコメントの設定について(MySQLの場合のみ)

カラム定義のコメントはMySQLのみ設定可能ですが、このコメントにルールを設けうると確認が楽になることがあります。例えば、データ型ごとにコメントの先頭に同一の記号などを設定しておきます。

$columnSet = [
    'id' => ['type'=>'increments','comment'=>'●ID'],
    'name' => ['type'=>'string','length'=>255,'comment'=>'■名前'],
    'group_cd' => ['type'=>'string','length'=>5,'comment'=>'■グループCD'],
];

このようなルールを設けておくと、MigrationFunc::columnDefで設定したカラムは先頭に特定の記号のあるコメントが付くようになります。

MigrationFunc::columnDef($table,'group_cd');

標準の設定方法のカラムのコメントでは記号を付けないようにすることで、MigrationFunc::columnDefで設定したカラムと区別できるようにしてます。

$table->string('group_cd',5)->comment('グループCD');

ちょっとしたことですが、共通定義で設定されたカラムか簡単に分かるようになります。

まとめ

今回はLaravelのマイグレーションの我々の活用方法のうちカラムの共通定義用のファサードのメソッドの設定を紹介しました。
新規サービスの開発段階では一部は使える方法ではないかと思いますので、参考にしてみて下さい。

以上

【関連するリンク】 www.prj-alpha.biz www.prj-alpha.biz www.prj-alpha.biz www.prj-alpha.biz www.prj-alpha.biz

【更新情報】ガントチャートの担当にプロジェクトメンバーを設定可能に

今回は我々が開発しているプロジェクト管理ツールProject-Alpha(プロジェクトアルファ)を更新したので内容を説明します。

更新情報

更新内容

これまでガントチャートなどのコンテンツでの担当欄では、別途設定した担当用のプルダウンリストが使用できました。今回の更新により、担当用プルダウンではなくプロジェクトメンバーを設定できるようになります。

更新画面など

担当欄で使用する内容は各コンテンツ設定で変更可能となります。

プロジェクトメンバーに変更後は、アサインされているプロジェクトメンバーが担当に表示されます。

プロジェクトメンバーの場合、初期設定では「ID + 名前」で表示されます。こちらプロジェクト設定で、「IDのみ」や「名前のみ」に変更することも可能です。

「名前のみ」の場合、重複することがありますが、重複した場合は後ろにIDが追加されます。

ガントチャートのバー色についてもメンバー毎に設定できるようになります。

オーナーについては、オーナー設定で変更して下さい。

注意事項

コンテンツのデータを入力後に、この担当の選択方法を変更するとコンテンツの担当のデータが表示されなくなります。入力後に変更した場合は担当のデータを修正して下さい。
担当の選択方法をプロジェクトメンバーとした場合、表示されるのはその時点のプロジェクトメンバーです。あるメンバーを担当に設定していて、そのメンバーをアサインから外した場合はその担当の入力欄は空白となりますので注意して下さい。

まとめ

今回は更新情報の内容の説明でした。

以上

【関連するリンク】

 

www.prj-alpha.biz

www.prj-alpha.biz

home.prj-alpha.biz

CSSのみでハンバーガーメニューのクリックでメニューの表示・非表示を制御する

今回はCSSのみでハンバーガーメニューのクリックでメニューの表示・非表示を制御する方法を紹介します。
Googleアナリティクスで状況を見ると、サービスサイトにスマホからアクセスがあったのでレスポンシブ対応も兼ねて設定しました。

完成イメージ

まずは完成イメージを以下に示します。




ハンバーガーメニューとも言われる3本線を押すと、下にメニューが表示されます。またハンバーガーメニューを押すと今度は非表示となります。
これらの制御をJavaScriptを使用しないで、CSSのみで対応していきます。

CSSだけで対応する方針

この動作をCSSだけで対応するのに、checkboxの2つの機能を利用して対応します。

checkboxのオンオフによる制御

Input要素のcheckboxを使用して表示・非表示の制御をします。checkboxのオン時にのみ適用できるCSSの疑似クラスで制御します。以下のようなhtmlがあるとします。

    <input id="topHeadNaviToggleCkBox" type="checkbox" class="naviToggleCkbox" value=0>
    <ul class="naviToggleTarget">

このinput要素のcheckboxがオンとなるとき、つまりチェックされた場合の疑似クラス「:checked」を使用してCSSを設定することが可能です。この「:checked」に隣接要素を指定する「+」などを利用することで、その他の要素もオンとなっときだけ適用するスタイルの設定が可能となります。
例えば「.naviToggleTarget」は通常は非表示で、checkboxがオンのときは表示する場合のCSSは以下になります。

.naviToggleCkbox:checked{
    /* チェックされたときのみ適用される checkbox要素 */
}
.naviToggleTarget {
    display: none;
}
.naviToggleCkbox:checked + .naviToggleTarget {
     /* チェックされたときのみ適用される  checkbox要素の次の要素 */
    display: block;
}

labelとcheckboxの連動

checkboxのオンオフによる制御ができることがわかったと思いますが、実際にcheckboxをオンオフするとなるとcheckboxは小さくユーザからすると操作しにくいです。そこでlabelのfor属性を利用します。for属性にはinput要素のid属性を指定すること、そのlabelと関連付けることができます。for属性にcheckboxを指定することで、そのlabel要素をクリックすると、checkboxをオンオフすることができるようになります。

   <label class="naviToggleLabel" for="topHeadNaviToggleCkBox">
    <input id="topHeadNaviToggleCkBox" type="checkbox" class="naviToggleCkbox" value=0>
    <ul class="naviToggleTarget">
     <li class="toggleItemCont">
      <a href="index.html">ホーム</a>
     </li>
    </ul>
   </label>

この設定の場合、input要素自体は非表示にしておき、label要素だけを表示させるようにする対応が多いです。オンオフの制御と合わせることで、label要素のどこかをクリックすることで「.naviToggleTarget」が表示・非表示になり完成イメージのようになります。

対応例

htmlの例は以下のようになります。

  <div class="naviToggleMenuCont">
   <label class="naviToggleLabel" for="topHeadNaviToggleCkBox">
    <div class="naviToggleSwitch">
     <span class="iconToggleSwitch"></span>
    </div>
    <input id="topHeadNaviToggleCkBox" type="checkbox" class="naviToggleCkbox" value=0>
    <ul class="naviToggleTarget">
     <li class="toggleItemCont theme_bg_light theme_bg_hov_dark">
      <a href="index.html">ホーム</a>
     </li>
    </ul>
    <div class="toggleOverlay"></div>
   </label>
  </div>

input要素を非表示になっているとした場合、checkboxがオフのとき見え方は以下のようになります。




赤枠で囲った部分の「.naviToggleSwitch」はハンバーガーメニュー部分です。黄色枠で囲った部分がlabel要素の全体となります。先に説明したようにlabel要素をクリックするとcheckboxがオンオフできるので、実はこの黄色枠のどこかをクリックすれば表示・非表示が切り替わるようになります。ハンバーガーメニュー部分はメニュー表示・非表示ができる印として配置しているだけです。ハンバーガーメニュー自体は画像、アイコンフォント、CSSなどいくつかの対応方法がありますが、今回はハンバーガーメニュー自体の作り方は特に説明しないので好きな方法で対応して下さい。
checkboxがオフのとき見え方は以下のようになります。




赤枠で囲った部分の「.naviToggleTarget」は表示・非表示されるメニュー部分です。黄色枠で囲った部分は「.toggleOverlay」としています。この黄色枠部分は「.naviToggleTarget」と同様にcheckboxにより表示・非表示され、画面に表示される部分でメニュー部分(「.naviToggleTarget」の部分)以外をこの要素になるようにCSSで設定します。これにより、メニュー部分以外をクリックした場合、label要素の子要素である「.toggleOverlay」がクリックされることになり、結果としてcheckboxがオンからオフに切り替わるようになり、メニューが非表示の状態にすることができます。

細かい装飾部分を除いて、メニュー表示・非表示に関わるCSSの設定例は以下のようになります。

.naviToggleCkbox {
    /* checkbox要素は常に非表示 */
    display: none;
}
.naviToggleTarget {
    /* メニュー部分、通常は非表示にする */
    display: none;
}
.naviToggleCkbox:checked + .naviToggleTarget {
     /* checkboxがオンのとき、メニューを表示する  */
    display: block;
    z-index: 20;/* toggleOverlayより上に表示する */
}
.naviToggleCkbox:checked + .naviToggleTarget + .toggleOverlay {
     /* checkboxがオンのとき、メニュー以外の部分  */
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 10;/* naviToggleTargetより下に表示する */
}

checkboxがオンのとき、「.naviToggleTarget」と「.toggleOverlay」にz-indexを指定して、「.naviToggleTarget」を上に表示するようにします。「.naviToggleTarget」は「position: fixed;」にしてtopなどを指定することで、画面全体に表示される状態となります。
このCSSの設定により、メニュー部分の表示・非表示を制御することができます。後はお好みに合わせて装飾を設定して下さい。

まとめ

今回はCSSの設定でのメニューの表示・非表示を制御する方法の紹介でした。
JavaScriptが不要なので簡単に対応することができます。

以上

「売れるもマーケ 当たるもマーケ マーケティング22の法則」から学ぶ⑥ どのような姿勢で臨むか

今回はマーケティング本の名著に上げられる「売れるもマーケ 当たるもマーケ マーケティング22の法則」を読んでの我々なりの解釈を紹介します。今回で一通り全ての法則に触れることになります。

売れるもマーケ 当たるもマーケ―マーケティング22の法則

売れるもマーケ 当たるもマーケ―マーケティング22の法則

  • 作者: アルライズ,ジャックトラウト,Al Ries,Jack Trout,新井喜美夫
  • 出版社/メーカー: 東急エージェンシー出版部
  • 発売日: 1994/01/01
  • メディア: 単行本
  • 購入: 17人 クリック: 250回
  • この商品を含むブログ (61件) を見る
 

法則が示す心の中はどういうものか

本書の法則で示される全体イメージは以前提示しました。

今回は最後に触れていない4法則を見ていきます。主に触れる法則としては以下になります。

  • 第15章:正直の法則
  • 第18章:成功の法則
  • 第19章:失敗の法則
  • 第22章:財源の法則

どのような姿勢で臨むか

マーケティング活動していく中で、自社の製品・サービスのポジティブな面をどのようにして認知してもらうかというところに意識がいきますが、それだけではありません。

顧客の心の中に入り込む一番効果的な方法はまずネガティブ面を認めて、それをポジティブ要素に変えることだと聞けば、あなたは驚くかもしれない。
(第15章:正直の法則 P156)

自社の問題点を認めて、それを更に表明していくことが、ときには有利に働くことを理解することは難しいかもしれません。しかし、これがときには大きな効果があります。キューサイの青汁のCMでの「まずい!もう一杯!」はわかりやすい例でしょう。

あなたが顧客を納得させるためには、ポジティブな発言の正しさを証明して見せなくてはならない。ネガティブな発言の場合、証明は不要である。
(第15章:正直の法則 P157)

引き続きキューサイの青汁のCMを例にすると、まず「まずい!」というネガティブな面を強調してます。これは出演している八名信夫の表情と相まって、その「まずさ」については説明の必要がないでしょう。そして、すぐに「もう一杯!」とすることで、そのネガティブな面を覆すほど得られる効果がありそうだと、視聴者に思わせることに成功しています。「もう一杯!」はネガティブな場合にやらないこと(ポジティブな場合にやること)なので、ここがギャップとなり大きな効果が得られています。
ちなみにこのCMのセリフですが、アドリブでこのようになったようです。当初は別のセリフの予定が飲んだらあまりのまずさにそのセリフを言えず、社長に「まずい」に変えていいかと聞いて変わったというから驚きです。変えるのは良いがフォローを入れてくれとのリクエストで「もう一杯」が加わったとのことらしいのです。この話の凄いところは、変更を求められてその場でOKを出したキューサイ側です。自社のネガティブな面を素直に認める正直な姿勢で臨むことは、そう簡単ではありません。

成功と失敗の経験

成功した経験、失敗した経験がときには役に立ち、ときには足を引っ張ります。

人は成功すると、とかく客観性を失いがちになる。彼らはしばしば自己の判断を、市場のニーズと混同するのだ。
(第18章:成功の法則 P184)

成功するとエゴは大きく膨らみ、客観性を失っていくと言っています。ただエゴは新事業を行う時に大きな推進力ともなることもあります。エゴが問題となるのは、マーケティング活動に持ち込むときと言っているのです。
ポイントととなるの成功体験により客観性を失っているときとは、どのような状況かということになりそうです。マーケティング活動の何かを判断するときに、その判断の決め手となる要素が成功体験に基づいたものばかりのとき、客観性があるか確認が必要でしょう。

ミスを認めながらそれに対して何の手も打たないというのでは、あなたのキャリアに傷がつく。上手なやり方は早いうちに失敗を認め、損害を食い止めることだ。
(第19章:失敗の法則 P192)

たいていの会社は失敗していても、何とか継続させることを選択してしまうと言っています。早めに失敗を認め、活動に変更を加えたり停止することで損害が大きくなる前に食い止めることができると言っています。

これらの法則で指摘していることは、めずらしいものではありませんが、これを確実に実行することが非常に難しいです。
成功に関しては、小さなものも含めて成功を積み重ねて自信を深めることが多いようです。マーケティング活動においても同様で、この過程で客観性を失ってしまう。マーケティング活動では顧客にどう知覚されるかが重要であると、これまでも散々触れてきました。顧客にとってはこれまで成功していたかは関係ないのです。マーケティング活動の選択は、これまで成功したかではなく、なぜ成功したか、そして今回も当てはまるかといったことを確認できる仕組み作りが必要となるでしょう。
失敗に関しては、それを早く認めて損害を食い止めるというが、例えば事業の失敗を認めて撤退するとい規模の決断となると、いっきに難しくなる組織が大半でしょう。マーケティング活動においては、事前に基準を作って失敗ラインを決めておくことで判断する機会を作ることができます。ここで注意が必要なのはマーケティング活動は継続的なもので、最初は成功しているように見えたものが一定期間経過すると効果がないこともあります。定期的に計測し、経過に合わせた基準の設定が必要になりそうです。

最後の法則

これまでの法則では心の中がどうなっているかやどう働きかけるか、そしてどのようような姿勢で臨むかといったものでした。しかし最後はそれらとは別に財源の重要性について言っています。

マーケティングとは、顧客の心の中で争われるゲームである。顧客の心の中に入っていくには、資金が要る。そしていったん入り込んでも、そこに留まるにはまた資金が必要なのである。
もしあなたが、アイデアはありふれているけれど、100万ドルの資金を持ち合わせているとすれば、優れたアイデアしかない場合よりも遥かに成果を上げることできる。
(第22章:財源の法則 P214)

マーケティング活動を成功させるには、優れたアイデアがあれば後はマーケティング上の知識や支援だと考えがちなところにくぎを刺します。

金のないアイデアは全く無価値であるとはいえないにしても、まあ、無価値に近い。ともかくあなたは、マーケティング上の支援よりは金づるを探すことにアイデアを使うべきだ。マーケティングなど、そのあとでいい。
(第22章:財源の法則 P215)

マーケティング活動を継続させるには財源が必要になります。起業したばかりの会社では資金は常に問題となっていることが多いでしょう。一般的な会社の場合は、決まった年間予算の枠で対応することになる場合が多いでしょう。予算枠が決まっているために取れる手段が限られたり、1年以上の期間のかかる活動では予算の確保の仕方が問題になるかもしれません。いずれにしろ財源によりマーケティング活動に制限はかかることがあるので、マーケティング担当は財源についても自身の解決すべき問題として捉える方が良い組織もあるでしょう。

法則で書かれたことのその他考察

ポジティブな訴えに素早く移ることだ。正直であることの目的は、何も弁解をすることではない。その目的はあくまで、顧客を納得させるようなプラス面を提示することである。
(第15章:正直の法則 P161)

ネガティブな面を認めるのは、そのすぐ後のポジティブな面を強調したり効果的にするためにするのです。正直の法則を利用するときは、そこで認めるネガティブな面とポジティブな面を合わせて考えることが効果的です。

あるブランドが成功すると、会社はブランド成功の主な理由が、ブランドネームにあると思いがちである。そこで彼らはすぐさま別の商品を探してきて、それにそのブランドネームをくっつけるのだ。
(第18章:成功の法則 P185)

製品ライン拡張の背景の一つには、あるブランドの成功を主にブランド名にあると考えてしまう人がいることである。成功したブランドを作り上げた人は、そのブランド名に思い入れが強くなり客観性を失うことがあります、これだけ成功したブランド名を利用しない理由があるのかと。また、成功したブランドを引き継いだり利用できる立場の人は、新しいブランドを立ち上げる苦労より成功したブランド名を利用しようとする。
これらは顧客がどう知覚するかを考えるより、ブランド名を利用した方がマーケティング活動を行いやすいという自分たちの都合から発想したものであることが多く、結果として成功しない要因となる可能性があります。

マーケティング上の決定は、第一に、意思決定者のキャリア、第二に、競争状況ないし敵に与えるインパクトを念頭に置いて下される場合が多い。私的な配慮と公的な会社の事情との間には、抜きがたい攻めぎ合いがあるのである。
(第19章:失敗の法則 P193)

マーケティング活動を新しく始めたり変更を加えたりする場合、何らかのリスクが伴います。意思決定者や責任者のそのリスクを冒してまで、活動を決定できるかがポイントとなります。また決定することで意思決定者や責任者に利益がなければ、その決定をできないということがあります。例えば事業撤退などです。事業撤退を行う場合、それに伴う損失を計上することになります。赤字は絶対許されないと思っている責任者にとっては、撤退による損失で一時的にでも赤字になることは自身のキャリアにマイナスに働くと考えます。このため事業撤退をしても赤字にならないような、高収益のときに行われたり発表されることが多くなります。高収益になる前に撤退した方が損失が少なく済むと分かっていてもです。撤退が適切にできないとなると、新規事業の参入も足踏みしたり、調査時間を掛け過ぎて機を逸したりするでしょう。
自身の安定したキャリアはその組織の成否より優先されることがあります。意思決定者や責任者が組織にとって正しいと思える決定を行えるような、仕組み作りと組織運用が必要となるでしょう。

何事につけ、ケチりながら成功することはできないだろう。
成功するマーケッターは、常に先行投資を行なう。いいかえれば、彼らは収益をそっくりマーケティングに再投下する。このため、二、三年の間は利益を受け取らないのである。
(第22章:財源の法則 P220)

マーケティング活動は継続的な活動である場合が多く、更に先行投資が必要な場合もあります。このような場合は財源は一時的でなく、継続的に必要になります。
ただし継続することで大きな効果が得られることと、継続を止めることができないことは違います。割引キャンペーンなどのセールはその期間は良いですが、それを止めると売れなくなり、また実施しないといけない状態に陥ることがあります。広告宣伝でも同様に止めると売れなくなる状態があり、このような状態は効果的なマーケティング活動とは言えず資金の流出が続くので、見直す必要があるでしょう。

まとめ

今回は「売れるもマーケ 当たるもマーケ マーケティング22の法則」の主に取り組む姿勢に関する法則の紹介でした。これで一通り全ての法則に触れたことになります。今後は活用事例などがあれば、紹介する予定です。

以上

【関連するリンク】

www.prj-alpha.biz

www.prj-alpha.biz

www.prj-alpha.biz

www.prj-alpha.biz

www.prj-alpha.biz

ブログの運用状況

今回はこのブログの運用状況について、メモがてらまとめておきたいと思います。

アクセス数などの推移

今年の2月中旬から始めたブログについて、5月までの記事数とアクセス数の状況は以下になります。

年月 記事追加数 記事累積数 単月アクセス数 累計アクセス数
2018/02
10
10
40
40
2018/03
6
16
150
190
2018/04
8
24
251
441
2018/05
10
34
747
1,188

アクセスの大半はGoogle検索からです。BingやYahooといったところからもアクセスがありました。Bingはほとんど意識していなかったのですが、どうもアメリカからのアクセスで多いようです。日本では使っている人、あまりいなそうですが、アメリカだと使っている人が思ったよりいるんでしょうか。2、3月は記事数も少なかったので、ほとんどアクセスありませんでしたが、4月から1日に二桁アクセスする日が出始めて、5月に大きく増えました。ただ5月のアクセス増はGoogleアナリティクスで拾えないものもあり、謎の部分もあります。

アクセスの多かった記事

アクセスの多かった記事をいくつか紹介します。まずは、こちらAWS Certificate Manager (ACM) の記事です。
www.prj-alpha.biz
内容としては、Google Chrome の変更に向けてのACMのSSL証明書の対応についてです。4月末に Google Chrome が要件変更するので、それに関するAWSからのお知らせメールに関しての記事になります。まだ記事数も少なく、手探りの中で書いたものです。AWSからのメールの内容をGoogle検索しても、あまり出てこなかったので、自分で調べた結果を記事にしました。メールの件名で検索すると思われるので、そのあたりも含めた記事にしておくことでどうなるかというテストでもありました。結果、この記事へのアクセスが一番多くなりました。Googleで件名で検索すると、上位に表示され多くのアクセスへつながりました。4月末に再度、AWSから同じようなメールが来たのでその前後でも多くのアクセスがありました。AWSの対応が終わったので、この記事は今後はほとんどアクセスされないでしょう。ただこの記事によりGoogle検索でアクセスが増えた結果が影響しているのか、他の記事もGoogle検索からのアクセスが多くなった気がします。

続いてはこちら
www.prj-alpha.biz
こちらはプロジェクト管理ツールの宣伝にもなるようにと、ガントチャートについて初期に書いたものです。タイトルはGoogleで「ガントチャート」を検索していく中で、キーワードで「初めての」というのがあったの付けたものです。この記事に関しては現在も継続してアクセスがあります。ただ Search Console で見てもほとんど(not provided)となっていて、どの検索ワードで多くアクセスがあるかわからない状態です。
この記事には追加でいくつかのリンクを加えてるのですが、あまりクリックしてもらえない状況ですので、まだまだ工夫が足りないようです。

まとめ

今回はブログの運用状況についてでした。
運用状況に関しては定期的に報告していく予定です。

以上

【スポンサーリンク】