アルバイトから正社員に!元開発アルバイトにインタビューしてみた

こんにちは。サグーワークス開発チーム PM の横道です。
2016 年 10 月からサグーワークス開発チームで開発アルバイトとして参加していた大津くんが 2018 年新卒として入社してくれたので、アルバイト時代に感じたことや経験できたこと・ウィルゲートに入社を決めた理由などをインタビューしてみました!

f:id:m_yokomichi:20180627192110p:plain

――― 緊張してる?インタビューしていくのでよろしくね!

はい(苦笑)インタビューされることないので緊張しています・・・
頑張って話したいと思いますのでよろしくお願いします!

――― アルバイト時代の話を聞く前に・・・ 大津くんは最近どういった仕事をしていますか?

新しく開発しているサービスのサーバサイドプログラミングを行っています。コードを書くだけではなく DB の設計も少しだけ携わっていて、プロジェクトメンバーとして PL (プロジェクトリーダー)をサポートできるように意識して開発業務を行っています。
開発系以外の業務では、開発ブログを執筆や社内 LT 会で登壇したりしています。あと業務ではないですが、同期入社のエンジニアと一緒に業後に集まって勉強会を実施していたりします。

――― それでは本題に入るね、開発アルバイトを始めるきっかけって何でしたか?

アルバイトを始める前はチーム開発をしたことが無く、学校で開発をするときは一人で開発をしてきました。なのでチーム開発の経験を積んで成長したかったのでアルバイトを始めようと思いました。
それと、エンジニアを目指していたものの実際に働いたときのイメージが全く付かなかったので、エンジニアとして働くとはどういったものなのか感じてみたかったです。

――― 今は実際にエンジニアとして働いてるけどイメージ付いてるかな?

昔よりはエンジニアとして働いていくイメージは付いてきましたが、個人的に「働く」=「総合職」のイメージが強かったので未だにエンジニアで稼ぐイメージが沸かないことがあります(笑)

f:id:m_yokomichi:20180627192641j:plain

――― 実感できるようになるといいね(笑)開発アルバイトとして1年半居たけど、その間に経験できて良かったこと感じたことを教えてください

経験できたこととしては、チームで開発するときにしかやらないことをたくさん経験することができたので良かったです。 Git のブランチ管理・コンフリクトの対応・報告 / 連絡 / 相談・システムについての説明などなど・・・ 一人で開発してるときはコンフリクトとかまず起きませんからね。説明することは未だに課題が残ってるので上手く話しできるようにしていきたいです・・・
感じたこととしては、環境はそこまで整っていませんでしたがウィルゲートで働いているエンジニアの技術探求心に貪欲なところがあって、この人たちと一緒に成長したいと感じていました。それでウィルゲートに入社を決めました。 2016 年度の当時と比べたら環境は徐々に整ってきていていますよね。

――― アルバイトから正社員になるタイミングで考えていたことはありますか?

アルバイトと正社員だと立場と責任が全然違うので意識を変えていかないといけないな と考えていました。 それと、同期入社のエンジニアが自分を含めて 6 人いて、自分より技術力が高い人ばかりなので危機感を感じています。開発で新しいことを始めることになって、開発室から誰か抜擢するといったシチュエーションがあった時に、今のままでは自分ではなく技術力が高い開発メンバーが選ばれるので負けていられないな とも考えていました。

――― 実際正社員として入社してみて変わったことは何ですか?

いい意味で変わっていないことが多いというのが印象です。アルバイト時代から幸いなことに数カ月規模のプロジェクトにアサインさせてもらっていたので色んな経験をすることができていました。今も数カ月規模のプロジェクトで開発を行っているのでその点では変わっていないです。
いい経験ができるので、大学後輩には絶対開発アルバイトをやったほうがいいと進めています。

――― これから会社でやっていきたいことは何ですか?

能力面で足りないことが多いので色々と伸ばしていきたいですが、まずはシステム設計できるようになって PL を担えるようになりたいです。 そのためには技術もそうですが説明も上手くならないといけないですね(笑)
開発以外だと同期入社のエンジニアと進めている勉強会のスコープを広げていって、自分たちでイベントを企画して行きたいと考えています。

――― インタビューお疲れ様でした!今後ともよろしくね!

インタビューされたことがなかったので何を話せばいいか緊張しました。
今後ともよろしくおねがいします!

f:id:m_yokomichi:20180627191138j:plain

チーム開発でも迷わない!Laravel を「みんなで、きちんと」使っていくために取り組んだ 3 つのこと

こんにちは。ウィルゲートで開発を行っている岡田 (@okashoi) です。

私の所属するソリューションチームでは web アプリケーションフレームワークとして Laravel を採用しています。

以前に CakePHP との比較を行った際にも取り上げたとおり、Laravel は目的に合わせて柔軟に拡張できる仕組み提供しているのが特徴です。

CakePHP と Laravel の比較まとめ
「拡張するための仕組みが提供されている」のが長所のひとつ

個人的にはその豊かな表現力が好きな一方で、特にチーム開発においてはその自由度の高さゆえ、設計方針についてメンバー間の認識のすり合っていないと道を見失いやすいというデメリットも抱えています。

この記事ではソリューションチームにおいて、道に迷わずに(迷っても再び戻って来られるように)Laravel を使っていくために実施した取り組みを紹介していきます。

続きを読む

プロジェクトを遅らせずに現場の要望にも対応するための仕組み

サグーワークス開発チーム PM の横道です。
サービスを運用していると利用者や運営メンバーから不満や改修依頼を受けることが少なからず発生してきます。一方で、開発からも運用を楽にするための提案をしているため、優先度をしっかりと判断して進めていく必要があります。そこでサグーワークスではどうやって要望を吸い上げて対応しているのかを紹介します。

要望の吸い上げる方法

1.定常的に発生する運営メンバーからの要望や依頼

業務を行っているとシステムに関する要望や質問が出てくるはずです。そうした内容を漏らさず対応するために要望を上げるときは下記の運用ルールに沿って運用しています。

要望の内容 依頼方法 補足
簡単なデータ取得 / 変更 Google フォーム 「簡単」の目安は 30 分以内に終わる規模
質問 Slack 相談チャンネル
開発要望 Slack 相談チャンネル
システム不具合 Slack 相談チャンネル
その他 Slack 相談チャンネル どれに該当するか判断がつかない場合も該当

※どれに該当するか運営メンバー側で判断します。

Googleフォームの場合

開発へ依頼する専用の Google フォームに投函してもらい、投函された内容は当日中に開発側で対応することにしています。急遽入った依頼で丸一日時間を使ってしまうことが無いように、投函されてから長くても 1 時間以内に収まる規模にしています。
サグーワークスチームでは週末に 1 週間の開発計画を立てるようにしていて、その際に依頼への対応分も見積もりに入れているため、対応する度に予定していた開発が遅れるということは起きないようにしています。 とはいえ、時間が掛かる依頼の中で「今日中にやってほしい」とお願いされることもあります。その場合は本当に本日中にやらなければいけない依頼か判断した上で、現在行っている開発が遅れる旨を伝えて合意を取った上で作業を進めていきます。

f:id:m_yokomichi:20180606103742p:plain

Slack 相談チャンネルの場合

Slack に専用の相談チャンネルがあるのでそこで以下の流れでやり取りを行います。

f:id:m_yokomichi:20180606104550p:plain

依頼したことが無い人は Google フォームで依頼するべきことか、Slackで相談するべきことか判断がつかないことがあります。その場合は Slack チャンネルで相談してもらい、必要に応じて Google フォームに促すことで次回から正しいフローで依頼してもらえるようにしています。サービスの質問に関しては web ディレクターが回答できることは回答してもらい、システムの詳しい仕様については開発が回答する形を取っています。 開発要望やシステム不具合の場合は「開発要望リスト(後述)」に記載して、相談者に要件リストに載せて判断をしていく旨を伝えます。

2.会議中や雑談から生まれる発想

会議の時や雑談の時にアイデアが突然降りてくるときがあります。そのアイデアも他の要望と同列にした上で対応する・しないを判断する必要があります。 しかしながら、全ての思い付きを開発要件として並べると時間がいくらあっても足りません。 そこで、 web ディレクターがその要望を聞いて開発要件として並べるべきかどうか判断し、開発したほうがいい要件を「開発要望リスト(後述)」に記載していきます。
開発から出た改善案は開発チーム内で要件として立てたほうがいいか議論した上で「開発要望リスト(後述)」に記載し、他の要望と同列に判断できるようにしています。

口頭で相談するという点以外は Slack で相談が来た時と同じフローになるようにしています。

開発要望の判断

上記で登場した「開発要望リスト」を元に web ディレクターと開発でミーティングを実施して判断しています。 ミーティングは毎日 10 分~ 30 分で実施し、 1 日で上がった要望の確認を行います。

〇開発要望シート

要望内容 期待効果 対応方法【ミーティング時に追記】 対応予定工数【ミーティング時に追記】 優先度【ミーティング時に追記】
手動で行っている〇〇作業を自動化してほしい 10 h/月の運用工数削減 運用のフロー確認・開発 30 h 4
〇〇機能の絞り込み条件を追加してほしい 2 h/月の運用工数削減 検索フォームの条件追加 4 h 6
  • 開発内容  :どういった要望なのか、何をしてほしいかを記載する
  • 期待効果  :要望が達成された場合の期待効果を書く。(不具合時は対応しなかった場合も記載する)
  • 対応方法  :ミーティングで開発内容を聞き、開発時に何を対応するか分かるように開発側で記載する。
  • 対応予定工数:対応にどれくらいの工数が必要か見積もりを行う
  • 優先度   :対応内容と見積もりから web ディレクターが優先度を決める

要望の内容が不明確な場合はどういった対応を行えばいいか分からない為、発案者と web ディレクターですり合わせを行ってから開発が内容を確認します。期待効果の記載が無い場合は開発の対応工数に比べ効果が余りでない可能性があることと、期待に添えることができるかがわからないので期待効果を記載するようにしています。

こうして優先度と対応内容が確定した要件は順に開発が対応していきます。 毎月どれくらいこの要望リストに時間を当てるか計画して、優先度の高い要望が多い場合は次月以降で「開発要望リスト」の要件に割り当てる時間を増やし対応していきます。

webディレクターを窓口にしている理由

数年前は運営メンバーから直接開発に改修依頼がいく仕組みになっていました。その場合、新しく入った依頼が対応されやすくなり、本当は優先するべき依頼がないがしろにされる事がありました。 さらに web ディレクターを通していなかったので、事業サイドはどういった機能が開発されたかも把握できていないという問題もありました。
全ての依頼に対して web ディレクターを通すことで、要望を横に並べて正しく判断して対応できる仕組みにしています。

新卒研修振り返り

こんにちは。2018年度の4月に新卒で入社したエンジニアの小澤です。入社して2ヶ月が経とうとしています。 

学生時代は、情報セキュリティについて専攻している4年制の専門学校に通っていましたが、自分の作ったものが他人に使ってもらえるwebの領域に興味を持ち、在学中はweb開発をしているインターンシップなどに参加していました。

今年度は新卒14人の中から、私を含めた6人が開発グループに配属されました。入社してすぐに新卒社員全体の研修とエンジニア全体の研修があり、エンジニア研修は、「全体研修」と「チーム内研修」の2つに分かれていました。 

今回のブログでは、チーム内研修についてまとめていきたいと思います。

企画からサービスを作る「チーム内研修」

チーム内研修では、業務に慣れるためにチームで実際に使っている技術やツールを使い、サービスを1から作ってみる、といった内容で、私は趣味に関して情報発信や意見を交換することのできるSNSを開発しました。

具体的には、どんなサービスを作るか検討するところから始まり、企画から要件定義、実装、テスト、セキュリティチェックなどを経験することができました。

f:id:rikipedia-5r:20180530093856j:plain

企画・要件定義

最初にどんなサービスを作りたいか決め、ターゲットとなるユーザを仮定します。そこからユーザにどんな背景があり、どんな負を解決したいのかを定義をしていくのですが、この工程が一番大変でした。ユーザの課題から要望を抽出したものの、作りたい成果物のイメージが浮かばず、なかなか要件が定まりませんでした。なぜ作る必要があるのか、そもそも作る必要があるのかなど、根本的な定義を見直したり、メンターや先輩社員からアドバイスやフィードバックも受けつつ、少しづつですが作るべきサービスの形が見えてきました。

このように試行錯誤を何度も繰り返しながら、ユーザが抱えている負を要件に落とし込む作業を経験できたことは、今後の業務でも役に立つ良い経験になったと思います。

実装

実装では、社内で使っているCakePHPを使っていれば他は何を使ってもよい、という制約があったため次のような構成になりました。

開発期間は1週間ほどしかありませんでしたが、最低限サービスとして稼働できることを目標にしていたので、機能ごとに優先度を決めて、それを元にスケジュールを引きました。

また、私はwebフレームワークを使った開発経験があったので、CakePHPの基本的なCRUDソースコードを自動的に生成することのできる「Bake」機能は使わずに自前で実装するという制約がありました。普段はコマンド1つで実現できる機能を自分で作るのは、フレームワークの恩恵を感じる良い機会でした。

ソースコードに対するフィードバックでは、要件定義と同じように、なぜそのような実装になったのか、もっとシンプルにできないかなど、コードを書くときに意識すべきことを学びました。そして、当初に想定していたスケジュール通りに、最低限動くシステムを作り上げることができました。

発表

最後に、チームメンバーに対して作った成果物を発表して、今回の研修を振り返る場がありました。プレゼンテーション形式でサービスを作った背景から説明し、先輩方のアドバイスを受けました。その中で、自分が書いたコードやドキュメントをなぜ書いたのか、なぜ書く必要があるのかなど、何事にも意味付けが重要だと言うことを学びました。 このように、自分はどんなことができたか、どんな進め方をすればよかったのかなどを振り返りました。

また、プレゼンテーション能力が不足していると感じました。 せっかくいいものを作っても、その良さが聞き手に伝わらなければ意味がないことを学びました。この振り返りから、LT会などにスピーカーとして参加し、発表の場に慣れることを今後の目標としました。

まとめ

今回の研修で、当たり前のことを当たり前にこなす大変さを痛感しました。学生時代はお金を払って学んでいましたが、社会人はお金を頂いて、成果を出す中で学んでいかなければなりません。 その中で、いかに自分が成果を出せるか、成果を出すにはどうすれば良いかを常に考えて業務に臨みたいと思います。

また、先輩方が私たちのために業務時間を割いて、この研修を作り上げてくれたことに心から感謝します。まだまだ未熟ではありますが、一刻も早くチームの戦力になれるように精一杯頑張っていきたいと思います。

web 開発経験ゼロの新卒が新人研修に参加しました!

はじめまして、2018年入社の田島です。 今回は入社まで web アプリケーション開発にほとんど触れてこなかった私が、新人研修に参加した模様についてお届けしたいと思います!

はじめての web アプリケーション開発

web アプリケーション開発の基本の「き」も知らない私が取り組んだのは、CakePHP を利用して二週間で web サービスをシステム要件から設計して実装するということでした。すなわち、web アプリケーションの実装はもちろんのこと、どのような人を対象とした何のサービスを作成するか考え、必要な機能の洗い出しや DB の設計まで一通りの行程を全て行いました。もちろん一人では分からないことばかりであったため、メンターの先輩に適宜教えていただきつつ進めました。

実装は実際の業務と同様に実装内容をタスクに分割し、実装予定時間を決めてスケジュールを立てながら行いました。また、Bitbucket を用いてタスク毎にプルリクエストを出し、先輩方からコードレビューをいただきながら進めました。

f:id:tajima-ryo:20180523184847j:plain

成果物について

私が作成したのはユーザ投稿型の web アプリケーションであり、記事の投稿や編集、ユーザ登録やログイン/ログアウトの認証などを実装しました。 システム要件を設計した段階では色々な機能を考えていたのですが、工数との兼ね合いにより、実装は基本となる機能に絞って行いました。また、同じく工数の兼ね合いにより実装の最初の部分のみ bake を用いた自動コード生成を利用しました。

こちらが成果物のスクリーンショットです。 (デザインは CakePHP のデフォルトのものです。デザインまで手を回すことができなかったのが痛恨の極みです。)

f:id:tajima-ryo:20180523181417p:plain

作成後はチーム内で成果物発表と脆弱性のチェックテストを行いました。

感想

MVC モデルがどのようなものなのかであったり、具体的な web アプリケーションの実装方法について学ぶ非常に良い機会となりました。そして、知れば知るほど CakePHP がいかに開発者が web アプリケーションを開発しやすいように作られているかがよく分かりました(笑)脆弱性に関してもCakePHPが標準対応しているものが多く、少しのコードの追加でチェックテストをクリアすることができました。

また、今回は web アプリケーションの実装だけでなく、システム要件の設計から取り組みましたが、これも大変勉強になりました。実装をしていく中で、システム要件があいまいであったためにどのように実装すれば良いのか迷うようなこともあり、サービスの要件や DB 設計の精密さが実装に非常に影響することを実感しました。

実装面ではコーディングの姿勢という点で学ぶべきことを多く感じました。学生時代はもっぱら動作することを第一としたコーディングをしていたのですが、レビューをいただく中で、「次にそのコードを触る人が理解しやすいか」というチーム開発を前提としたアドバイスをいただくことが多く、姿勢として変えるべき点に気づくことができました。思い出してみれば昔の私のコードは時が経つと自分自身でも読めなくなっていたのでした(笑)

最後に

まだまだ社会人としてもエンジニアとしても未熟な私ですが、これから努力を重ねて成長していきたいと思います。またトピックがあり次第ここで発信していきたいと思いますので、これからよろしくお願いいたします!

【スライドあり】勉強会「PHP5.xから脱却する為の道のり」に登壇しました!

サグーワークス開発チームの池添です。

勉強会の記事が続きますが、先日05/16に サポーターズCoLab - 若手エンジニアが「技術でつながる」仲間探しサービス さんで勉強会をさせていただきました。勉強会のタイトルは 「PHP5.xから脱却する為の道のり」 ということで、サグーワークスでのPHP5からPHP7へバージョンアップした際の内容を発表しました。現場推進をした私池添の立場と、事業部を説得しバージョンアップの後押しをしてくれた横道の二人の立場でそれぞれ発表しました。

supporterzcolab.com

当日のスライドです。

speakerdeck.com

勉強会の様子です。

f:id:zoe302:20180517112607j:plain

f:id:zoe302:20180517112654j:plain

最後はサポーターズのキャラクターのサトアズさんとも写真を撮ってもらいました!

f:id:zoe302:20180517112514j:plain

最後に

今回勉強会でPHPのバージョンアップについて発表させていただきましたが、思い返すとこのPHPのバージョンアップを皮切りにテストコードの導入や、CIの導入、社外勉強会への登壇、フレームワークのバージョンアップ、Dockerの活用など、さまざまなことにチャレンジするきっかけになりました。これからもさまざまなことにチャレンジして得たナレッジをまた勉強会などで発表していきたいと思います。

【スライドあり】社内勉強会「Hacker’s GATE Plus」を開催しました!

こんにちは。ウィルゲートで開発を行っている三島です。

先日、3月23日にオルトプラス(エンジニアブログ : AltPlus Tech Blog)さんと合同勉強会「Hacker’s GATE Plus」を弊社のオフィスを使って開催しました。 この勉強会は弊社の岡田が他社との交流を通してエンジニアとしての知識を深めていくことを目的に定期的に開催しているものになります。

今回の勉強会は「アプリについて」をテーマに開催しました。 ウィルゲートからは私が「Webエンジニアがアプリを開発(運用)できるようになるまで」を発表しました。

当日のスライドは以下になります。

f:id:MikaE:20180426200124j:plain

f:id:MikaE:20180426200140j:plain

感想

私がネイティブアプリの運用を始めたときは、社内でアプリ開発を行っていなかったため、ネイティブアプリについて聞くことのできる人がいませんでした。 こういった機会で自社にない知見を得ることができるので、少しでも自分にないものを取り入れていきたいと感じています。 今後も登壇など積極的に取り組んで行きます。