エンジニアがベンチャーキャピタルと面談(資金調達)する時のコツ

エンジニアであれば、プロダクトを開発してベンチャーキャピタルに資金調達を依頼する機会が何度かあるであろう。
今日私はVCと面談した。その経験を元に、大事なことと感じた内容を整理したい。

■1.事業の拡大
これが全てだと断言して良い。ベンチャーキャピタルが興味を持っているのは「どうやって事業を拡大するか」の一点に尽きる。もちろんIPOを見据えての事だが、Buyoutでも数十億以上で売れないと意味がないらしい。
つまり、スケールしなければ、全く興味がなく、「equityで調達する意味ない」と言われる。
よって、どうやって事業を拡大するかを説得できるように準備して面談に望む事。

■2.課題・悩み事
どういうことに悩んでいるか、面談で言ってみると良い。それに対して、ベンチャーキャピタリストの見解を答えてくれる。

■3.技術的なアドバンテッジについて
VCはコンサルに近い。相手によるかと思うが、どういう技術を使っているかなどは、聞かれたら答える程度で良い。
企画や営業と話す時のように、噛み砕いで話す姿勢を見せた方が良いように思った。
それよりもビジネスとして競合よりもどう優れているかを説明しなければいけない。

■4.質問の準備
10個くらい質問を準備して面談に臨んだが、全く意味がなかった。
就活の面談ではないので、「相手に興味を示す」というのは全然求められていないようだった。
(投資で重視されていること、サポート体制、何故VCをやっているのかなど色々聞こうと思っていたが、それはナンセンスな質問だと悟った)

■5.実績のアピールが重要
サービスに関する実績をアピールすることが大事。
「どういう実績があるからこのサービスを作っている」ということを上手く説明するのが大事だ。
VCは、何故そのサービスをやっているかについては興味を持っている。

ということで、私は面談は撃沈したのだが、参考にして欲しい。
ベンチャーキャピタルの面談では、開発プロジェクトの面談などと違って、ゼロから1まで全て開発したとか、どの機能の開発に工夫しているなんてことは一切聞かれない。

——-
追加情報1
■6. ストーリーが大事
営業戦略、売上をどう立てていくか

■7. 売上10億立てないと駄目
上場基準として10億円ないと上場できない

■8. バリエーション
リード投資もしくは事業会社にバリエーションを作ってもらう

——-
追加情報2
■9. 組織体制
強いエンジニア、営業スタッフを揃えているか重視している

■10. ユーザヒヤリング
ニーズをきちんと聞くこと
ヒヤリングの仕組み作りを検討する

■11. 組織的な強みを作ること
競合にはない強みを持つこと

■12. 事業計画の立て方
事業計画の作成能力は大事
初年度などは赤字の方が見栄えが良い
売上が取れないことが最も多く致命的な問題

■13. リプレイス
システムのリプレイスの売り方を考える

自然言語処理のアプリケーションを考える

自然言語処理を用いたサービスを検討する。国内で最も見かけるのはチャットボットの開発だが、チャットボット自体は、ホテルのHPなどで頻繁に見かけるが、問い合わせとして自分自身が使おうと思わないので、それを開発したいと思うモチベーションがイマイチ湧いてこない。
自然言語処理というと形態素解析を真っ先に思い浮かべるが、企業内でのニーズは、社内文章の検索やカテゴライズといったもので、営業秘密もあるだろうから、中々表に出て来にくいし、それ自体も人が管理できることなので、あまりニーズがあるとは考えられない。
文章を使う業界、すなわち出版業界での校閲を自動化というのも考えたが、それにニーズがあるともあまり思わない。
学習なら、RSS, Twitterが無難そうだが、Twitterは過去作ったことがある。
業界ニーズに特化した

### 法人全般サービス
ホームページ:チャットボット、問い合わせ回答
営業:見込み客の抽出
R&D:メディア記事解析、検索エンジン
社内文章:カテゴライズを自動化、文章構造化、文章の極性判定、検索エンジン、帳票からの抽出

### 業界のサービス
コールセンター:対応評価、会話ログのマイニング、音声認識
広告:校正校閲審査
工事:類似する施工計画書を検索
法務サービス

### 個人サービス
SNS:Twitter/instagram:感情情報、投稿内容分析、特定のキーワードを見つける
RSS:カテゴライズを自動化、文章構造化

### Google, Amazon, Facebook, Microsoft
翻訳
検索

う〜む、音声認識もやりたいな。
まずはRSSから攻めるか

[PHP 7.4.11] 消費税の1円以下の端数処理を考える

財務省の見解

「税抜価格」に上乗せする消費税相当額に1円未満の端数が生じる場合がありますが、その端数をどのように処理 (切捨て、切上げ、四捨五入など)して「税込価格」を設定するかは、それぞれの事業者のご判断によることとなります。

え? 要するになんでもいいの?
phpで計算するとき。

$price = 5678;
echo $price * 0.1;

-> 567.8

$price = 5678;
echo floor($price * 0.1) . "<br>"; // 切り捨て
echo ceil($price * 0.1) . "<br>"; // 切り上げ
echo round($price * 0.1) . "<br>"; // 四捨五入

567
568
568

切捨て、切上げ、四捨五入 どれでも対応はできるようです。って当たり前か。

[Python3.8.5] Stripeを試してみたい

Stripe手数料:3.6%
-> smartHR, Booking.com, slack, shopify, freee, cookpad
-> Ruby, Java, Scala and Javascript

### Stripeの特徴
– 初期費用がかからず、事前審査不要
– 少額の場合は他社より料率・振込手数料が安価
– 決済画面への遷移がなくて決済フォームもシンプル
– 顧客へ返金時に返金手数料はかからないものの、元の決済手数料は一切返金なし

### 実装方法
自前でサーバを用意するパターン(custom payment flow)と、ドロップインソリューション(prebuild checkout page)といって Stripeが用意した決済画面を利用する方法がある。

docs: https://stripe.com/docs/payments/accept-a-payment?integration=elements

$ python3 –version
Python 3.8.5
$ pip3 install stripe
$ pip3 install flask

server.py

import os
from flask import Flask, jsonify, request

import stripe

stripe.api_key = 'sk_test_***'

app = Flask(__name__,
			static_url_path='',
			static_folder='.')

YOUR_DOMAIN = '192.168.33.10:5000'

@app.route('/create-session', methods=['POST'])
def create_checkout_session():
	try:
		checkout_session = stripe.checkout.Session.create(
			payment_method_types=['card'],
			line_items=[
				{
					'price_data': {
						'currency': 'usd',
						'unit_amount': 2000,
						'product_data': {
							'name': 'Stubborn Attachments',
							'images': ['https://i.imgur.com/EHyR2nP.png'],
						},
					},
					'quantity': 1,
				},
			],
			mode='payment',
			success_url=YOUR_DOMAIN + '/success.html',
			cancel_url=YOUR_DOMAIN + '/cancel.html',
		)
		return jsonify({'id': checkout_session.id})
	except Exception as e:
		return jsonify(error=str(e)), 403

if __name__ == '__main__':
	app.run(host='0.0.0.0')

success.html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Thanks for your order!</title>
	<link rel="stylesheet" href="">
</head>
<body>
	<section>
		<p>
			We appreciate your business! If you have any questions, please email <a href="mailto:info@hpscript.com">info@hpscript.com</a>.
		</p>
	</section>
</body>
</html>

cancel.html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Checkout canceled</title>
	<link rel="stylesheet" href="">
</head>
<body>
	<section>
		<p>
			Forgot to add something to your car? Shop around then come back to pay!
		</p>
	</section>
</body>
</html>

checkout.html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Buy cool new product</title>
	<link rel="stylesheet" href="">
	<script src="https://polyfill.io/v3/polyfill.min.js?version=3.52.1&features=fetch"></script>
	<script src="https://js.stripe.com/v3/"></script>
</head>
<body>
	<section>
		<div class="product">
			<img src="https://i.imgur.com/EHyR2nP.png" alt="The cover of Stubborn Attachments">
			<div class="description">
				<h3>Stubborn Attachments</h3>
				<h5>$20.00</h5>
			</div>
		</div>
		<button id="checkout-button">Checkout</button>
	</section>
</body>
<script type="text/javascript">
	var stripe = Stripe("pk_test_***");
	var checkoutButton = document.getElementById("checkout-button");

	checkoutButton.addEventListener("click", function(){
		fetch("/create-session", {
			method: "POST",
		})
			.then(function (response){
				return response.json();
			})
			.then(function (session){
				return stripe.redirectToCheckout({ sessionId: session.id });
			})
			.then(function(result){
				if(result.error){
					alert(result.error.message);
				}
			})
			.catch(function(error){
				console.error("Error:", error);
			});
	});
</script>
</html>

$ ls
cancel.html checkout.html other server.py style.css success.html

$ python3 server.py

ん? strip.jsはhttpsでないとダメっぽい。。

[paypal] APIを使ってみる

Basic Integrationに沿ってやっていきます。
https://developer.paypal.com/docs/checkout/integrate/#

– Render the PayPal Smart Payment Buttons
– Set up a one-time transaction and immediately capture the funds into your account
– Test the button and take it live on your site

まず前提として、paypalアカウントが必要。
paypalアカウントでdeveloperサイトにログインする。
https://developer.paypal.com/developer/applications

create appとすると、paypal account, client ID, secretが生成されるのでメモしておく。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script
    src="https://www.paypal.com/sdk/js?client-id=${clientId}"></script>
    <div id="paypal-button-container"></div>
    <script>
		paypal.Buttons().render('#paypal-button-container');
    </script>
</body>
</html>

$ python3 -m http.server 8000

やばっ

valueは$USっぽいです。

<script>
		paypal.Buttons({
			createOrder: function(data, actions){
				return actions.order.create({
					purchase_units: [{
						amount: {
							value: '0.01'
						}
					}]
				});
			},
			onApprove: function(data, actions){
				return actions.order.capture().then(function(details){
					alert('Transaction completed by ' + details.payer.name.given_name);
				});
			}
		}).render('#paypal-button-container');
    </script>

productionではbusinessアカウントが必要っぽい。
$0.01がカゴに入ってます。

なるほど、JSで管理するんやな、日本はpaypalは普及してませんが、イメージは掴めました。

アプリのシリアルコード問題

– appleがappのプレゼントとしてシリアルコードの配布を禁止
– それによって、事前登録によるアイテム配布などができなくなった
– 事の発端はモンストのシリアルコード配布終了

うーん、奥が深い

SLA (Service Level Agreement)

SLA stands for Service Level Agreement, which means agreement service level, service quality assurance, etc. on the level of service(definitions, ranges, contents, achievement targets, etc.) tied between providers and their users it will be. This is an indication of how much quality can be guaranteed to the contractor by the service provider.

SLAs are often used mainly for communication service, cloud services, rental servers, etc. We define guarantee items such as definition of service, communication speed, upper limit of usage stop time, etc. When the quality of service falls below the guaranteed value of SLA, reduction of usage fee etc will be done.

In many cases, this reduction is often limited to the usage fee, and it does not include lost profits etc. that the service could not be used properly. In principle, the specified item can be quantitatively measured, and the upper limit, the lower limit, the average, etc. are expressed numerically, and the measurement method etc. are also defined at the same time.

As a user, it is an index to measure the availability and stability of the service, so it is a good idea to check it when selecting a service. Although the SLA values presented by each company vary, it can be seen that there are large differences when looking at “stop time”.