Skip to content

Instantly share code, notes, and snippets.

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

時雨堂を支える技術

日時:2019-03-30
作:時雨堂
バージョン:19.03.3
URL:https://shiguredo.jp/

言語

Erlang/OTP

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

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

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

shiguredo/eryngii: Erlang lint and formatter

Python

バージョン:最新版

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

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

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

JavaScript

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

Swift

バージョン:最新版

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

Kotlin

バージョン:最新版

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

Lua

バージョン:5.x 系

OpenResty の Lua または Erlang VM 上で動作する Lua を利用しています。Lua を単体で利用することはありません。

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

C++

WebRTC ネイティブクライアントを開発するのに利用しています。

OpenMomo プロジェクト

Go

バージョン:1.12 系

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

shiguredo/ayame: WebRTC Signaling Server Ayame

reStructuredText

頻繁に更新される記事

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

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

markdown

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

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

rst と md はどちらも書けて損はないというスタンスです。

環境

Linux

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

LXD

Linux Containers - LXD - イントロダクション

社内サーバは LXD を利用して環境を構築しています。

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 を利用することが多いです、最近は Go も利用しています。

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 と Project を利用しています。

社員全員が 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

費用:$250 / 月 程度使用

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

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

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

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 円 / 年

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

時雨堂を支えていた技術

解約したサービスや、使わなくなった技術は別にまとめています。

時雨堂を支えていた技術

宣伝

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

WebRTC SFU

発売中です

URL:http://sora.shiguredo.jp

時雨堂 WebRTC SFU Sora 開発ログ

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

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

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

OpenMomo プロジェクト

WebRTC シグナリングサーバ

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

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

OpenAyame プロジェクト

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.