アウトプットを頑張る

初めてのプログラミング学習期間中の記録と、日頃読んでいる本をメモのアウトプットをがんばります。

【読書】THE MODEL 感想まとめ

THE MODEL まとめ感想

f:id:yuma6128:20220116123233j:plain

1.Why THE MODEL

  • 会社の戦略や文化理解のため,改めて読みたくなった。
    2年くらい前に読んだときは、カスタマーサクセス部分を中心に読んでいたため改めて全体を読みました。
  • 学びたいこと
    • SaaSのビジネスモデルの再現性のある「プレイブック」としてインプットをいていく。
      • 愚者は経験に学び、賢者は歴史に学ぶ
    • 自分ひとりで経験できることは限りがあるため、他者の経験から学ぶことで自分のものにし大きな価値につなげる。
    • 営業方法としてマーケティングインサイドセールス(IS)→セールス→カスタマーサクセス(CS)のそれぞれの役割の把握
    • テクノロジー、ITツールを広め、その良さを理解してもらうためにどういったアプローチがよいかを見つける。

2.本書の構成

  1. 第1部 アメリカで見た新しい営業スタイル
  2. 第2部 分業から共業へ
  3. 第3部 プロセス
  4. 第4部 3つの基本戦略
  5. 第5部 人材・組織・リーダーシップ

3.第1部〜第2部

  • マーケティング ⇒ IS ⇒ セールスによる分業体制による営業方法で、そのプロセスをシステムで管理していること。
  • 分業によるメリット
    • 同じリズムの仕事に集中ができ、効率が上がること。
    • 各プロセスの部門毎のパフォーマンスをチェックでき、ボトルネックがどこか判断しやすく、結果的に対策が打てる。
  • 新規リードは永遠に増え続けることはない ⇒ だからこそリサイクルの重要性。
  • あらゆる接点において顧客体験を高め、エンゲージメントを深める必要がある。
  • グループに分かれていても、共同の作業をすることで、達成可能な共通の目標を掲げることで敵対を防ぐ。そのために有効なのが「逆の流れ」をつくること。

    4.第3部

    マーケティング


  • マーケティング部門はコミュニケーションの指揮者として、機能が必要。
  • 商談失注後も、再度リードの育成サイクルに戻すことでリードをリサイクルの箱に入れておく。
  • マーケティング・コミュニケーションの目的は、見込み客を次のステージに進めること。


IS


  • 営業にパスする供給量を調整が必要。
  • 限られた時間の中で効率よくアプローチすることが求められる。
  • リサイクルリードの定期的な掘り起こし。


セールス


  • 顧客のビジネス課題の認識が必要。
    • 顧客のビジネス課題(ビジネスイシュー)
    • 問題点(プロブレム)
    • 解決策(ソリューション)
    • 効果(ベネフィット)


CS


  • CSは会社の文化
  • 顧客とベンダー側、双方の利害が一致した部署かつ、競合他社との差別化につながる。

    5.第4部

  • 市場戦略ではアクセルを踏みすぎて失敗した企業より踏むべきときに踏まないまま失敗した企業のほうが圧倒的に多い。
  • 上記はただお金を使うことではなく、潜在市場の規模、獲得可能なマーケットシェア、競合など様々な要因を考慮して中長期の戦略を決めて実行のスピードを上げること。
  • 勝つためのセオリー(ビジネススクールなどで教えられている経営理論を軽視せず勉強)をもったうえで判断をする。
  • 「ヒト・モノ・カネ」のリソース配分を決める。
  • プロセスを因数分解し、生産性の最大化のためのレバーを探す。
  • 「何をみるか」を強く意識をする。ex.商談フェーズの進捗

    6.第5部

  • 成功する会社とそうではない会社の差は「実行」で差がつく。
    • 経営は実行 著ラリー・ボシディ、ラム・チャラン
  • 自分一人でやったほうが早いと考える人は自分一人のキャパシティ以上に成長しない。一緒に働くメンバーの良いところを見つけつなぎ合わせることを意識する。
  • 人を成長させるのは、常に原状を上回ろうとする向上心。

【プログラミング学習】JavaScriptの関数宣言

JavaScriptの様々な関数定義

f:id:yuma6128:20220111072108j:plain

関数宣言

  • 関数のときに紹介した定義する方法です。

ingkiym926.hatenablog.com

function 関数名( 引数 ) {
 // 関数内の処理
}

こちらの関数宣言はRubyと共通部分も多かったと思います。
JavaScriptでは関数の定義のために、別の方法があります。
今回は、関数定義方法である関数式を紹介します。

関数式

関数式と、関数宣言の違いは記述様式です。

// 関数宣言(これまで)

function 関数名( 引数 ) {
 // 関数内の処理
}

// 関数式 (今回)
 変数 = function( 引数 ){
 // 関数内の処理
}

関数宣言と関数式の違い

  • 関数宣言と関数式は読み込まれるタイミングが異なります。
    下記で違いを説明いたします。
hello()

const hello = function(){
 console.log('こんにちは')
}

f:id:yuma6128:20220113074443p:plain となり、Uncaught ReferenceError: hello is not definedat :1:1 というエラーが1行目の時点で関数helloが定義されていないため表示されます。
関数宣言を用いた場合

hello()
function hello(){
console.log('こんにちは')
}

f:id:yuma6128:20220113074832p:plain
と表示されました。
JavaScriptでは関数宣言は先に読み込まれるために、このような事象が発生します。
一方で関数式であれば先に読み込まれることはありません。

【プログラミング学習】JavaScriptの戻り値

プログラミング学習

f:id:yuma6128:20220109151701j:plain戻り値
- Rubyではメソッドにおける最後の戻り値が、戻り値として処理されました。

def calc(num1,num2)
 num1 * num2
end

num1 = 5
num2 = 6
puts calc (num1,num2)

# 戻り値は30が表示
  • 一方JavaScriptでは、関数の戻り値をreturnを用いて明示する必要があります。

    returnを用いない場合

 function calc(num1,num2) {
 num1 * num2 
}

const num1 = 5
const num2 = 6
console.log(calc(num1,num2))
# 戻り値は出力されない

上記の場合は、戻り値が表示されないため下記のように記述します。

 function calc(num1,num2) {
  return num1 * num2 
}

const num1 = 5
const num2 = 6
console.log(calc(num1,num2))
30

と30が表示されれば、成功です。

【プログラミング学習】JavaScriptの関数

f:id:yuma6128:20220106072708j:plain

JavaScriptの関数

  • JavaScriptの関数とは、Rubyでいうところのメソッドのことを
    関数と呼びます。
    Rubyでメソッドを定義する際はdef メソッド名 ~ endと記述をしていました。
    JavaScriptでは、function 関数名( ) { 処理 }と記述することで関数を定義します。

    ◎function

  • functionを用いることで、関数を定義することができます。
    functionに続けて関数の名前を記述します。 そして( )のなかに引数を、{ }の中に処理を書きます。
function 関数名 (引数)  {
 // 処理
}

下記のコードをコンソールに記述し、実行します。

function sayHello(){
console.log("Hello World!")
}

sayHello()

f:id:yuma6128:20220106074126p:plain と表示されていれば成功です。

【プログラミング学習】JavaScriptの配列の繰り返し処理

■プログラミング学習 f:id:yuma6128:20220104072921j:plain ◎forEach関数
forEach関数とは、配列に格納されている要素の1つひとつに対して
繰り返し処理を行う場合に用いられる関数です。

配列.forEach( function(value){
 // 処理の記述
})

上記のように、forEach関数の引数に、関数(function)を指定することで、実行できます。
指定した関数(function)に引数を定義することで、その引数には配列の要素が入ります。
上記の例では、引数はvalueになります。
添字0から最後の要素まで繰り返すたびに、引数は各要素に置き換えられます。

prefecture = ["tokyo","osaka","fukuoka"]
prefecture.forEach( function(value) {
 console.log(value) //配列に格納されている要素の数だけ実行される
})

上記コードをコンソールで実行をすると、すべての要素が順番に出力されます。
tokyo
osaka
fukuoka
と表示されます。
引数valueには、1回目の繰り返しで、「tokyo」、2回目 で、「osaka」3回目で、「fukuoka」が代入されます。
そして、要素の数だけ繰り返し処理を実行し、この繰り返し処理は終了します。

【プログラミング学習】JavaScriptの条件分岐

■プログラミング学習 f:id:yuma6128:20211231095449j:plain

◎条件分岐 JavaScriptで条件分岐をする際には、Ruby同様if文を使います。

if (条件式1){
// 条件式1がtrueのときの処理
} else if (条件式2) {
// 条件式1がfalseで条件式2がtrueのときの処理
} else {
// 条件式1も条件式2もfalseのときの処理
}

Rubyのif文の記述と異なる点としては下記の3点になります。
1.条件式は ()でくくること

2.条件式の後に続く 波括弧{ }内の処理が実行されること

3.複数条件を指定する場合は、else のあとに続けてif文を記述すること

const num = 80

if (num % 20 == 0 ){
console.log(`${num}は4と5の倍数です`)
} else if (num % 4 == 0 ) {
 console.log(`${num}は4の倍数です`)
}else if (num % 5 == 0 ){
console.log(`${num}は5の倍数です`)
} else {
console.log(`${num}は4の倍数でも、5の倍数でもありません`)
} 

上記をコンソールで記述して、Enterを押すと、
80は4と5の倍数です。
と結果が出てきます。

【プログラミング学習】JavaScriptの基本的な文法

■プログラミング学習

f:id:yuma6128:20210829071916j:plain

◎文字列の中に変数を含める方法

前回の内容で、変数の定義、「let」「const」「var」についてまとめました。
次は変数に値を定義する際に、文字列の中に変数を含める方法になります。
1.+ を用いてそれぞれの値を連結させる

2.テンプレートリテラル

◎テンプレートリテラル

JavaScriptの構文で、バッククォート(shift + @ )で囲むことで、文字列内に挿入することができます。

テンプレートリテラルを使用すると以下が可能になります。

・文字列の中に変数を埋め込むことができる

・改行をいれることができる

・HTMLの要素を作成するこができる

 

テンプレートリテラルを使用した場合と、していない場合を見比べると以下のようになります。

使用していない場合

f:id:yuma6128:20211229074010p:plain


使用している場合

f:id:yuma6128:20211229074232p:plain

テンプレートリテラルを使用することで、記述量が少なくなっています。
開発現場では、記述料の大小がプロダクトの質に大きな差を生むことになるため、
テンプレートリテラルを積極的に使用することを考える。