Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CloudSignでのGo言語でのサービス開発

 CloudSignでのGo言語でのサービス開発

CloudSignでGoを選択した際の経緯と、Goにして良かったという話です

Koichi Wada

November 02, 2016
Tweet

More Decks by Koichi Wada

Other Decks in Programming

Transcript

  1. ˜CFOHPDPN *OD ⾃自⼰己紹介 • 和⽥田浩⼀一(わだこういち)   • 所属   •

    弁護⼠士ドットコム株式会社  (2015年年1⽉月⼊入社)   • 担当   • クラウド契約  CloudSign  の開発   • サーバー側  Go   • フロント側  JavaScript 
  2. ˜CFOHPDPN *OD CloudSignの特徴 • 紙の代わりにPDF   • ハンコの代わりに電⼦子署名   •

    Webとメールで処理理が早い   • 郵送費、印紙代不不要   • 契約書をクラウド上に保管   • 近くに弁護⼠士がいる(運営)   • 2015年年10⽉月  サービス開始   • 2016年年10⽉月31⽇日時点  導⼊入企業数  3,800社   • 累累計契約締結件数  35,000件 
  3. ˜CFOHPDPN *OD 私を取り巻く環境と職歴 • 弁護⼠士ドットコム  …  PHP   • 私の前職

      • ブログ検索索  …  PHP   • Twitter関連サービス  …  PHP   • 写真共有サービス  …  PHP   • その前   • WebじゃないところでC++,  Javaなど   • なぜ使い慣れたPHPではなくGoなのか? 
  4. ˜CFOHPDPN *OD 開発開始時の状況  • 新しい独⽴立立したサービスの新規開発   • 契約書などを扱うので堅牢牢性が要求される  

    • 電⼦子署名を扱う必要がある • 新しいことが必要そうだ   • それなりに⾃自由度度がある
  5. ˜CFOHPDPN *OD きっかけ • あるインフラエンジニアの⼀一⾔言   • Goでやりましょうよ   •

    噂   • このエンジニアは⾃自作のツールをGoで書いてるらしい   • 有名どころのツールがGoで書かれてるらしい   • 有名どころのサービスがGoを採⽤用しているらしい   • 電⼦子署名なんかもいるし、ついでに新規技術を取り⼊入れるの はモチベーション⤴  Αͬ͠ɺௐ΂ͯΈΑ͏!
  6. ˜CFOHPDPN *OD 調査(試作)の結果 • 堅く作れそう   • 静的型付  -‐‑‒  変数や関数定義に曖昧さがなくなる

      • コンパイル型  -‐‑‒  コンパイル時に⽂文法チェックがされる   • C/C++を意外と簡単にリンクできる   • 電⼦子署名のライブラリを呼び出せる   • 特別難しいということもなさそう   • 標準ライブラリにWeb⽤用の機能もある   • フレームワークや外部ライブラリもそれなりにいろいろ  Go!(࠾༻)
  7. ˜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 
  8. ˜CFOHPDPN *OD Goの良良かったこと(1) • コンパイル時に全部の⽂文法チェック   • 未使⽤用の変数名、使ってないライブラリが残らない   •

    必要なところを間違って消してもすぐわかる   • 改修時に不不注意のバグが⼊入るということがほとんどない   • ⽂文字列列、クロージャ、⾮非同期処理理なんかも普通のスクリプト ⾔言語と同じ感覚で扱える   • これがC/C++だったら…  (((;゚Д゚)))ガクガクブルブル   • ⽐比較的簡単にC/C++のプログラムをリンクできる   • CGO   • Makefileいらず   • GoとC/C++のソースを置いておくだけ 
  9. ˜CFOHPDPN *OD Goの良良かったこと(2) • go  fmt   • 標準でソースをフォーマットするツールが付いている  

    • ソースがいつもきれい   • go  test   • 標準でテストを⾏行行う機能が付いている   • *_̲test.go  を作ればテストできる   • 推奨されているスタイル  -‐‑‒  短くわかりやすく   • 名前は短く、スコープは⼩小さく   • if  エラーならすぐ  return   • etc. 
  10. ˜CFOHPDPN *OD Goで難しかったところ • コンパイルが必要   • コンパイル済みバイナリのデプロイ計画が必要   •

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

    昨⽇日(11/01)無事⻑⾧長期署名機能をリリースすることが できました。   • メディアサイト以外の領領域でGoの採⽤用が広がるかも…