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

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

Avatar for Koichi Wada Koichi Wada
November 02, 2016

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

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

Avatar for Koichi Wada

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の採⽤用が広がるかも…