【シャイでまじめ】ユニテックシステムのプログラマーを紹介します

累計2700社が導入する人材派遣管理システム「スタッフナビゲーター」「キャスティングナビ」。ユニテックシステムの代名詞とも言えるこの2トップの誕生は、約20年前に遡ります。

マイクロソフトからリリースされた「Windows 95」が大ヒットし、企業や一般家庭までパソコンが普及した1990年代後半。「インターネット元年」と呼ばれた飛躍的にITが浸透したあの時代、ユニテックシステムは次なる大進化に備えて密かにその卵を温めていました。

当時、すでに他社が人材派遣管理システムを販売していました。しかしながら、そのシステムの多くはDOS(ドス)と言われる真っ黒な画面に文字がたくさん並び、キーボードで命令文(コマンド)を入力して初めて動く、現在のインターフェースとはかけはなれた、前時代的なものでした。

そんな背景もあり、ある派遣会社から「もっと使いやすいものは作れないか?」と言われたことで、ユニテックシステムは人材派遣管理システムの開発に乗り出します。文京区湯島にある15坪の小さなオフィスで、プログラマーたちは昼夜コーディングに没頭し、人材派遣管理システムを約1年で完成させました。「ゼロから自社製品を作り上げるあの感覚は、楽しくて仕方なかった!」と開発者は語ります。当時のシステムは、機能数的には現在の1割にも満たない簡単なものでしたが、アップデートを重ね、徐々にユーザー企業を増やし、現在の累計導入社数2700社に到達します。

2021年現在、ユニテックシステムは社員89名の会社となり、そのうち38人はプログラマーで構成されています。20年前から受け継がれてきた、製品を生み出すチカラ、今日までつづくそのエネルギーをユニテックシステムのプログラマーが語ります。

<システム開発部門>それはシャイでまじめなプログラマー集団。

トノ
こんにちは。システム開発部門をまとめているトノと申します。
今日は、僕たちの開発現場を紹介したいと思います。

トノ:
システム開発部門は、東京/大阪/福岡/海外拠点を合わせて、シャイボーイ&シャイガールの38名で構成されています。そのほとんどはプログラマーであり、とてもまじめな人が多いのが特徴です!“IT業界あるある”かもしれませんが、同じ空間にいても業務連絡はチャットで行うことが多いです。(シャイなので 笑)

チャットでのコミュニケーションをコロナ前からしていたこともあって、テレワークが本格導入されたあともスムーズでしたね。

全くの未経験から、社内研修を受けてプログラマーデビューする人も多いんですよ。だいたい1年ほどでプログラマーとしての実践力がつきます。

なびー
システム開発部門は、どういう役割の人がいるの?

通常のシステム開発は、以下の4つの役割を各人が担当します。それぞれ詳しく説明しますね。

プロジェクトでの役割担当

プロジェクトマネージャー
そのプロジェクトの責任者で、スケジュールや予算の管理、品質管理などのプロジェクト全体の統括を担当します。

トノ
僕はプロジェクトマネージャーをやってます。納期を守るべく、影響範囲を考慮して、かかる工数を慎重に計算しています。


プロジェクトリーダー
顧客へヒアリングし、要件定義(クライアントの要望をどのように実現するかまとめる)や設計を行い、自身も作業を行いながら他のメンバーをサポートするなど、プレイングマネージャーとして現場の指揮を行います。また、人材派遣管理システムの場合は、法改正によるアップデートがあるためプロジェクトリーダーが常に法関連の情報収集を行っています。

池ちゃん
プロジェクトリーダーをやっている池ちゃんです。
現場の責任者として、チームマネジメントを行っています。



プログラマー
プロジェクトリーダー(またはSE)が作成した仕様書に基づいて、プログラミングを行います。物事を順序立てて考え、問題を解決していく忍耐力が必要です。

ヒーボー
こんにちは。熊本県出身のヒーボーです。2020年4月に入社して、現在プログラミング研修中です。
けんけん
ヒーボーと同期のけんけんです。コロナ禍での入社だったので、
まだ10回くらいしか出社したことがありません!

テスター
システムが正常に動くか、テスト項目に従ってテスト・評価するのがテスターの役割です。何項目にもわたって長期間テストをくり返すこともあるので、テスターには忍耐力が必要です。

<テストばっかり?!>システム開発の流れ

なびー
システム開発ってどうやってるの?
池ちゃん
10個の工程があるので、ひとつずつ紹介しますね!

要件定義

要件定義

池ちゃん:
ユーザーの「やりたいこと」をどうシステム化するのか?を決めるのが要件定義です。要件定義は、法改正やユーザーからの要望を整理して、どのようにシステム化するかを決めていく、いわばシステム開発の土台となるものですね。本Webサイトで記事が人気社会保険労務士 中宮 伸二郎 氏にご協力いただき、法的な解釈が間違っていないかも含めて慎重に進めます。この段階では、ざっくりとシステムの動作を考え、インターフェースのラフ案を書きおこしていきます。

外部設計

池ちゃん:
要件定義の内容に基づきユーザーから見える部分を設計するのが、外部設計です。例えば、システムの概要や全体の構造に加え、ボタンや入力欄の位置、画面遷移などのユーザーインターフェース・機能が、外部設計の範囲にあたります。このとき、普段からユーザーの声を聞いているサポートセンターのメンバーの意見も取り入れることで、よりユーザーに寄り添った設計(ユーザビリティを高める)ができるようにこだわっています。

池ちゃん
外部設計をするのもプログラマーなので、この時点でユーザーインターフェースを作って、その後の工程の実装者(プログラマー)に渡すことで工数削減に繋げています。

内部設計

基本的にユーザーに向けた仕様を設計する外部設計と対象に、データ処理や初期値の定義などのシステム内部の動作や機能といった、ユーザーから見えない部分を設計していくのが内部設計です。プログラマーが見て、実装可能な情報量を持つのが内部設計書です。

池ちゃん
これ以降は、作業量が激増します!納期と勝負していく僕たちは、いかに効率よく作業を進めていくかが勝負となります。

プログラミング

けんけん:
C言語(シー言語)と言われるプログラミング言語で、プログラマーがソースコードを作成し、コンピュータ上で実行可能な形式(オブジェクトコード)に変換された結果として生成される実行ファイルが、私たちが提供しているスタッフナビゲーターとキャスティングナビです。ユニテックシステムで扱っているプログラミング言語は、C# / C++ / SQL Server / HTML / CSS / JavaScript など、多岐にわたります。

けんけん
プログラミング言語は全部英語なので、毎日見ているだけで色々な英単語が身に付きますよ。

池ちゃん:
プログラマーは、設計書をもとにプログラミングを行っていきます。ひとつの大きなシステムを複数名のプログラマーで作っていくわけですので、品質を保つためにコーディング規約というものがあります。例えば、変数などの命名規則、禁止事項 (例えば goto 文はダメとか)、コメントの付け方など、ルールにしたがってコーディングしていきます。コーディング規約は、製品の保守性や品質に直結する大変重要なルールです。

また、ベテランプログラマーによるコードレビューを行っています。コードレビューは、他のプログラマーがコーディングしたコードを、第三者がチェックすることで、記述ミスなどを防ぐ目的があります。ユニテックシステムでは、コードレビューをしないと次の工程に進めないしくみとなっています。

コードレビューの例)DRYの原則
Don't Repeat Yourself 同じコードを繰り返して書かない。

池ちゃん
スタッフナビゲーター、キャスティングナビは非常に規模の大きいシステムです。バグの発生したフェーズが開発工程の後になるほどその影響は大きくなります。バグの特性、発生個所、発生条件などを把握し早期に対応することを徹底しています。

単体テスト

単体テスト

ヒーボー:
作成したプログラムの一つひとつが、設計書どおり動作するかどうかを確認するのが単体テストです。ユニテックシステムでは、作成したプログラマー自身が単体テストを行っています。プログラミングにかけた工数と同じくらいの時間を使って、テストを行っています。

ヒーボー
工程の初期段階で、なるべくバグを取り除いておくことが大切です。

結合テスト

池ちゃん:
ある程度大きなシステムは、一気にまとめて作るということはなく、部品をひとつずつ作っています。その部品(単体のプログラム)同士を合体させて、ちゃんと動くかを確認するのが結合テストです。
例えば、ログイン画面の場合を見てみましょう。

①ログイン画面が表示される(画面X)
        ▽
②パスワードが伏せ字で表示される(機能1)
        ▽
③パスワードが一致した場合ログインできる(機能2)

なんでもないログイン画面でも、実は3つの部品が組み合わさっていて、①〜③の各ステップをテストしてるんですよ。

池ちゃん
どんなシステムにもバグはあります。このテスト段階でしっかりとバグを出し切ることが重要です。世の中には、「テストでバグが○○個見つからないと、リリースできません」というシステムもあるくらいです。

システムテスト

トノ:
機能ごとにテストを行う結合テストに対して、システムテストは、システム全体を通じて総合的に行う実運用テストです。本番環境を用意して、本番時と同等のデモデータを入れて、機能面(何をするのか)/非機能面(どのように動作するのか)、大きく分けて2つのテストしていきます。

機能面(何をするのか)
顧客が要求した機能が、システムに実装されているかを確認するテストです。実際の業務フローに沿ったテスト項目を作成して、その一連の流れをテストします。

非機能面(どのように動作するのか)
非機能面(どのように動作するのか)のテストでは、各機能の処理時間などのパフォーマンスを測定する性能テスト、負荷を与えて動作するか確認するストレステスト、バグの修正や新機能の追加がしやすいかを確認する保守性テストを行います。

トノ
非機能面テストは、特にクラウド型サービスを
快適に使ってもらうことに重点を置いています。

運用テスト

トノ:
運用テストは、リリース直前のユーザー視点で行う最終のテストです。ここでは、実際のユーザーがテストすることもありますし、一番ユーザー目線に近いサポートセンターのメンバーが複数名でテストを実施します。通常の運用で考えられる操作はもちろん、変則的な運用や例外的な運用で考えられる操作など、さまざまなシナリオを想定してテストを行います。

システム移行(リリース)

テストにテストを重ね、いよいよリリースです。アップデート実行ファイルを作成し、全国のユーザー企業へ提供します。

運用・保守

リリース後も、ユーザーのシステムの運用中にバグが見つかるということはあります。その場合、不具合の原因究明およびその修正・復旧作業を行います。法改正にともなう機能追加や、利便性アップを目的とした機能強化などシステムのアップデート作業など、絶えずメンテナンスが必要です。

<黙々作業>プログラマーのやりがい

システム開発
なびー
暗号にしか見えない言語をひらすらタイピングしてる
プログラマーってどういうところが楽しいのですか?
ヒーボー
実際にシステムとして動作したのを見ると、嬉しくなりますね。

ヒーボー:
ひとつのシステムを他のプログラマーと一緒になって作り上げるので達成感がありますね。また、毎日あたらしいことを覚えて、実践することができるので、自身の成長を感じやすいのもプログラマーならではだと思います。

けんけん
全国2700社の人材派遣会社に、自分の作ったものが使われているのは
責任を感じる反面、うれしいですね。

まとめ

トノ:
僕は、効率厨(効率厨:最短時間でミッション・クエストなどをクリアすることしか考えてないゲームプレイヤー)なんですよね。私生活でも、最短時間でできる料理ばかり作っているし、テレワーク部屋は飛行機の操縦席のように最短距離ですべてのものに届くように配置されています。そんな効率厨の僕が、仕事で心が震える瞬間。それは、「手作業で100時間かかっていたことが、システムなら5分でできるようになる。」そういう要件定義を見つけてしまったときです。最高の効率化をシステムで実現できると確信したとき、僕の心は震えます。

企業にとっても、人にとっても「時間」は、とても重要なものです。「効率化≒時間を作る」ということなので、僕たちはシステム開発を通して「ユーザーの時間をつくる」という偉大なことを、やってのけてるんじゃないかと思っています。

約20年前に誕生した、人材派遣管理システム「スタッフナビゲーター」「キャスティングナビ」。そのソースコードにこめられた当時の開発者の情熱は、今も僕たちに脈々と受けつがれています。20年の間に蓄積された技術力やノウハウを大切にしながら、時代の変化とともに僕たちはこれからも進化していきます。

トノ
最後までお読みいただきありがとうございました。

▽人材派遣管理システム シェア率No.1「スタッフナビゲーター」「キャスティングナビ」

スタッフナビゲーター
キャスティングナビ