社員募集

株式会社Abby エビイ では現在、社員を募集しています。

会社紹介

弊社は、少数で頑張っている会社です。 qiita.com

仕事内容としましては、箱庭ゲームの開発がメインです。海外向けのシステムの開発もやっていますので最近は海外出張が増えてきています。

今回の募集は箱庭ゲーム開発とシステム開発と両方になります。

www.abby.co.jp

募集要項

東京本社でプログラマを募集しています。 勤務地は中目黒になります。来月には引っ越しが決まっていますが、引越し先も中目黒です(駅から2分)

iOS向けアプリもJavaで開発しているのでJavaの開発経験がある人を特に必要としています。 とはいえ、Java は必須条件としていません。他に得意なプログラム言語があればそれで構いません。やる気重視です。

開発では、IntelliJAndroidStudioNetBeansEclipse またはエディタを使っており開発環境は各自自由に決めて下さい。 うちのCTOは、天邪鬼なもので EmacsJava 開発するために Emacs 用の開発環境を自作しています。完全にやり過ぎです。 github.com

Javaの開発基盤には libGDX を採用しており、UIに関わる部分はJava + libGDX で開発することになります。

Swiftvue.js での開発もあります。

今月からは Unity の勉強会を社内で始める予定ですので Unity に興味がある方も是非お願いします。

サーバ側の処理は全て Go で開発していますので、JavaGo を書きたい!という方は是非連絡してください。

開発のやり方としては、SlackSkype でやり取りしながら、Backlog というタスク管理サービスを利用してプロジェクトを進めます。

勤務時間に関して、定時を 10:00〜19:00 と定めていますが各自にスケジューリングは任せていますので、自宅作業だったり私用を済ませて午後から出社したり自由度はとても高いです。

服装については、特に決まりはありません。

打合せはオンラインにて Google HangoutSkype で完結しますし、もしお客様との対面での打ち合わせが必要になった場合は私が行きますのでスーツは不要です。

一緒に開発をしてみたい方は、info@abby.co.jp にメールするか TwitterFacebookで私(@yone098)までDMなどで連絡をしてください。

中目黒にフラっと立ち寄る感覚で会社に遊びに来てもらえるだけでも嬉しいです。

何卒よろしくお願い致します!

プログラミングHHVM Hack 執筆しました

こんにちは、5月なのに真夏のように暑いですね🌞本日発売のプログラミングHHVM Hackという本を執筆しましたf:id:yone098:20170524160024p:plain:w50f:id:yone098:20170524160024p:plain:w50f:id:yone098:20170524160024p:plain:w50

以前、Hackがリリースされた直後に出した本よりもボリュームが多く300ページ近い量になっていますのでHHVM Hackに少しでも興味がある方は是非手にとって読んでみてください。 そして、そろそろPHPからHHVMに移行してみようかなという方は是非実践してみてください。

Amazon Kindle

プログラミングHHVM Hack

プログラミングHHVM Hack

Gihyo Degital Publishing

gihyo.jp

書籍目次

1章 プログラミングHackとその環境構築
1.1 プログラミングHackとは
1.2 環境構築


2章 Hackの特長と構文
2.1 Type Annotations(型注釈)
2.2 Type Inference(型推論)
2.3 Casting
2.4 Refining
2.5 Advanced Rules
2.6 Summary Table


3章 Hackの機能
3.1 Collection
3.2 Shapes
3.3 Tuples
3.4 Enums
3.5 Generics
3.6 Type Aliase
3.7 Lambda
3.8 Callable
3.9 Async
3.10 XHP
3.11 Attributes
3.12 終わりに


4章 ツール
4.1 hh_server
4.2 hackificator


5章 Extension
5.1 PHP and C++ extensions

おわりに

HHVM Hack

これからHHVM Hackがもっと盛り上がっていったら良いなと思っていますので、PHPの皆さんと一緒にHHVM Hackも盛り上げていきたいなと思います。よろしくお願いします。

Java開発におけるErrorProneのススメ

こんにちは、今シーズンのNBAもGSWの試合は全試合観てる米林です🏀 今年は毎試合満員御礼のOracleアリーナに行って観戦したいなぁと思いつつカリフォルニア州オークランドの人たちはOracleがデータベースの会社って知ってるのかどうか毎回気になっています🏀

うちの会社ではJavaの開発において、Error Prone を積極的に取り入れている。 その理由はCTOのmopemopeが入れろって怖いから、ただそれだけである。

実際のところ導入して損は無いので皆さんも是非導入を検討して頂きたい。

Error Prone とは

github.com

Error Prone とはGoogleが公開していて、githubに記載されている説明のとおり “Catch common Java mistakes as compile-time errors” そのままである。 コンパイル時にエラーが起きそうなところははじいてしまおうという素敵なものだ。 Error Prone は Bazel, Maven, Ant, Gradle で動作します。

Java開発者の方に馴染みのある FindBugs のようなものだと思ってもらえると理解は早いと思います。

現在、私が開発しているプロジェクトでは Gradle に組み込んで IntelliJ から実行していて Error Prone のエラーをクリアしないと実行が出来ないため、エラーを直さないと CTO に怒られる以前に実行出来ないためエラーがある状態では業務に支障をきたしてしまいますので強制的にエラーは排除する必要があります😢

インストールなどは公式ドキュメントを見てください。イマドキのJavaの開発であれば、ほぼ Gradle プロジェクトで開発されていると思うので、Gradleに組み込んで実行するまでは3分もあれば確認出来るかと思います。私が自身で作ったプロジェクトに組み込んだ際には既存の build.gradle に以下を追加しただけです。

apply plugin: 'net.ltgt.errorprone'

repositories {
    mavenCentral()
}

configurations.errorprone {
    resolutionStrategy.force 'com.google.errorprone:error_prone_core:2.0.14'
}

bugpattern

バグパターンはエラーや警告などいくつかに分かれています。 こちらにバグパターンが一覧化されています。そこそこ数が多いですが、色々みていくと自身非常にためになったのでJava開発者の皆さんは是非みてみてください。

バグパターンは、それぞれのサンプル毎に Positive examplesNegative examples があります。英語って難しいですね、どっちが正しいのか最初理解に苦しみました。

バグパターンの一例ですが、ArrayToStringというものがあり、配列をそのまま toString している箇所はNGとなります。

githubexampleを置いておくのでcloneしてGradleでbuildしてみてください。エラーが以下のように表示されるので、Main.java を直しながら確認してみると分かりやすいと思います。

$ git clone https://github.com/yone098/error-prone-example.git
$ cd error-prone-example/
$ gradle clean run
:clean
:compileJava
/Users/yone098/p/error-prone-example/src/main/java/example/Main.java:17: エラー: [ArrayToString] Calling toString on an array does not provide useful information
        System.out.println(nameArray);
                           ^
    (see http://errorprone.info/bugpattern/ArrayToString)
  Did you mean 'System.out.println(Arrays.toString(nameArray));'?
エラー1:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed with exit code 1; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 5.081 secs

custom plugin

plugin としてカスタムチェックを追加することが可能です。 BugCheckerを継承して、MethodInvocationTreeMatcherを実装しプラグインを作成します。

@AutoService(BugChecker.class) // the service descriptor
@BugPattern(
  name = "MyCustomCheck",
  // ...
)
public class MyCustomCheck extends BugChecker implements MethodInvocationTreeMatcher {
  @Override
  public Description matchMethodInvocation(MethodInvocationTree tree, VisitorState state) {
    // TODO:
  }
}

Gradleで利用するには

configurations {
  annotationProcessor
}

dependencies {
  annotationProcessor project(':custom-checks')
}

tasks.withType(JavaCompile) {
  options.compilerArgs += [ '-processorpath', configurations.annotationProcessor.asPath ]
}

詳しくは、Plugin Checksをチェックしてください。

最後に

Java開発している方には是非、自身のプログラムを ErrorProne で一度チェックしてみては如何でしょうか?

そして、株式会社Abbyでは絶賛開発者を募集しています。現在、募集しているプロジェクトでは CTO のもとで一緒に楽しく開発出来ますし、もちろん一緒に ErrorProne も見守ってくれます。

気軽にtwitterFacebookなどで声かけてください。そして一度弊社まで遊びにきてください!よろしくお願いします!