プログラマー経営者 列伝 -...

18
プログラマー経営者 列伝 日紫喜 光良 東邦大学理学部情報科学科 1 2018.6.15 @土浦第二高等学校

Transcript of プログラマー経営者 列伝 -...

Page 1: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

プログラマー経営者列伝日紫喜 光良

東邦大学理学部情報科学科

12018.6.15@土浦第二高等学校

Page 2: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

Questions

•1.それぞれの起業にとっての中心的アイデアは何でしょうか?

•2.それぞれの起業家のプログラミング体験はどのようなものだったでしょうか?

•3.それらの中心的アイデアの着想と実現とには、起業家たちのプログラミング体験がどの程度影響していると想像しますか?

•4.皆さんは自分の将来やりたいこととプログラミングとをどのように関係させたいですか?

2

Page 3: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

世界的に著名なプログラマー起業家たち

Mark Zuckerberg

1980 1990 2000 2010 2018

Kevin Systrom

Tobias Lutke

Larry Page

1970

1973

1984

1983

1980

1996 PageRank アルゴリズム1998 Google 創業

ラリー・ペイジ

マーク・ザッカーバーグ

ケビン・シストロン

トビアス・ルトケ

2003 Facemashゲーム2004 Facebook 創業

2008X-Pro IIフィルター

2010 Instagram 創業

2004オンラインショップ開発

2006 Shopify 創業

1979

1994

1995?

1986

2005

1992 NCSA Mosaic

1990 WWWインターネット史

1985 FTP

1983 TCP/IP

参考:Bill Gates

1955生 1981 MS-DOS 1990 Windows 3.0

1983 Microsoft Word

参考:Steve Jobs (1955-2011)✝

1984 Macintosh 2007 iPhone2001 iPod

1995 Windows95

3

Page 4: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

Larry Pageと初期のGoogle• 1979 (6yo): 「パーソナルコンピュータ」(PC)で遊び始める

• 当時のPCを使うためにはプログラミングは必須。

• 1996 (23yo): Stanford大学のコンピュータ・サイエンスのPh.D(博士)コースに入学• 指導教員はTerry Winograd

• コンピュータに人間をどれだけよく「理解」させられるかを追求(Human Computer Interaction)

• 研究テーマ:World Wide Web (WWW)の数学的構造• 大規模なWebサーチエンジンの開発のために解明が必要だと考えた。• グラフ理論を利用

• 大学の中に全世界のWebページを収集・蓄積するサーバーを構築

• 1996: PageRank アルゴリズム

• 1998(25yo): Sergey BrinとともにGoogleを創業• 2人の投資家から100,000 USドルの投資を得る

4

Page 5: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

大規模なサーチエンジン実現のための課題• 大量のWebページを収集すること

• できるだけ網羅的に• できるだけ頻繁に

• Webページを「索引付け」(indexing)すること• 単語→Webページの巨大な表をつくる• 高速に行う必要がある

• 検索質問文(query)から、該当するWebページを高速に取得(retrieve)すること

• 取得したWebページを適切にしかも高速に並べ替えること。• PageRankをはじめとする200あまりの指標をGoogleは使っているらしい。

5

Page 6: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

PageRank: Webページの重要性をランク付けするための指標

6

リンク

Webページ

リンクを通じて、WebページのPageRankが集まる→間接的にたくさんのリンクが集まる「上位」のページほど、PageRankが高くなる。

参考:Brin S, Page L. The anatomy of a large-scale hypertextual web search engine. Computer networks and ISDN systems. 1998 Apr 1;30(1-7):107-17.

Page 7: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

Mark Zuckerbergと初期のFacebook• 1994(10yo): プログラミングを習う。

• ZuckNet開発:自宅と父親のクリニックとの間のメッセンジャー機能

• 2002(18yo): Harvard College入学。• CourseMatch開発(履修科目選択の参考情報提供)

• 他の学生の選択がわかる• 学習グループをつくることができる

• 2003(19yo): Facemash開発• 顔写真を並べて、どちらが魅力的かを比べさせる• 学生名簿サイトの写真を勝手に利用したのが問題となり懲罰

• 2004(20yo): Facebook創業• Harvard学内限定→アイビー・リーグ限定→一般公開• 投資家による500,000ドルの投資と経営参加

7

Page 8: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

8

映画「The Social Network」(2010)のスクリーンショットから

Facemashのイメージ

https://www.firstversions.com/2015/04/facebook.html

このスクリーンショットからわかるように、初期のFacebookには女性を差別する社風があったので、2008年、Facebookに初の女性役員(COO)として入社したシェリル・サンドバーグ(Sheryl Kara Sandberg)は規則でその類の行為を禁止した。

参考:How Sheryl Sandberg Stamped Out Sexism At Facebook

http://www.businessinsider.com/after-joining-facebook-sheryl-sandberg-stamped-out-sexism-in-the-office-2012-6

Page 9: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

Kevin Systromと初期のInstagram• 1996頃(~13yo): Doom II(シューティングゲーム)の改造

• 2006 (23yo): Stanford大学卒業(経営科学と工学)• コンピュータサイエンスの講義・実習を履修。プログラミングを独学。

• 起業体験:Craigslist (売買・賃貸仲介サイト)のスタンフォード大専用版

• 2005(22yo): Florence (Italy)(フィレンツエ)で写真の勉強• 2006: インターンシップ・プログラム(Odeo: 後のTwitterとなる会社)

• 2006: Googleに就職• 2008(25yo): 退職

• 2008 (25yo): 別の新会社でチェックインアプリを開発• 時間と場所の共有、写真の投稿、ソーシャルゲーム等の機能

• 2008: 休暇中メキシコで画像フィルターを開発• iPhone4の写真が「かっこよく」見えるように• 後のX-Pro IIフィルターとなる

• 2010 (27yo): Instagram創業• 500,000 USドルの投資を取得

• 2012 (29yo): Facebookが10億 USドルで買収9

Page 10: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

10

画像処理ソフトGIMPによるX-Pro II フィルターの再現

https://www.youtube.com/watch?v=qyiNg4yuK7w

1.周辺を暗くする

2.RGB各色のコントラストを強くする

Gimp 2.10: X Pro II-Filter [Instagram] 4K

Page 11: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

Tobias Lutkeと初期のShopify• 1986 (6yo): PCを与えられる。

• 1991頃 (~11yo): ゲームのプログラムを書き換えて遊ぶ。

• 1992 (12yo): コンピュータのハードウェアを改造する。

• 1995 (15yo): 職業学校(Carl-Benz-Schule Koblenz)に入学。• コンピュータプログラマーになるため

• 2002 (22yo): ドイツからカナダに移住

• 2004 (24yo): オンラインスノーボードショップを開く• 当時のe-commerceプラットフォームに満足できなかったので、

Ruby on Rails(Webサービスの開発言語。Ruby言語を利用)を使って自分で開発した。

• 2006 (26yo): Shopifyを創業• オンラインショップを誰でも開けるようにするためのプラットフォーム

• 2010 (30yo): オタワで最も急成長のビジネスとして注目11

Page 12: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

起業家にプログラミングが必要な理由

•プロダクト制作の進捗管理がし易くなる

•外注中心の開発スタイルでは、コストが掛かり過ぎる

•自ら開発の陣頭に立ってサービスを開発・運営してこそ、成功が近づく。

参考:アイデアだけの起業は自殺行為?起業家がコードを書けるべき3つの理由TECH NOTE 2016.5.11https://tech-camp.in/note/pickup/41/

日本の例:堀江貴文(ライブドア創業者)、山田進太郎(メルカリ)など多数

12

Page 13: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

プログラマーから起業家へ• バックエンドBack end(Webサービスを提供しているコンピュータのこと)の機能を提供するための言語を習得する(⇔フロントエンドfront end)• 実際にサービスを提供してみる

• ビギナーとして仕事を経験する• 慈善事業にボランティアとして参加する。• 地元の飲食店や学校のホームページの仕事を請け負う。• 自分を紹介するホームページ(ポートフォリオウェブサイトページportfolio website)を作る、など

• 情熱を傾けるべきテーマを持つ• 共同創業者Co-founderを見つける• サービス開始前に、いくらでも試行する• 財政的セーフティネットを持つ

参考:Martin Ramsin. Learning To Program: From Web Developer To Entrepreneur. 5/Sep/2016https://careerfoundry.com/en/blog/web-development/learning-to-program/

13

Page 14: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

プログラミングを学ぶために•オンラインの無料プログラミングチュートリアルを試してみて、プログラミングを好きになれるか試してみる。

•毎日プログラミングを練習する。

•目標を持つ。

•メンターを持つ。

参考:Martin Ramsin. Learn To Code, A Web Developer's Guide. 26/Oct/2016https://www.careerfoundry.com/en/blog/web-development/learn-to-code/

14

Page 15: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

プログラミング:何から始める?

• Webアプリ• Webブラウザ(Chromeとか、Safariとか)をユーザーインターフェースとする。

• ブラウザとサーバーとで機能分担をする。• ブラウザ:

• 入力・出力

• ブラウザ画面上への画像、テキスト、ボタンなどの描画

• サーバー:• 記録・検索

• 画面に表示するものの指定

15

Page 16: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

Webアプリの作成ステップ(例)

• Webアプリケーションの仕組みを知ろう

•作りたいWebアプリを決めよう(→次スライド)

•開発環境を構築しよう

• PHPとHTMLの連携を学ぼう• サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsなど

• PHPとMySQL(データベース)の連携を学ぼう

• Webアプリっぽく改良してみよう

•セキュリティを強化しよう

16

参考:初心者がWebアプリを開発する7STEP(「ココカラエンジニア」より)https://se-shine.net/wepapp-7step-launch/

Page 17: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

作りたいものの例を真似する

•おみくじ

•じゃんけん

•メモ帳

•掲示板

• SNS, etc

17

検索して例を探す。

Page 18: プログラマー経営者 列伝 - hishikilab.sakura.ne.jphishikilab.sakura.ne.jp/lectures/lecture_180615.pdf · •サーバー側の言語は他にJava, Perl, Ruby, Python, Node.jsな

大学・学部・学科選択のために

•アプローチ1:できるだけ東京に近い大学の情報系の学科を選ぶ• 千葉県でも可• いろいろな機会が多い

• セミナー、勉強会など

•アプローチ2:実社会の、具体的な問題に興味を持つ→その問題に近い学科に入る→問題解決のためにプログラミングを利用する• プログラミングは自分で勉強する• 実際には、どんな大学でもプログラミングの講義・実習を用意しているはず

18