Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
時雨堂を支える技術

時雨堂を支える技術

日時:2019-02-23
作:時雨堂
バージョン:19.02.0
URL:https://shiguredo.jp/

言語

Erlang/OTP

バージョン:最新版 (64bit / HIPE)

自社ミドルウェア製品を開発するのに使っています。 C 拡張である NIF は現在利用していません。

Erlang/OTP 向けの自動フォーマッタを開発していたりもします。

shiguredo/eryngii: Erlang lint and formatter

Python

バージョン:3.6

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

ウェブサイトの構築には Django を利用しています。 基本的には Nginx + uWSGI + Django という構成です。

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

JavaScript

自社製品の JavaScript SDK や自社サービスの開発に利用しています。

Swift

バージョン:4.2

自社製品の iOS SDK 開発のために利用しています。

Kotlin

バージョン:1.2

自社製品の Android SDK 開発のために利用しています。

Lua

バージョン:5.x 系

OpenResty の Lua または Erlang VM 上で動作する Lua のどちらかです。Lua を直接いじるというのはありません。

Erlang VM 上で動く Lua を実際に案件に使った例は 時雨堂 BOT サーバー にあります。

現在は Lua on Erlang VM を利用して負荷試験ツールを開発中です。

時雨堂 シナリオ負荷試験ツール Oribe 開発ログ

Lua は Lint がないとつらいので作ったりもしました。 OSS で公開しているので興味ある方どうぞ。

shiguredo/luli: A static analysis and linter tool for Lua

Go

バージョン:1.11 系

WebRTC 向けのシグナリングサーバを開発するのに利用しています。

shiguredo/ayame: WebRTC Signaling Server Ayame

reStructuredText

頻繁に更新される記事

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

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

markdown

一回だけしか更新されない記事や OSS の README.md

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

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

環境

Linux

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

Ansible

バージョン:2.x

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

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

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

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

Git

バージョン:2.x

GitHub 便利ですね。ということで基本的には Git Flow 、ドキュメントは GitHub Flow で利用しています。

OmniGraffle Pro

バージョン:6.x

7 系が出ていますが、 6 で困っていないためアップデートしていません。

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

Docker

バージョン:最新版

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

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

Getting Started

Elastic Stack

今後 InfluxDB に切り替え予定です

自社製品ログやロードテストやロングランテストの解析をする基盤として利用しています。

beats シリーズがとても良いです。自社製品用の beat を開発して使っています。

shiguredo/sorabeat: Elastic Beats for WebRTC SFU Sora

フレームワーク

Django

時雨堂でウェブアプリを作るといった場合は Django を採用しています。

リアルタイムが必要な場合は Erlang/OTP が利用されます。

React Native

時雨堂でスマートフォンネイティブアプリを作る場合は React Native を採用しています。 自社で React を利用していることも採用理由の一つです。

React Native 向け WebRTC ライブラリをオープンソースで提供しています。

shiguredo/react-native-webrtc-kit: React Native 用 WebRTC ライブラリ

サービス

G Suite

費用:社員数 x 600 円 / 年

G Suite Basic に入っています

  • GMail
  • Google Group
  • Google Calendar
  • Google Drive
  • Google Sites

このあたりを主に使っています。

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

GitHub

費用:$ 100 / 月

50 プライベートリポジトリ

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

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

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

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

CircleCI

URL:https://circleci.com/
費用:1 Linux コンテナ 50 ドル + 1 macOS コンテナ 39 ドル / 月

開発者が一人増えたので 1500 分を超えたので 1 コンテナ分、課金しました。

iOS 向けのビルドをテストしているため、その分の費用も払っています。

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

  • travis.yml ファイルのように circle.yml がある
    • それに加えてウェブから色々設定が出来る
  • 並列ビルドが可能
  • キャッシュを持っていて、ビルドがかなり高速化される
  • slack への通知機能あり
    • 失敗または失敗後の成功のみの通知機能あり、コレ凄く重要
  • ウェブフックあり
  • ステータスバッジあり
  • 指定ブランチのビルドが可能
  • Test コマンド、post Test コマンドあり
  • パーミッションが GitHub そのまま使える
  • テスト用のデータベースに MySQL や Elasticsearch がある
  • 2.0 から docker ベースになりかなり便利になった

Amazon Web Services

費用:普段は S3 と Route 53 だけなので $ 5 程度です

EC2 を使う場合はスポットインスタンスを利用しています。

Vultr

費用:$200 / 月 程度使用

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

Digital Ocean をやめて、 Vultr に移行しました。

15 台程度のサーバを常時利用しています。

Kibela

URL:https://kibe.la/
費用:社員数 x 540 円 / 月

Qiita からのインポート機能を先行で使わせて貰い、無事移行も完了しました、 サポートがチャットベースでやりとりできて、対応もとても親切でした。

blog と wiki が完全に分かれているのが好印象です。

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

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

不満点

  • Slack への通知が記事を書いた人の意図から、Webhook 依存になってしまい不便

移行理由

  • Qiita:Team から置き換えました
  • wiki のようにずっと残しておきたい記事が中途半端だったのが気になってました
  • あまり発展性がなく、 Kobito のアップデートなども行われなくなったため
  • 月 4800 円はやはり高かったです

board

URL:https://the-board.jp/
費用:Basic (1,980/月) の 20% オフな価格

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

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

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

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

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

移行理由

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

Slack

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

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

  • 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 の検証サーバに入れて使っています。といってもほとんど見ていません。

Medium

料金:無料分のみ
URL:https://medium.com/shiguredo

自社のアピール用です。自社製品や自社が扱ってる技術について書いています。

Dropbox Business

費用:45000 円 / 年
プラン:Standard

もともとは社員が複数の PC のファイルを共有するために会社の契約でパーソナルライセンスを購入していました。

ただ、パッケージファイルの提供やログファイルの受取を Dropbox に集約するという方針にしたため、 Dropbox Business を導入しました。 Dropbox Paper も使い始めています。

ライセンス数は 3 。割当は利用頻度が高い人とリモートの人という感じで契約しています。 使わなさそうな人の分は契約していません。

Office365

費用:900 円 / 年

お客様からくる契約書やらのワード、税理士とのやり取り用のエクセル、事務系には必須ツール。

解約したサービス

Trello

解約予定です

価格が高いのとアトラシアンに買収されたこともあり、 GitHub Projcts へ移行し始めています。

Elastic Cloud

解約予定です

自分たちがほしい統計情報には残念ながら向いていないため、 InfluxDB へ切り替え予定です。

さくらクラウド

Vultr で困らない事が多いので、すべて Vultr へ移動しました。

Digital Ocean

Vultr で困らない事が多いので、すべて Vultr へ移動しました。

さくら VPS

全て Vultr に移動して、VPS の利用をやめました。 Vultr が使いやすいという理由からであって、さくら VPS 側に不満があったとかは特にありません。

Qiita

費用:4800 月

Kibela にデータを移行して、解約しました。

日々のメモを共有するのには向いているのですが、記事が埋もれてしまうこと、あまり発展性がないことから 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/

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

宣伝

商用の 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 までご連絡ください。

WebRTC SFU

発売中です

URL:http://sora.shiguredo.jp

時雨堂 WebRTC SFU Sora 開発ログ

WebRTC ネイティブクライアント

オープンソースにて提供中です

URL:https://github.com/shiguredo/momo

OpenMomo プロジェクト

WebRTC SFU サービス

サービス提供中です

URL:https://anzu.shiguredo.jp

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

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.