c-chonan
11/28/2013 - 4:34 AM

使えそうな開発環境

使えそうな開発環境

##################
時雨堂を支える技術
##################

:日時: 2013-10-27
:作: 時雨堂
:バージョン: 0.1.13
:url: http://shiguredo.jp/

**時雨堂は甘味処ではありません**

- `時雨堂を支える技術 <https://gist.github.com/voluntas/6308998>`_
- `時雨堂を支える環境 <https://gist.github.com/voluntas/6333304>`_
- `時雨道場 <https://gist.github.com/voluntas/6831251>`_

仕事
====

時雨堂ではお仕事を募集しております。

- Web アプリケーション (主に Python/Django)
- ネットワークサーバ(主に Erlang/OTP)
- サーバサイド設計
- テストツール
- 教育 (Python/Django や Erlang/OTP)
- コードや設計レビュー

色々対応可能です。

まずはご連絡頂ければお話しを伺いに参ります。

:mail: contact at shiguredo.jp

言語
====

Erlang/OTP
----------

:バージョン: R16B02 (64bit / Halfword / 非 HIPE)

サーバを開発するのに使われています

Python
------

:バージョン: 2.7.5

ウェブアプリを開発するのに使われています。

主に Django を使用しております。

3.x は Django が完全対応する 1.6 に移行予定です。

JavaScript
----------

フロントエンドはこれしかないので ... あきらめて使う予定です。

TypeScript か Haxe が最有力候補です。

reStructuredText
----------------

Sphinx はほとんど使いません。

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

ReVIEW
------

提出用のドキュメント向けです

環境
====

OS
--

基本的には Ubuntu Server 64 bit の最新版を使用します、ただ検証等では Ubuntu LTS を使う事が多いです。

LXC
---

:バージョン: 0.9.0

起動が速いこと、オーバヘッドがほとんど無いこと、クローンして気軽に使える事が主な理由です。

社内サーバとして使っています。

DHCP を立てて、LXC Web Panel から気軽にリソースを確保して好き勝手にサーバを使えるます。

LXC Web Panel は DHCP に非対応なので、パッチを当てて使用しています。

社内サーバは毎日帰宅時に電源オフにして帰る節電サーバです。

:url: http://lxc-webpanel.github.io/

課題
^^^^

- sysctl 等のチューニング系が反映しない

Packer
------

:バージョン: 0.3.7

社内で使う box の生成に使っています。主に Ubuntu と CentOS に使います。

社内で使っている Packer Template を公開しています。

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

- Ubuntu Server 12.04 64bit
- Ubuntu Server 13.04 64bit
- CentOS 6.4 64bit

Vagrant
-------

:バージョン: 1.3.4

ローカルで色々試すときに使っています。最近は Ansible でプロビジョニングを導入予定です。

- VMware Fusion Plugin を開発者全員分購入済みですがまだまだ安定しない感じがしています

Ansible
-------

:バージョン: 1.3.3

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

デプロイ周りも Fabric から Ansible へ統一する方向です

VMware Fusion
-------------

Vagrant に使う仮想ソフトはまだ Virtual Box ですが将来的には VMware に変更予定です。

VMware Fusion 6 Pro が出て移行済みです

Git
---

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

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

VirtualBox
----------

主に Vagrant 用です

サービス
========

Google Apps
-----------

:費用: 今のところ無料、落ち着いたら課金予定

- GMail
- Google Calendar
- Google Drive
- Google Sites

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

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

Trello
------

:費用: $ 200 / 年

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

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

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

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

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

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

GitHub
------

:費用: $ 50 / 月

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

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

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

HipChat
-------

:費用: $ 2 / 月 * 人数分

全てのやりとりはメールよりも HipChat を主に使っています。案件事に部屋を作ってます。

GitHub と連携してコミットログや Issues が流れるようにしています。

Trello との連携が微妙なので、Trello の対応待ちです。

ログも検索できますし、細かいパーミッションも可能です。ネイティブクライアントもおおむね満足しています。

Windows のネイティブも開発が始まったようです。

Grove.io
--------

:費用: 20 人で $50 / 月

:url: https://grove.io/

HipChat は外部の人間とのやりとりが便利では無いため社内専用にしています。そのため外部とのやりとりには Skype を使用していましたが、Skype は色々使いづらいため出来るだけ使いたくありませんでした。

そこで、見つけたのが商用の IRC サービスである grove.io です。

やりとりするのが主に開発者のため IRC への抵抗は特にありません。そのため、導入は比較的簡単にできました。もともとクライアントがいらず、ウェブビュー機能があることも魅力です。

ただし、検索に日本語は使えません。この辺とても残念ですね。

案件事にユーザを追加して、削除してを繰り返す感じになると考えています。

魅力としては GitHub や BitBucket のフックを簡単に設定出来ることです。

開発がメインの場合はこれはとても重要な機能です。

課題
^^^^

残念ながらあまり UI が洗練されていないため使いづらいです。ただし LimeChat のようなクライアントを使えばとても便利です。過去ログも全てウェブから見ることが出来ます。もちろん /history でも見れます。

- チーム機能
- trello との連携

CircleCi
--------

:url: https://circleci.com/
:費用: 月 49 ドル

少しお高いけど高機能な TravisCi クローン。10 プライベートリポジトリで 50 ドル程度。

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

- travis.yml ファイルのように circle.yml がある

  - それに加えてウェブから色々設定が出来る
- 並列ビルドが可能
- キャッシュを持っていて、ビルドがかなり高速化される
- HipChat / Campfire / Flowdock / IRC への通知機能あり

  - 失敗または失敗後の成功のみの通知機能あり、コレ凄く重要
- ウェブフックあり
- ステータスバッジあり
- 指定ブランチのビルドが可能
- Test コマンド、post Test コマンドあり
- パーミッションが GitHub そのまま使える
- テスト用のデータベースに Riak や Elasticsearch がある

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

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

Django と Erlang/OTP のオススメ circle.yml はそのうち公開したいところ

Amazon Web Services
-------------------

:費用: S3 と Route53 だけで月 5 円程度

http://shiguredo.jp/ は S3 + ウェブホスティング + Route53 を使って構築されています。

Digital Ocean
-------------

:費用: $50 チャージしました

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

最小のインスタンスであれば 月 5 ドルから使えるのも魅力です。

気軽に使って気軽に捨てられます。

検討中のサービス
==============

kato.im
-------

- Erlang/OTP で出来ている
- 日本語検索への対応を前向きに検討してくれている。
- 月 5 ドル / 人と少しお高い

解約したサービス
================

drone.io
--------

解約しました。

辞めた理由を箇条書きで

- 通知系が全然充実しないでメールだけだった

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

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