Slide 1

Slide 1 text

˜CFOHPDPN *OD CloudSignでのGo⾔言語でのサービス開発 2016-‐‑‒11-‐‑‒02   弁護⼠士ドットコム株式会社   クラウドサイン事業部   和⽥田浩⼀一  [email protected]

Slide 2

Slide 2 text

˜CFOHPDPN *OD ⾃自⼰己紹介 • 和⽥田浩⼀一(わだこういち)   • 所属   • 弁護⼠士ドットコム株式会社  (2015年年1⽉月⼊入社)   • 担当   • クラウド契約  CloudSign  の開発   • サーバー側  Go   • フロント側  JavaScript

Slide 3

Slide 3 text

˜CFOHPDPN *OD CloudSign https://www.cloudsign.jp

Slide 4

Slide 4 text

˜CFOHPDPN *OD CloudSignの特徴 • 紙の代わりにPDF   • ハンコの代わりに電⼦子署名   • Webとメールで処理理が早い   • 郵送費、印紙代不不要   • 契約書をクラウド上に保管   • 近くに弁護⼠士がいる(運営)   • 2015年年10⽉月  サービス開始   • 2016年年10⽉月31⽇日時点  導⼊入企業数  3,800社   • 累累計契約締結件数  35,000件

Slide 5

Slide 5 text

˜CFOHPDPN *OD サーバー側実装 • Goでやってます   • なぜGoなのか?   • よく聞かれます

Slide 6

Slide 6 text

˜CFOHPDPN *OD 私を取り巻く環境と職歴 • 弁護⼠士ドットコム  …  PHP   • 私の前職   • ブログ検索索  …  PHP   • Twitter関連サービス  …  PHP   • 写真共有サービス  …  PHP   • その前   • WebじゃないところでC++,  Javaなど   • なぜ使い慣れたPHPではなくGoなのか?

Slide 7

Slide 7 text

˜CFOHPDPN *OD 開発開始時の状況 • 新しい独⽴立立したサービスの新規開発   • 契約書などを扱うので堅牢牢性が要求される   • 電⼦子署名を扱う必要がある • 新しいことが必要そうだ   • それなりに⾃自由度度がある

Slide 8

Slide 8 text

˜CFOHPDPN *OD きっかけ • あるインフラエンジニアの⼀一⾔言   • Goでやりましょうよ   • 噂   • このエンジニアは⾃自作のツールをGoで書いてるらしい   • 有名どころのツールがGoで書かれてるらしい   • 有名どころのサービスがGoを採⽤用しているらしい   • 電⼦子署名なんかもいるし、ついでに新規技術を取り⼊入れるの はモチベーション⤴ Αͬ͠ɺௐ΂ͯΈΑ͏!

Slide 9

Slide 9 text

˜CFOHPDPN *OD 調査(試作)の結果 • 堅く作れそう   • 静的型付  -‐‑‒  変数や関数定義に曖昧さがなくなる   • コンパイル型  -‐‑‒  コンパイル時に⽂文法チェックがされる   • C/C++を意外と簡単にリンクできる   • 電⼦子署名のライブラリを呼び出せる   • 特別難しいということもなさそう   • 標準ライブラリにWeb⽤用の機能もある   • フレームワークや外部ライブラリもそれなりにいろいろ Go!(࠾༻)

Slide 10

Slide 10 text

˜CFOHPDPN *OD ⾔言語⽐比較(社内/担当者のスキルに対する) ։ൃॳ଎ ݎ࿚ੑ ӡ༻ੑ ݁࿦ PHP ˕ ˚ ̋ ϝσΟΞ޲͚ Go ˚ ˕ ̋ ࠓճ࠾༻ Scala ˚ ˕ ˚ ݟૹΓ

Slide 11

Slide 11 text

˜CFOHPDPN *OD 主だった使⽤用ライブラリ • Revel  -‐‑‒  Webフレームワーク   • https://revel.github.io/   • Genmai  -‐‑‒  DBアクセス,  ORM   • https://github.com/naoina/genmai   • AWS  SDK   • https://github.com/aws/aws-‐‑‒sdk-‐‑‒go/aws   • Gomail  -‐‑‒  メール   • http://gopkg.in/gomail.v2   • Draw2d  -‐‑‒  画像⽣生成   • https://github.com/llgcode/draw2d

Slide 12

Slide 12 text

˜CFOHPDPN *OD Goの良良かったこと(1) • コンパイル時に全部の⽂文法チェック   • 未使⽤用の変数名、使ってないライブラリが残らない   • 必要なところを間違って消してもすぐわかる   • 改修時に不不注意のバグが⼊入るということがほとんどない   • ⽂文字列列、クロージャ、⾮非同期処理理なんかも普通のスクリプト ⾔言語と同じ感覚で扱える   • これがC/C++だったら…  (((;゚Д゚)))ガクガクブルブル   • ⽐比較的簡単にC/C++のプログラムをリンクできる   • CGO   • Makefileいらず   • GoとC/C++のソースを置いておくだけ

Slide 13

Slide 13 text

˜CFOHPDPN *OD Goの良良かったこと(2) • go  fmt   • 標準でソースをフォーマットするツールが付いている   • ソースがいつもきれい   • go  test   • 標準でテストを⾏行行う機能が付いている   • *_̲test.go  を作ればテストできる   • 推奨されているスタイル  -‐‑‒  短くわかりやすく   • 名前は短く、スコープは⼩小さく   • if  エラーならすぐ  return   • etc.

Slide 14

Slide 14 text

˜CFOHPDPN *OD Goで難しかったところ • コンパイルが必要   • コンパイル済みバイナリのデプロイ計画が必要   • 画⾯面⽤用のテンプレートファイルの扱い   • コンパイル済みバイナリには含まれない   • 置き場と読み込みをマネジメントする必要がある   • 成熟してない点   • フレームワーク、ORMを選ぶのが難しい   • ライブラリのバージョン管理理   • 型システムに慣れが必要   • interface{}、埋め込み   • PHPの便便利利機能に対応するものがなかったり   • カタカナひらがな変換など  →  対応表を⾃自作

Slide 15

Slide 15 text

˜CFOHPDPN *OD 今後 • CloudSignは…   • さらに使いやすくするため改良良を続けていきます   • 昨⽇日(11/01)無事⻑⾧長期署名機能をリリースすることが できました。   • メディアサイト以外の領領域でGoの採⽤用が広がるかも…

Slide 16

Slide 16 text

˜CFOHPDPN *OD ͋Γ͕ͱ͏͍͟͝·ͨ͠