人事担当者からのメッセージ

MESSAGES FROM H.R.

あなたの熱い想い、アイビスで一緒に実現していきましょう。

絵を描く楽しさを共有したいという世界中のユーザーの夢を実現するために開発されたibisPaint(アイビスペイント)。ibisPaint開発チームの業務は、モバイルペイントアプリ「ibisPaint」のアプリケーション開発全般です。

「自分の技術で世界を変えていきたい」「新しいことにチャレンジしていきたい」エンジニアとして、きっとそんな想いを持っているのではないでしょうか?
私たちアイビスには、その想いを叶えられる自信があります。そしてそれを一緒に実現していける熱い仲間を求めています。

ibisPaint開発チームに向いているのは3つの想いを持つ人

ibisPaint開発チームに向いているのは、次の3つの想いを持っている人だと考えています。

コンシューマ向けのアプリ開発をしたい

モバイルペイントアプリ「ibisPaint」はコンシューマ向けの製品です。そのため、自分が書いたプログラムが多くのユーザーに使われ、喜ばれているということをダイレクトに実感することができます。自分の携わったアプリが一般消費者にどう影響を与えているのか、その反応を肌で感じたいという人には、やりがいを感じられる仕事です。

ハイレベルな開発業務に挑戦したい

ibisPaintの開発チームは、自社製フレームワーク「Glape」の開発を同時に進めています。Glapeとは、OSの抽象化、UIフレームワーク、メモリ管理などの機能を持つ、いわゆる「OS」や「ゲームエンジン」に近いレイヤーのプログラムで、これにより単一のコードでiOS/iPadOS・Android・Windowsに対応したアプリを開発することができます。ibisPaintの開発チームに参加すると、Glapeを必要に応じて拡張・修正しながら、ibisPaintの機能開発を進めていくことになります。
アプリケーションの開発と同時に、低レイヤーの開発にも触れることができるのは、ibisPaintの開発チームならではの魅力です。

また、お絵かきアプリは、数百万から数千万のピクセルからなる画像の複数枚を同時に編集しつつ、ユーザの操作に対してリアルタイムで反応することが求められます。必然的に、ibisPaintの開発では、アルゴリズムとデータ構造、CPUアーキテクチャ(特に、キャッシュ効率)、メモリ管理、並列計算(マルチスレッド、GPU)など、パフォーマンスの高いプログラムを書く知識と技術が必要になります。
ibisPaintの開発チームのメンバーは新人研修でこれらの知識を学び、その後の業務を通してパフォーマンスの高いプログラムを書くための技術を身につけていきます。

プログラミングとテクノロジーが好き

ハイレベルな要求から生じる課題をものともせず、楽しんで解決策を探ることができるためには、プログラミングとテクノロジーが「好き」であることが必要です。
ibisPaintの開発は、そのような人にとって非常にやりがいのある仕事であると考えています。

人事担当者が求める能力

ibisPaint開発チームの人材採用では、「スピードと精度のバランス」と「コミュニケーション能力」を重視し、一定の水準を満たすことを必須としています。その上で「問題解決能力」や「アイデア力」で特に優れた点をお持ちの方を積極的に採用しています。

スピードと精度のバランス

高品質なプログラムを書くことはもちろん重要ですが、そのために長い時間をかけていては、他社との製品開発競争に勝つことはできません。そのため、私たちは常にスピードを意識して開発を行っています。

採用選考においては、採用試験の点数を重視し、経験者の方であれば競技プログラミングでの実績も評価の対象となります。

コミュニケーション能力

ここでいうコミュニケーション能力とは、「正確かつ効率的に、自分の考えを他者に伝え、他者の考えを理解する能力」を指します。

私たちはチームで仕事をしているため、メンバー間でのコミュニケーションの効率が業務効率に大きく影響します。また、良いドキュメント・コメントを書く、読み手の視点に立って可読性の高いコードを書く、使う側の意図通りに動作するAPIを設計するなど、プログラミング自体に広義のコミュニケーション能力が必要となる作業が多く含まれます。

この観点から、採用選考においては、面接での質疑で適切な応答ができる方や言語能力の高い方を評価しています。

●問題解決能力

「堅牢で拡張性の高い設計を選択する」「クラッシュレポートからバグの原因を分析し、修正する」「パフォーマンス要件を達成するアルゴリズムや実装を発見する」など、当社の業務の様々な場面で、高い問題解決能力が必要となります。

そのため、面接において問題解決能力の高さが感じられるエピソードをお話しいただけた方を高く評価しています。

●アイデア力

ibisPaint開発チームには「アイデアはみんなで出そう」という文化があります。

組織の中ではそれぞれのメンバーに割り当てられた業務があり、基本的には、それに集中して取り組むことが求められます。一方で、製品や業務の改善のきっかけとなるアイデアは多ければ多いほど良いため、「アイデアを出す」という役割は全員が担うべきだと考えています。

そのため、面接では、ユニークなポートフォリオをお持ちの方など、「アイデア力」を感じられる方を高く評価しています。

専門性と広い知見、バランスを持った成長ができる

ibisPaint開発チームでは、特定分野の深いスキルを習得できると同時に、幅広い分野での知識と経験も積むことができます。

●専門性の高い業務

業務では、C++言語やハードウェア(CPUとGPU)、OpenGLや画像処理アルゴリズム、AI、データベース(MySQL)等について、高度な知識が必要とされる場合も少なくありません。

メンターからヒントを得ながらこうした高度な業務に取り組むことで、特定分野における深いスキルを習得することができます。

●フルスタックな経験

ibisPaint開発チームでは「アプリエンジニア」や「バックエンドエンジニア」のようなエンジニアの担当分野を明確に割り当てていません。初めのうちは特定分野の業務に集中する機会が多いですが、本人の学習能力を考慮のうえ、徐々に様々な分野の業務を経験してもらうようにしています。経験を積んだエンジニアは、与えられた要件をもとに機能設計を行い、必要に応じたインフラ構築、サーバサイドとアプリの両方の実装まで、製品開発の一連の工程をすべて担う場合もあります。

このような経験を通して広範なスキルを持つフルスタックエンジニアとして成長することができる点も、ibisPaint開発チームの魅力です。

●特徴のある技術勉強会

ibisPaint開発チームでは、ユニークな技術勉強会を開催しています。この技術勉強会のテーマ選びの基準は「技術に関することであれば何でもOK」というものであり、ibisPaintの開発には直接関係ないテーマについても学ぶ機会が得られる場となっています。

技術勉強会についての詳細は 仕事を知る(モバイル事業部) をご覧ください。

ibisPaint開発チームの推薦図書>

今後、ibisPaint開発チームのメンバーになるにあたって読んでほしい推薦図書を紹介します。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

Dustin Boswell (著), Trevor Foucher (著), 須藤 功平 (解説), 角 征典 (翻訳)

推薦の理由:
チームでの開発を円滑に進めるにあたって、可読性の高いコードを書くスキルは必須のものです。この本では「可読性の高い/低いコードとは何か」「どうやって可読性の高いコードを書くか」について多数のサンプルコードを用いて解説がなされています。チームでの開発をしたことがない新入社員の方にはぜひ読んでほしいと思います。推薦者が当社に内定してから入社までに読んだ本の一冊です。

Effective Modern C++ ―C++11/14プログラムを進化させる42項目

Scott Meyers (著), 千住 治郎 (翻訳)

推薦の理由:
ibisPaintの開発ではC++を使用します。C++はその長い歴史の中でほぼ後方互換性を保ち続けている言語であるため、C言語のような古いスタイルでコードを書くこともできる一方、ラムダやスマートポインタなどを駆使した現代的なスタイルでコードを書くこともできます。

この本ではC++の現代的な機能について詳細に解説されており、他の書籍やWeb上の解説にはない情報が多数含まれている、非常に価値のある本です。

この本で得られた知見は当社のC++コーディングルールにも反映されているため、C++コーディングルールの意図を理解する際にも役に立つでしょう。
C++の基本的な部分については理解できている方におすすめです。

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

Noam Nisan (著), Shimon Schocken (著), 斎藤 康毅 (翻訳)

推薦の理由:
電気素子を組み合わせて、加算器、CPU、OS、コンパイラ、そしてテトリスのようなアプリケーションがどのように実装されているかを解説する、という意欲的な本です。

新入社員にこの本をおすすめする理由は、「NANDゲートをどのように組み合わせれば加算機を作れるのか」が学べるためではなく、「抽象化」や「インターフェース」といった考え方を実例を通して学ぶことができるという点にあります。

単に「電気素子を組み合わせてテトリスを作れ」と言われると大変な作業に感じるかもしれません。
しかし、実装したいシステム(テトリス)をいくつものレイヤーに分解し、それらをインターフェースでつなぐという方針を採ることで、整然としたバグの少ない実装が可能になるのと同時に、再利用性の高い部品が得られます。

例えば、OSやプログラミング言語を再利用し、テトリスとは別のゲームを実装することは容易にできます。本書を通してこのようなソフトウェア工学の手法を体感しておくことは、日々の業務においても非常に有効に働くことでしょう。 

私たちと一緒にアイビスの未来を築いていきたい、そんな熱い想いを持った仲間と一緒に働けることを心待ちにしています。