Skip to content

Instantly share code, notes, and snippets.

@liubin
Forked from voluntas/shiguredo_tech.rst
Created March 14, 2017 04:57
Show Gist options
  • Save liubin/53c2ce85c9369c6fe71ba843549f1980 to your computer and use it in GitHub Desktop.
Save liubin/53c2ce85c9369c6fe71ba843549f1980 to your computer and use it in GitHub Desktop.
時雨堂を支える技術

時雨堂を支える技術

日時:2017-03-14
作:時雨堂
バージョン:2.4.2
URL:http://shiguredo.jp/

言語

Erlang/OTP

バージョン:Erlang/OTP 19.2 (64bit / HIPE)

落ちてはいけないサーバを開発するのに使われています。

Python

バージョン:3.6

ウェブアプリやテストツールを開発するのに使われています。

ウェブサイトの構築には Django を利用しています。

pip と venv のシンプルな使い方で、テストランナーは py.test を利用しています。

JavaScript

ウェブサイトや自社製品の SDK を開発するのに利用しています。

Lua

バージョン:5.x 系

Erlang や Nginx の組込スクリプトとして Lua を使っています。

実際に案件に使った例は 時雨堂 BOT サーバー にあります。

OpenResty の Nginx + Lua も積極的に使っているため、意外にも Lua 使っています。

luli Lua言語用ソースコード静的解析ツール

Lua は色々チェッカーがないとつらいので作りました。販売していますので興味あれば。

OCaml

バージョン:4.04

Lua や Erlang/OTP のソースコードチェッカーツールや、 Erlang で書かれた製品の CLI ツールを作るのに利用されています。

reStructuredText

頻繁に更新される記事

Sphinx を製品ドキュメントとして利用しています。

基本的には GitHub の自動レンダリングで足りてます。

markdown

一回だけしか更新されない記事

GitHub や Qiita 、 Trello は markdown だったりするので。

rst と md はどちらも書けて損はないですね。

環境

Linux

基本的には Ubuntu Server 64 bit の最新版を使用したいのですが、 安定版ということで Ubuntu 16.04 を使っています。

Ansible

バージョン:2.2

Fabric だと Python で書かなきゃ行けないことや、綺麗にまとめられないことに不満があったのですが、Ansible がかなり色々出来る様になったため、Ansible を使っています。

Ansible 便利ですね、プロビジョンやデプロイ全てに対して使っています。

さらに ssh-agent と ssh-add を組み合わせてフォワードすることでサーバに鍵を置かないで GitHub から Clone したり出来る用にしています。

ansible フォルダに Vagrantfile も作って ansible でプロビジョニングしています。

関連会社である ツキノワ の CTO 若山が本を出しているので興味あれば買ってみてください。

入門 Ansible (PDF, EPUB, MOBI同梱)

自社サイトやサービスのデプロイがメインです。

Git

バージョン:2.11.0

GitHub 便利ですね。ということで Git は git-flow でしかほとんど使っていません。

イレギュラーなのはなにかやってしまった時くらいです。

OmniGraffle Pro

バージョン:6.x

主に図作成用です。全員購入では無く、希望者に対してのみ購入しています。

Docker

バージョン:17.03

主にテストやパッケージ環境に使用しています。

Docker for Mac/Win がかなり便利です。

Getting Started

VMware Fusion / Parallels

仮想環境構築用

WebRTC 関連での調査や検証ということで Windows Edge を使うために Windows 10 Pro 用として使用しています。

全員購入では無く、希望者に対してのみ購入しています。VMware Fusion という縛りは無く Parallels でも問題ありません。

サービス

Google Apps

費用:今のところ無料利用
  • GMail
  • Google Calendar
  • Google Drive
  • Google Sites

この 4 つを主に使っています。

Google Sites は主に社内向けの情報共有ツールとして総務が使っています。

Trello

費用:ユーザ数 x $8.33 / 月

全ての大きめのタスクは Trello を使っています。

案件は大まかなタスクと非技術的なタスクは Trello へ、それ以外のタスクは GitHub issues で管理しています

また、総務や経理などはすべて Trello でタスク管理しています。

最近カレンダーでタスク期限が見られたりと色々パワーアップしていて、かなり便利です。

iPhone/iPad や Android のアプリがあるのもとても助かります。

他の会社とのタスク管理も許可を得て基本は Trello で行っています。

GitHub

費用:$ 100 / 月 50 プライベートリポジトリ

ローカルリポジトリとかは無くすべてのリポジトリを GitHub で管理しています。

GitHub の連携は通知とビルド程度です。GitHub issues はコードレベルでのタスクのみ使用しています。

技術者以外にも GitHub アカウントを持たせて、いつでも見れるようにしています。

節約のために使わないリポジトリは git clone --mirror して Google Drive に保存しています。

CircleCI

URL:https://circleci.com/
費用:月 0 ドル

無料になった高機能なビルドサービス。1 ワーカーだけでよければ無料です。

使っててよいなーと感じたのを箇条書きで

  • travis.yml ファイルのように circle.yml がある
    • それに加えてウェブから色々設定が出来る
  • 並列ビルドが可能
  • キャッシュを持っていて、ビルドがかなり高速化される
  • HipChat / Campfire / Flowdock / IRC への通知機能あり
    • 失敗または失敗後の成功のみの通知機能あり、コレ凄く重要
  • ウェブフックあり
  • ステータスバッジあり
  • 指定ブランチのビルドが可能
  • Test コマンド、post Test コマンドあり
  • パーミッションが GitHub そのまま使える
  • テスト用のデータベースに Riak や Elasticsearch がある
  • キャッシュを使う事で Erlang/OTP の好きなコンパイルが使える
  • docker が使えるようになったため、依存環境を気軽に組み込める

ただ設定ファイルを書こうと思ったとき色々困ったりもしました。 ベストプラクティスみたいなのを見ながらたらたらと書いていった感じです。

基本はトライアンドエラーで。

Amazon Web Services

費用:普段は S3 と DNS だけなので $ 1 程度です

今は AWS を使った案件の検証に使っているのみ。

Digital Ocean

費用:月 $10 程度使用

現在 Vultr に切り替えを進めています

チャージして使う事からかなり計画的に使えます。 また、サーバが海外にあるとは思えないほど早いです。

最小のインスタンスであれば 月 5 ドルから使えるのも魅力です。 プライベートネットワークも出来、色々な用途で使えます。

ただ、今後は SSD VPS Servers, Cloud Servers and Cloud Hosting by Vultr - Vultr.com を使って行きたいなと思っています。なんて言ったって日本リージョンありますし。

Vultr

費用:月 $100 程度使用

日本リージョンがあり、 Digital OCean より高性能で安くすみます。 専用のストレージや、ベアメタルサーバを借りれたりと至れり尽くせりです。

Digital Ocean をやめて、 Vultr に移行していこうと考えています。

Kibela

現在無償ですが Qiita からの移行が終わり次第有償に切り替える予定

URL:https://kibe.la/

Qiita から置き換え中です。blog と wiki が完全に分かれているのが好印象です。

問い合わせ管理とかは wiki で行い、技術メモなどは blog でと分けられるのが良いと思っています。

添付ファイルに画像だけで無く PDF が貼り付けられるのも、 wiki であれば当たり前なのですが、ありがたいです。

また価格も Qiita より抑えられるのも魅力です。

board

URL:https://the-board.jp/
費用:Basic (1,980/月)

Makeleaps からの移行予定です。現在は並行で使用しています。

ヴェルクが開発しているバックオフィスツールです。サービスとして提供されています。

受託がほとんどなので、受託に向いているサービスです。特筆すべきはレポートです。

開発会社が受託をメインとしているため、かゆいところに届くサービスになっています。

細かいレポートが見れるのがとても良いです。

移行理由

  • MakeLeaps もとても良いのですが分析機能が皆無であることが一番の理由です。
    • とにかくグラフ表示がなんとなくしかわからない ...
  • board は MakeLeaps で使ってるメインの機能を含みつつ 2000 円安いというのも魅力です。

Slack

料金:$ 6.67 x 人数分 (年契約)
URL:https://slack.com/
アフィリエイト:https://slack.com/r/024g1ngs-025e0fsc

月一人 $8 と結構お高い、メッセージチャットサービスです。

  • HipChat のクライアントが改悪されたこと、 Single Channel 機能が実装されたので乗り換え。
  • HipChat からの切り替えは 1 日で移動できました。
  • Single Channel 機能は外部のユーザを 1 つのチャンネルかプライベートグループに招待できる機能
    • 契約ユーザ数 x 5 の人数が招待可能です
    • 外部の人間とやりとりするのが多いので、かなりありがたい機能で
  • 他サービスとの設定が複数自由に出来る
  • bot 機能が充実している
  • 開発が進んでいる感じがとてもする
    • hipchat は停滞している感じが強かった
  • マルチアカウント対応のクライアントがスゴイタイミングで出てきた
  • パーミッションの考え方がとても良く、外部の人を招き入れやすい
  • 発言をお気に入りできる

Docker Hub

URL:https://hub.docker.com/

https://registry.hub.docker.com/repos/shiguredo/

社内で利用している Erlang や Mosquitto の Docker Image を公開しています。

Docker のイメージを置いておくサービスです。時前で立ててもいいのですが、その手間を考えると課金してもいいかなと。

課金するとプライベートが使えるようになります。まだ課金はしていませんが、これから課金していく予定です。

速度は秒 1~2 MBi くらいです。あまり速度に不満は感じていません。

Mackerel

費用:無償

はてなが提供しているサーバ監視サービスで、かなり簡単に使え、良い感じです。

さくら VPS の検証サーバに入れて使っています。といってもほとんど見ていません。

さくら VPS

費用:約 1 万円 / 年

主に検証環境や本番のステージング環境として利用している。サクサクですし不満は特にありません。

  • VPS の 3 コア 2G プランを月契約
  • VPS の 4 コア 4G プランを年契約
  • VPS の 4 コア 4G プランを年契約

さくらクラウド

現在、自社では利用しておりませんが、お客様のサービスの運用環境として利用中です。

利用停止

Packer

URL:https://github.com/shiguredo/packer-templates

Packer 自体の利用を停止してしまいました。弊社の用途ですと Docker で十分だったためです。

こちらのリポジトリは hnakamur さん にメンテナンスを引き受けて頂いております。

将来的には hnakamur さん にリポジトリをトランスファーする予定です。

Vagrant

Docker に移行してしまったため、Vagrant を使う機会が無くなってしまいました。

VirtualBox

Docker for Mac/Win が出たので、完全にアンインストールしました。

Qiita

日々のメモを共有するのには向いているのですが、記事が埋もれてしまうことと、費用が少し高い事がボトルネックとなり kibela へ移行中です。

解約したサービス

HipChat

費用:$ 2 / 月 * 人数分

解約しました

  • いつまでたってもマルチアカウントに対応しない
  • パーミッションが細かく設定できない
  • Mac 版クライアントが見づらい
    • 完全に 3.0 で改悪されたと感じました
  • Windows 版クライアントが使いづらい
  • アイコンが発言欄にはいらない
  • 外部の人間を気軽に招待できる仕組みが無い

マルチアカウント対応されないのはしんどいです。

API もさくさくだし、使いやすいので気に入っていたのですが、使っていると気になる細かい点を slack が解決してしまいました。

月の金額は高くなりますが、チャットをよく使うためそこはコストを惜しまず投資することにしました。

Grove.io

URL:https://grove.io/

2014 年 1 月末で解約しました。

辞めた理由を箇条書きで

  • かなり時間がたってもアップデートが見込めない
    • 今以上の機能追加が期待できなかった
  • 定期的に落ちている
  • GitHub 連携が期待しているより弱い
  • Grove より便利なサービスが見つかった
    • Hall.com
  • 画像が添付できない
  • IRC という便利さはあったが、IRC 以上ではなかった
  • ログ表示の仕方が違和感があった
  • 結局ブラウザで使っている人が多かった
    • 専用クライアントは IRC クライアントになってしまった
  • メンションが使いづらかった
  • ログが良くも悪くも IRC 風味

drone.io

解約しました。

辞めた理由を箇条書きで

  • 通知系が全然充実しないでメールだけだった
    • hipchat や grove.io に通知出来ないのはかなり痛い
    • 通知メールがシンプルすぎてメールだけじゃ何が起きてるかわからなかった
  • Erlang/OTP のバージョンが上がらない
  • 複数のバージョンを選択できない
  • pip 周りのキャッシュをしてくれないので毎回ビルドが遅い
  • ブランチを指定してビルド出来ない
  • パーミッションが GitHub や BitBucket のものがそのまま適用されない
  • GitHub の PR に対してビルド成功のバッジが付かない
  • ビルドが遅い

設定はとてもシンプルに書けることもあり、良かったです。 ただ、シンプルすぎてまったく複雑なことが出来ないという悲しい話でもあります

Drone が OSS になって Docker との連携版として復活してきそうです。かなり期待していたりします。

Docker Image を置いておけばビルドしてくれるという仕組みを作ってくれそうです。

Hall

費用:トライアル中 (1 ユーザ $ 3 / 月)
url:https://hall.com/

タケノコのように出てきているチャットシステムの一つ。

これの良いところは「組織外のチャット」という仕組みを持っていることです。

組織(弊社であれば時雨堂社内用)以外にも、公開/非公開のチャットルームを作る事が出来ます。

これを使うと社外の人と気軽にチャットをすることが出来ます。招待 URL も気軽に生成可能です。

Windows / Mac のクライアントと iOS と Android のクライアントもあります。

もちろんウェブからも使えます。1 対 1 でのプライベートチャットも可能です。

何を間違ったかおそらく WebRTC を使っているっぽいビデオ会議も出来ます。

また、Hackpad ほどではありませんが、ノートがリアルタイム編集できます。

課題

基本的にはまだまだ未完成って感じです

  • 色々未完成
  • 通知がまだまだ未熟
  • サービス連携が弱い (CircleCI が使えないのキツイ)
  • ユーザ単位課金なのでなかなかお値段的に厳しい
  • ファイル貼り付け機能がよくわからない
  • クライアントがネイティブな感じがしない

MakeLeaps

Board へ移行しました

url:http://www.makeleaps.jp/
費用:解約しました

見積、請求、納品関連書類の作成と管理を行ってくれるサービス。

色々なサービスからこれを選んだのはとにかくシンプルだったから。単純で使いやすい。

生成される PDF もとてもキレイで文句ない。

特に見積書の項目を入れ替えたり、作成したりと「こちらが想定している動き」をしてくれるのが良い。

月額 1980 円と安い board の方が機能が豊富で、特に経営視点でのグラフ表示などありがたい機能が多かった。

Datadog

費用:採用を見送りました
URL:https://www.datadoghq.com/

Mackerel と同様の監視システム。こちらは 1 ホスト $15/月 。slack との連携がかなり強力だと感じている。

自社で運用することは無いので、採用を見送りました。

Sentry

費用:採用を見送りました
URL:https://getsentry.com/welcome/

エラートラッカーです。Django で出来ています。DISQUS が開発して OSS になったものです。 サービスも提供されていますが、全てのソースコードが GitHub で公開されており、 自分で構築することが可能です。

Django 案件をこなす際、エラートラッカーは必須だと感じました。

  • エラーがメールで飛んでくるのを封じる
  • 皆のエラーを気軽に共有出来る
  • 開発中のエラーも気軽に共有出来る
  • どの程度の頻度でおきているのかを気軽に把握することが出来る

自社で立てるかサービスを借りるか悩み中です。小さいのであれば $ 24 なので自社で立てるよりは借りた方がいいのかなと。

基本的には Python 向けではありますが、PHP や Ruby もあります。

ちなみに Erlang もあります。

raven-erlang
https://github.com/soundrop/raven-erlang

iOS にもあったりします。

raven-objc
https://github.com/getsentry/raven-objc

そのほかの言語はこちらから

http://sentry.readthedocs.org/en/latest/client/

以下の URL からサインアップすると、 招待者が 1 日に受け取れるメッセージ量が増えるらしいので、是非。

アフィリエイト:https://getsentry.com/signup/r_D4Z4/

自社でサービスを運用することが無いので見送りました。

宣伝

NTT コミニュケーションズ様の WebRTC BaaS である SkyWay のバックエンドを Erlang/OTP を使って開発しました。

ニュース 2013年12月5日:ブラウザ間でリアルタイム通信を実現するWebRTCのプラットフォーム「SkyWay」の提供開始およびライブラリ・ソースコードの公開について | NTT Com 企業情報
http://www.ntt.com/release/monthNEWS/detail/20131205.html
ブラウザ間で動画や音声のリアルタイム通信を実現するWebRTCのバックエンドサービス「SkyWay」、開発者に無償提供。NTTコミュニケーションズ - Publickey
http://www.publickey1.jp/blog/13/webrtcskywayntt.html

商用の WebRTC SFU あります

映像や音声を複数の視聴者にリアルタイムで配信する WebRTC SFU「Sora」をリリース|時雨堂のプレスリリース
http://prtimes.jp/main/html/rd/p/000000005.000011027.html

WebRTC SFU as a Service はじめました、さらに WebRTC Gateway あります

WebRTC SFU に関する製品とサービスを3つ同時にリリース|時雨堂のプレスリリース
http://prtimes.jp/main/html/rd/p/000000007.000011027.html

製品

興味があれば contact at shiguredo.jp までご連絡ください。

Lua ソースコードチェッカー

製品販売中です

URL:https://luli.shiguredo.jp/

Lua のソースコードを静的解析を行いエラーを出力してくれる

詳細は以下の通り

Lua 言語用ソースコード静的解析ツール

WebRTC SFU

発売中です

URL:http://sora.shiguredo.jp

時雨堂 WebRTC SFU Sora 開発ログ

WebRTC SFU サービス

サービス提供中です

URL:https://anzu.shiguredo.jp

時雨堂 WebRTC SFU as a Service Anzu 開発ログ

WebRTC ゲートウェイ

提供中です

URL:http://momo.shiguredo.jp

時雨堂 WebRTC Gateway Momo 開発ログ

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment