application-engineer

アプリケーションエンジニア

全社開発環境

最適な働き方を求めて

その時々の業務や状況、あるいは家庭の都合などの事情によって、どんな空間でどのように働くのが最適かは変わります。その自律的な運用をサポートするために、全員が同じ場所で同じ時間に業務するとは限らない中でうまく連携を取って開発を進めるのは答えの無い難しいテーマですが、Google Apps for Workを基盤とし、社内コミュニケーションはSlack、ドキュメントはConfluenceを導入。それらのプロダクト思想を社内文化に取り入れつつ、常に最適な方法論を模索しています。

プロジェクト進行はScrumで、継続的に改善

開発は、2週間を1スプリントという単位で進めています。各スプリントでは、初めにスプリント計画、終わりにKPTで振り返り、日々DailyScrumというスタンドアップミーティングで意識合わせを行っています。各機能要件はユーザストーリーとして優先順に管理し、見積もりを実施します。メンバーの中には「認定スクラムマスター」「認定プロダクトオーナー」を取得した者もおり、Scrumとしての方法論と、実際のプロジェクト運営の間で最も効率的な開発が進められるように日々模索しています。

SaaSを最大限に活用

限られた人数でサービスを運営するには、エンジニアに開発に集中しやすい環境づくりが欠かせないと考えます。そのために、基本的には開発環境はVagrant上でクライアントPCの差異なく開発できる仕組みづくりをすすめるとともに、コードリポジトリはBitbucket、CI環境はWercker、運用環境はHerokuを利用しています。

アプリケーションエンジニアの開発環境

開発生産性を最も重視

サイカは、サービスを開発するにあたり、開発生産性が最も大切な要素の一つであると認識しています。開発者が満足できる環境を会社が提供できることが、事業を、その礎となるサービスを成長させる原動力となります。 開発用PCとIDE(統合開発環境)は一定条件の元で自由に選択が可能です。また、開発に必要なSaaS利用なども柔軟に選択できるようにしています。

サーバーサイド開発

サーバサイド開発は現在、Pythonを採用しています。Pythonはシンプルな文法で初心者のキャッチアップもしやすい一方で、様々な目的のための優れたオープンソースモジュールを備えた汎用開発能力の高い言語です。その平易さと高い開発能力、そしてNumPy/SciPy/Pandasといった数値/科学技術/統計処理用ライブラリの存在が魅力です。 ただし、Pythonだけではなく、その目的や特性にあわせ、最も生産性を高められる言語やフレームワークを利用することとしています。

クライアントサイド開発

クライアントサイド開発は、HTML5・JavaScript(一部ES6)を採用しています。クライアントサイドの開発は、それを支援するツールの利用有無によって開発効率が大きく変わります。タスクランナーとしてgulp、テストランナーとしてkarma、静的ファイルバンドラーとしてwebpackを利用するなど、必要に応じてより良い開発環境の構築を追求しています。
© 2012 XICA CO.,LTD.