• Like
リーンスタートアップ x Java #jjug #jjug_ccc #ccc_h4
Upcoming SlideShare
Loading in...5
×

リーンスタートアップ x Java #jjug #jjug_ccc #ccc_h4

  • 3,470 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,470
On Slideshare
0
From Embeds
0
Number of Embeds
12

Actions

Shares
Downloads
22
Comments
0
Likes
8

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. リーンスタートアップ x Java 山本 裕介 @yusuke #ccc_h4
  • 2. 2012年9月 「日本でもっと普及させたくない?」! 「代理店よろしく」! 「・・・はい?」
  • 3. 代理店! ↓! 商品を右から左! .。oO ↓! 在庫なし、リスクなし?簡単そう!! うまくいかなければやめればいい
  • 4. 2012年12月 代理店契約締結 x
  • 5. 2013年2月 営業開始
  • 6. 10 発行ライセンス数 受注数 8 5 3 0 2月
  • 7. 200 発行ライセンス数 受注数 150 100 50 0 2月 3月
  • 8. 320 発行ライセンス数 受注数 240 160 80 0 2月 3月 4月 5月 6月 7月 8月 9月 10月
  • 9. ! .。oO 在庫なし、リスクなし?簡単そう! 受注 ライセンス発行 請求
  • 10. ! .。oO 在庫なし、リスクなし?簡単そう! 顕在化するリスク! • キャッシュフロー! • 為替リスク! • 回収リスク
  • 11. 気をつけてきたこと • 小さく始める! • システム化を可能な限り「しない」! • できる限り手抜き
  • 12. リーンスタートアップ • MVP! • 価値仮説! • 成長仮説! • 構築 - 計測 - 学習! • A / Bテスト! • ピボット
  • 13. リーンスタートアップ • MVP! • JetBrainsの製品! • 価値仮説! • 販売フロー • 成長仮説! • 構築 - 計測 - 学習! • A / Bテスト! • ピボット
  • 14. リーンスタートアップ • MVP! • 日本で需要あるはず! • 価値仮説! • 日本語! • 成長仮説! • 日本円、銀行振込! • 構築 - 計測 - 学習! • お値頃 • A / Bテスト! • ピボット
  • 15. リーンスタートアップ • MVP! • 価値仮説! • 成長仮説! • 構築 - 計測 - 学習! • A / Bテスト! • ピボット • マーケットサイズ! →デベロッパ数
  • 16. リーンスタートアップ • MVP! • 価値仮説! • 成長仮説! • 構築 - 計測 - 学習! • A / Bテスト! • ピボット • あとで
  • 17. リーンスタートアップ • MVP! • キャンペーン! • 価値仮説! • 販売方法 • 成長仮説! • 構築 - 計測 - 学習! • A / Bテスト! • ピボット
  • 18. リーンスタートアップ • MVP! • 生きていけない! • 価値仮説! • もっと良い製品が登場! • 成長仮説! • JetBrains Japan設立 • 構築 - 計測 - 学習! • A / Bテスト! • ピボット
  • 19. システム化・自動化の目安 • 基本はコンシエルジュMVPで提供! • 自動化・システム化は! • 間違いを起こした時! • 作業負荷が高いと感じた時
  • 20. 代理店の仕事(想像) 受注 ライセンス発行 請求
  • 21. 代理店の仕事(実態) 見積 受注 価格交渉 記帳 ライセンス発行 請求書送付 送金 プロモーション 資金繰り 消し込み 早期一括返済
  • 22. (株)サムライズムを支える技術
  • 23. Webサイト • 当然なら事業をやる上で必要! • Webサイト構築するならばCMSが必要! • Javaベースが良い(自分でメンテしやすい)! • でもWordPressが無難?! • でもJavaがいい!
  • 24. Webサイト • quercus: JVMで動くPHP実装! • WordPressも動作可能! • ちょっと触ったけど時間切れで断念
  • 25. Webサイト • やっぱり無難にApache + WordPressで構築
  • 26. Webサイト • コンテンツの更新は?! • 11の製品、128のSKU - 手動は無理
  • 27. Webサイト • 各製品ページはプログラムで生成 Apache Velocity データソース データアクセス wordpress-java HTMLに変換 http://samuraism.com/
  • 28. 受注 • 確実に受注したい! • ショッピングカートシステム?
  • 29. 受注 • 実装 - Google Docsのフォーム
  • 30. Google Docsフォームを使って • 良い点! • 手軽でセキュア(デフォルトでSSL)! • 悪い点! • 見た目がしょぼい! • 条件別のフォームなど実装できない! • 金額計算、自動折り返しメールなどできない
  • 31. 帳票 • 法人との取引には大事! • 見積書! • 納品書! • 請求書! • 領収書
  • 32. 帳票 • 当初: Excelで記入、PDF化! • 金額ミス等が時折発生! • めんどくさい
  • 33. 帳票生成自動化 • iText - JavaからPDF生成するライブラリ! • PDFで出来ることはだいたいできる! • 一からPDFを作るのはめんどくさい
  • 34. (株)サムライズムにおける帳票生成 • Excelで作る! • PDF化! • Acrobatで読み込む! • フォーム要素埋め込み! • iTextで動的に値を埋め込む fields.setField(key, value);
  • 35. デモ
  • 36. iTextで大事なこと • フォームエレメントのflatten : 編集不可に Set keySet = fields.getFields().keySet(); if (fieldsLeftUnflatten != null) { for (String exclude : fieldsLeftUnflatten) { keySet.remove(exclude); } } for (Object keyobj : keySet) { String key = (String) keyobj; stamper.partialFormFlattening(key); } stamper.setFormFlattening(true); stamper.setFreeTextFlattening(true); stamper.close();
  • 37. 日本で大事なこと • 角印! xxxxx
  • 38. 日本で大事なこと • 角印 - 帳票をそれらしくするのに必要! • スキャンして白い部分を透過処理! • 朱の部分は幾分透明度を与える
  • 39. 郵送に備えて • 窓付封筒に宛名が収まる ASKUL - 今村紙工 窓付封筒 長3 横型 100g/m2 白ケント MD-05 1パック(200枚入)! http://www.askul.co.jp/ctg/itemdetail/itemEnlargedImageView/?ctgItemCd=260968
  • 40. メール送信 • メール「注文承りました。こちらにお振り込み を・・」! • すること! • 製品名、価格、宛先、宛名確認&メール送信! • めんどくさい
  • 41. メール送信 public class SendPersonalLicenseInvoice { public static void main(String... args) throws UnsupportedEncodingException, MessagingException { String[] columns = "...".split("t"); ! ! ! String endUserName = columns[0]; String email = columns[8]; String sku = columns[2].substring(0, columns[2].indexOf(":")); Price theItem = Price.getPrice(sku); String finalPrice = theItem.getPriceWithComma(); if(null != WordPress.priceOverride.get(theItem.getSku())){ finalPrice = String.valueOf(WordPress.priceOverride.get(theItem.getSku())) +"円"; } String body = String.format(endUserName + "様nn" + "サムライズム山本です。nnご注文ありがとうございます。n" + "代金" + finalPrice + "を以下の口座へお振り込みの上メールにてご連絡ください。n" + String subject = theItem.getTranslated() + " のご注文"; GMail.sendMail(subject, body, "sales@samuraism.com", email, null, "yusuke@samuraism.com"); } }
  • 42. メール送信を自動化して • 金額・宛名の間違いがなくなった! ! • 今後! • 見積書送付の自動化! • ライセンス送付の自動化
  • 43. ライセンス発行 • 代理店向けサイトで発行
  • 44. ライセンス発行 • 発行時の入力項目:! • 顧客情報(名前、住所等々)! • クレジットカード番号! • 売上の記録:! • 法人 - 売掛、個人 - 売上として記録! • 問題: めんどくさい、遅い
  • 45. ライセンス発行 • Seleniumで自動化 コントロール ライセンス 売上記録
  • 46. ライセンス発行を自動化して • 圧倒的に楽になった!! • JetBrainsサイト(GWTベース)の自動操縦大変! ! • 今後! • ライセンスの送付まで自動化したい
  • 47. 消し込み • 消し込み: 売掛金の入金確認、記帳! • やりかた: 売掛と通帳明細の比較! • めんどくさい
  • 48. 法人向けインターネットバンキング • とあるメガバンク https://bizstation.bk.mufg.jp/service/kankyou.html より
  • 49. 法人向けインターネットバンキング • とあるメガバンク! • Windowsのみ対応! • 要クライアント証明書! • めんどくさい
  • 50. 最初:UserAgent偽装でSafariからアクセス
  • 51. 最初:UserAgent偽装でSafariからアクセス • 手動でポチポチ操作してCSVダウンロード! • めんどくさい
  • 52. 消し込み • Selenium + Firefoxである程度自動化 コントロール UA偽装してアクセス CSV形式
  • 53. Seleniumを使って • 銀行口座の明細CSVダウンロードを自動化! • 便利!! • 消し込みはまだ手動! → 振込名義人名を特定できない! • 新規入金の通知(メールやTwitter等)は未実装
  • 54. Seleniumによる消し込み • 便利! • どこかのタイミングでOSSにします!
  • 55. 消し込み後 • 記帳! • 通帳の明細を会計ソフトに記入! • 売上、水道光熱費等々仕訳をしながら・・! • めんどくさい
  • 56. Yayoi4J • 通帳明細CSVを弥生で読み込めるよう変換! • CSVの読み込み: OpenCSV! http://opencsv.sourceforge.net ! • 弥生用CSV形式で書き出し: String.format(); String.format(“"2000",,"","%s","%s","","","%s ",%s,0,"%s","","","%s",%s,0,"%s","","", 0,"","","0","0","no"", parsedDate, 借方勘定科目, tax1, amount ,貸方勘定科目,tax2,amount,摘要);
  • 57. Yayoi4J • デモ
  • 58. Yayoi4J • どこかのタイミングでOSSにします!
  • 59. 経費 - 通信費 • 毎月一度エビデンスをプリント! • オフィスインターネット代金! • 携帯・PHS代金! • WiMAX代金! • めんどくさい
  • 60. (株)サムライズムを支える技術 wordpress-java
  • 61. Yayoi4J • デモ
  • 62. まとめ • 日々の、月々の業務を見直してみましょう! • 無駄な手動作業! ある意味リーンスタートアップ! (コンシエルジュMVP)! • 自動化できる単調作業を探して実装! • 実装付加と手動作業負荷のバランスを考えて
  • 63. もちろんJavaで!