Create a gist now

Instantly share code, notes, and snippets.

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

時雨堂を支える技術

日時:2017-10-05
作:時雨堂
バージョン:3.3.0
URL:http://shiguredo.jp/

言語

Erlang/OTP

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

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

Erlang/OTP 向けの自動フォーマッタを開発しており、今後はこのフォーマッタを利用していく予定です。

shiguredo/eryngii: Erlang lint and formatter

Python

バージョン:3.6

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

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

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

JavaScript

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

Swift

バージョン:3.1

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

現在 4.0 に移行中です。

Kotlin

バージョン:1.1

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

Lua

バージョン:5.x 系

OpenResty の Lua がメインです。ちょっとした機能とかは Lua でやってしまいます。

ちなみに Lua は色々チェッカーがないとつらいので作りました。 OSS で公開しているのでどうぞ。

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

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

OCaml

OCaml で書かれたコードは OSS として公開していく方針です

バージョン:4.04

Lua や Erlang/OTP のソースコードチェッカーツールに利用されています。

reStructuredText

頻繁に更新される記事

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

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

markdown

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

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

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

環境

Linux

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

Ansible

バージョン:2.3

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

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

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

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

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

Git

バージョン:2.14

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

OmniGraffle Pro

バージョン:6

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

Docker

バージョン:17.09

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

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 $ 100 / 年

全ての大きめのタスクは 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/
費用:1 Linux コンテナ 50 ドル + 1 macOS コンテナ 39 ドル / 月

月 1500 分までは無料になった高機能なビルドサービス。

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

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

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

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

Amazon Web Services

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

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

Vultr

費用:$250 / 月 程度使用

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

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

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

Kibela

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

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

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

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

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

移行理由

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

board

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

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

Medium

URL:https://medium.com/shiguredo

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

停止検討中

さくらクラウド

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

ただ Vultr で困らない事が多いので、 お客さんの許可を得て Vultr に移行するか検討しています。

Digital Ocean

費用:月 $5 程度使用

Vultr が障害があったときに動作する DR 用として契約してます。

解約したサービス

さくら VPS

費用:約 1 万円 / 年

全て 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 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