2020年3月4日水曜日

Startup weekend in cebu

こんにちは!B20の杉山です。
ブログ書いたの初めてで、日本語もおかしいところもあると思いますが許してください。
あと、いま夜中なのでめっちゃ眠いです。

2020/02/20 - 2020/02/25 の間で、Startup weekendに参加してきました!

まず、Startup weekendとはなんでしょう?

Startup weekendとは?

“スタートアップウィークエンド(SW)”は、金曜夜から日曜夜まで54時間かけて開催される、「スタートアップ体験イベント」です。週末だけで参加者は、アイディアをカタチにするための方法論を学び、スタートアップをリアルに経験することができます。開発者やビジネスマネージャー、アントレプレナー、デザイナー、マーケター等、さまざまなスキルの人々とグループを組み、アイディアをカタチにしていきます。

SWは起業家の出発点であり、発祥は2007年、アメリカのシアトル。その後、急速に世界中へ広まりました。これまで世界150カ国以上、1,200都市以上にて4,500回以上開催され、なんと23,000以上のスタートアップがここから生まれました。全世界で通算40万人以上が参加してきたイベントらしいです。


で、このイベントがCebuで開催されたので、細野研究室の立石くんと一緒に参加してきました!

最後に自分たちのプロトタイプや機能説明載せます!!!!!!!!!!!!!!

 

1日目(02/20)

現地に前日入りしました。


2月の気温のセブはベストシーズンで最高気温30度最低気温24度ととても過ごしやすかったです。

1日目は、セブで一番大きいSMシーサイドというショッピングモールに行き、ショッピングを楽しみました。

夜は、ITパークにあるナイトマーケットというところでご飯を食べました。


屋台がたくさんあり、お酒やご飯も美味しいのでのでセブに行ったらぜひ行ってみてください!

 2日目(02/21)

2日目は、夕方からイベントが始まるのでお昼に海へ行きました!!

空港から一番近い有名なマクタンニュータウンビーチです!



めちゃめちゃ楽しかったです。
もし水着忘れても、250ペソ(約500円)で安く買うことができるので安心ですね!

さてさて、いい感じに日も暮れSWの会場(iiofice)に向かいました。


会場に着いてみると、大勢の人が居ました。
参加している人数は50名以上いるらしく、とても驚きました。

イベントが始まり、みなさんおもしろいアイデアをピッチしていきます!
自分と立石くんはチキってピッチしませんでしたw (立石くんはしらないけどw)

そして、自分と立石くんは「ヒートマップで治安状況が一目でわかる海外治安情報アプリを作りたい!」とピッチした方のアイデアに乗っかり、その人に付いていくことを決めました!!
理由としては、アイデア自体が想像しやすく面白そうだったので(私個人の意見)!


自分たち以外にも、最強のデザイナーの方々や有名な企業で働いているエンジニアの方々や某企業の代表取締役も加わり、合計7人の最強のチームとなりました。

その他は、アートだったり、フィリピン特有の乗り物”ジプニー”を軸におきビジネスを考えるチームがあり、合計で8チームで戦うことになりました。


2日目 (02/22)

 2日目は9時から開始しました。

自分たちのチームは、ヒアリングを行う3人とビジネスモデルやマネタイズなどを深堀りする4人に分かれました。

ヒアリングで検証することは、「このサービスにニーズがそもそもあるか」です。
 そこで、観光客が沢山集まる近くの大型ショッピングモールに行きヒアリングを行ってきました。

ショッピングモール
日本人 31名
オランダ人 1名

結果、このサービスはとてもニーズがあることがわかりました。
4時間くらいしてました。

 そして、一旦会場に帰り、みんなでミーティングを行いビジネスモデルやプロトタイプを作成しました。


結局、夜中の3時くらいまでずっと 明日のヒアリング内容を考えたり、プロトタイプ作成などを行ったりしてました・・・

3日目(02/23) 発表当日

 3日目の16時30分から最終ピッチが始まるので、それまでやれることを全力でします。

3日目は、ヒアリングから始まりました。
観光地に向かい、昨日作成したプロトタイプを見せて色々なことをヒアリングします。

今回のヒアリングで検証することは、マネタイズ面です。「このアプリを1日100円だったら利用したいと思うか」「一番いいと思った機能はなんなのか」など。。。

有名な教会
途中に合ったセブンw


日本人17名
アメリカ人1名

結果、1日100円で利用してもいいと言ってくれた方は、2割ほどいました。


そして、十分なヒアリングができ、時間も迫ってきていたのでみんなでピッチの会場へ移動しぎりぎりまでCMや資料を作成しました。

そして、最終ピッチ!!!!!!!!!!
自分たちチームは4番目です。


 どのチームも、3日間しか無かったのに煮詰まったビジネスモデルをピッチしていき、すげえええってなってました。しかもとてもユニークなアイデアばっかでおもしろい!

そして、ついに私たちのチームのピッチの番に・・・
まあ、リーダーしか話さないんですけどね!

とても、話すのが上手で時間もぴったしに終わり自分的には完璧でした!

 全チームのピッチが終わりついに結果発表へ・・・


はじめに3位のチームが呼ばれました。
 アートを題材にしビジネスモデルを考えたチームでした。


次に、2位のチームが呼ばれました。



そう!
私達のチームでした!!!!!!

1位では無かったですが、とても嬉しかったです!!!!!!!!!!

評価ポイントはデザイン性とビジネスアイデアらしいです。

課題としては、マネタイズの部分が弱かったことです。

このアイデアを考えてくれたリーダー、CMやプロトタイプを作成してくれたデザイナーの方々、ビジネスアイデアを深堀りしてくれた他の方々にとても感謝です!!!


次に1位のチームが呼ばれました。
このチームは、「世界一綺麗な英語が話せると言われるフィリピン人と日本の塾をつなげるプラットフォーム」をピッチしたチームでした。

アイデアがすばらしく、ピッチの資料をとても見やすかったです。

まとめ

今回のSWは、前回参加したSWに比べ物にならないくらい勉強になりました(私個人の意見)。
理由としては、社会人から学ぶスタートアップの進め方だったり、本物のデザイナーさんがチームメンバーにいたからこそ、デザインの大切さを知ることができました。
デザイナーがものすごく重要だと感じた。

そして、海外での開催だったこともあり、英語でのヒアリング もしました。なかなかできない経験なのでとても刺激になりました。

SWは日本でもたくさん行われているので、是非参加してみてください!
起業に興味なくても、サービスを1から作っていくことの楽しさを知ることができます。


 自分たちのチームのアイデア

「ひと目で地域の安全・危険エリアがわかる地図アプリ」
 Travel Safer

作ったCMやビジネスモデルの詳細については控えさせていただきます。








2020年3月1日日曜日

PHPのセキュリティ対策3選

はじめまして!
B20の自己推薦で配属されたy_takaya(高谷)です。

本日より「春のAdventCalendar2020」と称して、B20生がバトンリレーで記事を投稿していきます!
初日は学年リーダ(らしい)の私からです。




本日私が紹介するのは、誰でも単語は聞いたことあるだろう「PHP」についてです。
PHPは「Personal Home Page tools」の略だかと言われています。

私はPHPをプログラミング初心者であるあなたにおすすめしたいです。
PHPのメリットはWebとの親和性の高さ、データベースとの接続の容易さだと思っています。
他にもPHPはコンパイルする必要がないため、アイデアをすぐに反映しやすいところもメリットだと思っています。

導入

懇切丁寧に書いてましたが、自分の環境に合わせてどこかのQiitaを見ながら導入した方が確実だと思ったので割愛しました。

セキュリティ対策


ということで今回私が解説するのはセキュリティ対策についてです。

セッション固定化攻撃を防ぐ

URIによるセッション管理を禁止して、セッションIDを変更します。

攻撃者がセッションIDを指定してしまう攻撃で、PHP5.3以前では簡単な形式チェックのみでしたので受け入れられてしまいました。
対策として、URIによるセッション管理を禁止します。

```php.ini
session.use_only_cookies = 1
```

そして、セッションIDは定期的にリジェネレートしましょう。
session_start()関数でセッションを開始した後に、リジェネレートを行うには次の関数を呼び出します。

```
session.regenerate_id(TRUE);
```

引数は、リジェネレート前のセッションIDを削除するかどうかです。削除しましょう。意味がなくなります。

SQLインジェクション対策


SQLインジェクションとは意図しないSQL文を実行させる攻撃です。
例えば、ログインフォームなどで、ログインIDとパスワードを入力してログインをします。
ここで対策を行なっていないと、ユーザ名に「username' --」のように入力した時に、パスワードの入力なしで通ってしまう可能性があります。
これはSQLのコメントアウト(--)を利用した抜け穴ですね。
この時実行されるSQL文はこうなります。

```SQL
SELECT * FROM user WHERE user='username' -- 'AND password=''
```

これをさせないために行うのが、プリペアドステートメントです。
プリペアドステートメントは、複数のデータを一括登録する場合に、用いるSQL文は同じで、データのみが異なる場合に用いるものです。
SQL文の実行に先立って、SQL文の構文解析、コンパイル、最適化が行われ、未対策の時からセキュリティ性が向上するだけではなく、処理速度も早くなることもあります。
ここでは、最初にSQL文を準備します。そしてデータ部分には「?」を入れましょう。

```SQL
SELECT * FROM user WHERE user=? AND password=?
```

次に、?への割り当てを行います。

```PHP
if ($stmt = mysqli_prepare($link, $sql)) {
// 変数のバインド。変数の型がどちらもs(string)であることを記述する
mysql_stmt_bind_param($stmt, 'ss', $_POST['id'], $_POST['password']);
// クエリの実行
mysqli_stmt_execute($stmt);
// リザルトの転送
mysqli_stmt_store_result($stmt);
}
```

私はPDOを使用しているので、次みたくしてます。

```PHP
$stmt = $pdo->prepare("INSERT INTO user(user, password ) VALUES (?, ?)");
$stmt->execute(array($_POST['id'], $_POST['password']));
```

または

```PHP
$stmt = $pdo->prepare("INSERT INTO user(user, password ) VALUES (:user, :password)");
$stmt->bindParam(':user', $_POST['id']);
$stmt->bindParam(':password', $_POST['password']);
$stmt->execute();
```

楽しくなって来ちゃいましたね。

NULLバイト攻撃

NULLバイトを使ってプログラムを誤作動させる攻撃です。
NULLバイトは「¥x00や¥0」のことで、文字列の終端と判断してしまう関数が存在します。
例えば正規表現を行う場合にバイナリセーフでないereg()関数を使ってしまうと、URIのファイルの後に「?u=+x-///」と入力することによって、「」以降の正規表現をチェックしません。
あんまりない気がする(個人では対策したことない)実装ですが、調べると他にも色々な対策方法が出てきます。

とくにPHPはバージョンによって様々な脆弱性の対策が施されてきています。
もしかしたら、今紹介した中でも、わざわざ対策する必要がないものを出てくるのではないかと考えています。
ぜひ、参考にしてみてください。