このエントリーをはてなブックマークに追加

はじめまして:bow:7月に入社した開発部の志賀です。宮崎から名古屋に引っ越してきました!

カルテットでは、すぐに業務での実装を始めず、ありがたいことにとっても手厚い研修をしていただきました。

私は、PHPでの業務経験がありバックエンドエンジニアとして採用していただきましたが、Symfonyは未経験でオブジェクト指向にも苦手意識がありました。

そのため、入社前は「開発部の高いレベルについていけるのか?」という不安がありました:sob:

しかし、2ヶ月という長い期間の研修を設けていただき、そんな不安が吹っ飛びました〜!:tada:

今回は、その中でのオブジェクト指向研修(OOP研修)を中心に、具体的な内容を、研修を受けた側の目線からお届けできればと思います。

技術的な内容については、次回「~技術編~」として投稿する予定です:tada::tada:おたのしみに:satisfied:

研修内容

私が受けた研修は、上から順に3つです。

  • Symfony入門(本)の写経
  • Symfonyを使ったユーザ登録機能の実装
  • オブジェクト指向研修 ←今回の記事のメイン!!!

それぞれ内容は以下のようなものでした。

Symfony入門(本)の写経

業務で使っているフレームワーク「Symfony」の基礎を学ぶ研修です。

実装したソースは、GitHubにpushしていきます。本中の分からないことは随時slackや口頭でメンターの方に質問できました。

Symfonyを使ったユーザ登録機能の実装

  • Symfonyを使った機能実装のノウハウを知る
  • 自分の実装とカルテット開発部の模範解答の差分より、自分の設計指針に気づき、オブジェクト指向に基づいたカルテットの設計指針を知る

といった目的の研修です。

模範解答ブランチのコミットメッセージのみを1つずつ見て、自分なりの実装を書いていきます。

コミットメッセージは、以下のようなものがありました。

  • [UserRegistration] interfaceを実装してUserエンティティ, UserRepositoryを作成(項目はidのみ)
  • [UserRegistration] Userエンティティに項目を追加(name, email, password)

そして、各コミットメッセージ(≒作業指示)に対して、以下のような手順を繰り返しました。

  1. 自分なりに実装(テストコード含む)をし、答え(=模範解答ブランチのコミット差分)を見る
  2. 自分なりの実装との違いがあれば、なぜ違うのか考える
  3. 答えがどうしてそのようになっているのか納得のいくまでメンターと話す
  4. 答えの実装を適用する

もちろん、自身の設計指針を否定するものではなく業務ではカルテットの設計指針を優先してほしいという目的のためです。

オブジェクト指向研修

使ったツール

ツール 用途
GitHub ソース管理用。issueで課題を立て、質問や相談をissue単位で行いました。
CircleCI テストの自動化のため。カルテットではテストコードを書いています!
Trello 研修の振り返り(KPT)を行うため。
esa 日報を書く用。文章にすることで自分自身の1日の振り返りができました。メンター以外の開発の方にも進捗やつまづきポイントを知ってもらうことで、アドバイスをいただけました。

やり方

カルテット開発部では、採用の際に実技試験(コード提出)があります。

そこで提出したコードを元に、「オブジェクト指向を用いてリファクタリングする。」という研修でした。
(そもそも試験の段階で「オブジェクト指向を用いて実装してください」という指示があったのですが、十分にリファクタリングの余地がありました。。。)

先述の「 Symfonyを使ったユーザ登録機能の実装」 → 「オブジェクト指向を用いた実技試験のリファクタリング」 の順番のおかげで、自身の設計指針の良くないところやもっと良い設計が分かり、リファクタリングに活かせるという良い循環ができたと思います。

具体的な取り組み

リファクタリングのための問題点・改善点のissue化 → レビュー

issue作成の順番は、私→メンター→私 …の繰り返しでした。(最終的なissue総数は40件でした!)

メンターの方とissue上で改善案を話し合い、方向性が決定したら実装しプルリクを出してレビューをしてもらいます。

もちろん、問題点は分かっているけど、どう改善したらいいか分からない時もあります。(大半がそうでした)

その場合は、自分で調べたり考えたりして「こういうことをしたらいいとは思うんだけど、コードに落とし込めない」「こうしたらメリットはあるけど、こういうデメリットがありそう」など自分なりのモヤモヤも含め、すべてissueコメントに貯めていきました。

メリットとしては、3点です。

  • 私自身が過去に何に困っていたかすぐ思い出せる。
  • 言語化することでの私自身の頭の整理ができる。← これをすると不意に改善案が降ってくることもあります。
  • メンターの方に何に悩んでいるか、どういう考えをしているのか伝えられる。(振り回していたかもしれませんがw)

1

ちなみに、今回メンターをしていただいた方が、実は最近お子さんが生まれたばかりで、現在はリモートワークメイン(週1日だけ出社)の働き方をされています:baby::baby_bottle:そのため、やり取りは基本的にテキスト(slackやissue)が中心でした。

最初はコミュニケーションが取りづらいかもしれないなと思ったのですが、実際にやってみるとissue上で綿密にやり取りすることができて、ほとんどやりにくさは感じませんでした。

また、全てissueに残るので、メモの必要もなく振り返るのも簡単で良かったです:ok_woman:

(家族に優しい会社だな〜:family::two_hearts:と感激しました)

KPTによる研修の振り返り

研修終了後に、メンターの方とTrelloを使ってKPTに基づいた振り返りを行いました。手順は以下の通りです。

  1. 「Keep」「Problem」「Try」にカードを追加する。
  2. 各リストを眺めたり質問したりして内容を共有する。
  3. 「Try」から次の具体的な「Action」を作成する。

1.「Keep(K)」「Problem(P)」「Try(T)」にカードを追加する

  • 研修自体のやり方で良かったこと(K)・悪かったこと(P)・次こうしたら良さそう(T)
  • 技術的に理解できて良かったこと(K)・理解できず終わってしまったこと(P) など…

ざっくばらんにメンター、メンティーでカードを作成しました。

2.各カードを眺めたり質問したりして内容を共有する

二人で一枚ずつカードを振り返っていきました。

  • 理解が浅かった技術的なことについて、もう一度振り返ったり教えていただく機会ができた。
  • 思っていたけど言えなかったことをぶっちゃける機会となり、お互いを知るきっかけになった。

といったメリットがありました。

具体的には、こんなやりとりがありました。

メンター:penguin:「【Problem】リアクションが薄くてきつかったり楽しくできているかわからなかった。」
:baby_chick:「入社したばかりで緊張してて、猫かぶってました。とても楽しかったです。もっとリアクションします!」
メンター:penguin:「そうなんですね!良かったです!」

3.「Try」から次の具体的な「Action」を作成する

最後に、今後具体的に取り組むことを決めました。

今回の研修では、こんな内容があがりました。

  • 開発部ブログを書く
  • 次回の研修では週に1回定期ミーティングを設けて、口頭で質問できる場を設ける など…

さいごに

手厚い研修をしていただき、開発部のみなさんを始め、会社のみなさんには本当に感謝しています!:bow:

研修を通して、オブジェクト指向やSymfonyを学ぶと同時に会社の雰囲気を感じ取ることができました。

開発部だけでなく、社員全員が知見をブログでアウトプットしていることがとてもいい文化だなと思いました。

他にも、カルテットでは社員一丸となって助け合う姿勢がめちゃくちゃいいなーと思いました。

例えば、現在開発部ではフロントエンドエンジニアを積極募集中なのですが、その採用活動も、フロントエンドチームの方だけでなく開発部全体、もっと言うと部署を超えていろんな方に協力をもらいながら行っています。

この記事を読んで少しでもカルテットに興味を持ってくださった方(フロントエンドエンジニア/バックエンドエンジニア問わず)は、ぜひ気軽にご連絡ください!

👉 Slackゲスト招待の申し込みはこちら


このエントリーをはてなブックマークに追加

はじめに

こんにちは!Angular初心者の 金本 です!

去る8/23(金)、浅草で開催された ng-sake #15 に参加して勢いでLTをしてきましたので、簡単にレポートしたいと思います。

ng-sakeとは

ng-sake は、Angular好きによるAngular好きのための飲み会 です。みんなでお酒を飲みながらAngularについて語ったり相談したりLTを聴いたりする自由なミートアップです。

参加資格は以下のとおりです!

  • Angularが好き
  • 技術の話が好き

Angularについて話したい方なら誰でも大歓迎です!ぜひご参加ください!

https://ng-sake.connpass.com/event/140021/

だそうです!

初心者なりにAngularを好きな気持ちは持っているので、参加資格ありということで勇気を出してすごい人たちの群に飛び込んできました!

当日の様子

「飲み会」と称しているだけあって、終始賑やかな会でした :beers:

開始早々、会場のプロジェクタが故障して使えないというトラブルが勃発し、LTはスライドのURLをシェアした上で各自手元のPCで見つつ、主催の @laco2net さんが前に出てMacBookを掲げて見せるという荒技で乗り切りました。(意外と普通に進行できて驚きました :joy:

界隈で著名なすごい人がたくさんいてドキドキしましたが、皆さん初心者にも優しく接してくださって、Angularコミュニティの暖かさを感じました :hotsprings: (話されていた内容はかなり高度でついていけない話題が多かったですが :sweat_smile:

より詳細な当日の様子は @laco2net さんのブログ記事 をご参照ください。

LTした内容

今回は Angular初心者が1週間でモノ作ってみました というタイトルで発表させていただきました :muscle:

  • 月曜のお昼に、金曜のng-sakeでLTをすることを決めました
  • 普段コード書いてなくてネタがなかったので、帰宅後の時間を使って簡単なアプリを作ってみました
  • 作ったのはこんなアプリです
  • こんな学びがありました

といった内容の発表でした。

月〜木の4日間×寝る前2時間ずつぐらい(ちょうど1人日)でちょっとしたアプリを作ったのですが、割とサクサク作れたのでやっぱりAngularは便利だなぁと思いました。(小並感)

Angularアプリケーションプログラミング を一通り読んで勉強した下地があったので1人日でも何とか動くものが作れました :muscle: この本は偉大です。

扱っているAngularのバージョンが古く、多少補完しながら読まないといけないところもありますが、基本的な仕組みを学ぶにはすごく良い本だと思います。

作ったもの

こんな感じの、商品紹介リンクのブログパーツを生成するためのアプリ を作りました。(自分が欲しかったので)

できること

  • 画像、商品名、リンク先URLを入力するとブログパーツを生成
  • コピペ用のHTMLコードをtextareaに表示

時間切れでできなかったこと

  • Amazonや楽天の商品ページURLから一発でブログパーツを生成できるようにしたかった

おわりに

ng-sakeそのものについては、とても刺激的で学びの多い場で、ぜひまた参加したいと思いました!次回は弊社のフロントエンドエンジニアも連れていきたいです :muscle:

LTするために行ったアプリづくりの活動については、やっぱり1人日では限界があって中途半端なところまでしか行けなかったので、引き続きプライベートの時間を使って自分が満足できるレベルまで仕上げていこうと思います。

今まではなかなかAngularコミュニティとの交流を持てていませんでしたが、今後は少しずつ顔を出していけたらと思っています。その際はまたよろしくお願いします!


このエントリーをはてなブックマークに追加

はじめに

こんにちは。CTOの 金本 です。

Nagoya.php とは、名古屋で隔月を目処に開催しているPHPの勉強会です。

もともと有志の個人によって運営されていた勉強会でしたが、立ち上げメンバーが次々にカルテットに入社した結果、ここ数年はなんとなくカルテット主催のイベントという感じになっています(笑)

2019/08/28(水)に 通算17回目のNagoya.php を弊社セミナールームにて開催しましたので、その様子を簡単にレポートしたいと思います :elephant: :sparkles:

Nagoya.phpの特徴

さて、Nagoya.phpは、よくあるLT中心の勉強会ではなく、「実際に手を動かしてプログラミング問題を解いてみる」 という取り組み(通称「どう書く」)を中心にした内容になっています。

問題は主に、@Nabetani 氏が過去に開催されていた「横浜へなちょこプログラミング勉強会」という勉強会で 出題されたもの を拝借しています :pray:

ただ、最近は初心者の方の参加が増えてきた結果、参加者のレベル感にかなりのばらつきが出てきていて、全員が同じ問題に取り組むのはちょっと無理があるような状態になってきていました。

そこで前回からは、ある程度慣れている人にはいつもどおりプログラミング問題にチャレンジしていただきつつ、初心者の方には別途初心者の方向けの ちょっとした課題 をご用意して、参加者の皆さんにご自身のレベルに合わせて取り組む課題を選んでいただく形をとっています。

今回から食事の提供をやめてみました

これまでは基本的に会費制(当日支払い)にしていて、運営スタッフが直前にピザと飲み物を用意していたのですが、ドタキャンがあると赤字になってしまう問題があって頭を抱えていました :sweat:

そこで、思い切って今回から 会費なしの飲食物持ち込み制 にしてみました。

やってみた結果、

  • 意外と皆さん忘れずに食事を用意してきてくれて、特に滞りなく進行できた
  • ピザを囲むために机を並べ替える作業が不要になった
  • 机の並びが教室スタイルのままのほうがLTとかにはかえって集中しやすかった気がする
  • お金の管理が不要なのは運営としては楽
  • ゴミが出ないので撤収作業も楽

と良いことずくめだったので、次回以降もこのスタイルでやっていきたいと思っています :muscle:

自己紹介タイム

予定どおり18:30に開場、19:00に開始。

時間も限られているので一人15秒ぐらいで全員に簡単な自己紹介をしていただきました。

プログラミング問題タイム

自己紹介が済んだら、早速プログラミング問題タイムです。(制限時間は45分ほど)

今回使わせていただいた問題は、非三連数 というものでした。

制限時間が45分程度と短いので、いつも問題の選定に本当に苦労しているんですが、今回もやっぱり少し難しすぎたようで、残念ながら時間内に最後まで解けたという方はいらっしゃいませんでした。(スミマセン… :sweat_smile:

答え合わせタイム

20:00からは、プログラミング問題の答え合わせタイムです。

「私はこんなふうに解きました」とか「こんなふうに解こうと思ったけど間に合いませんでした」とかを前に出て発表していただく時間です。

ちなみに、答えあわせタイムやLTタイムに前に出て発表してくださった方にはもれなく 条件分岐禁止ギプス というノベルティグッズ(シリコン制のリストバンド)を差し上げていますので、次回以降参加される方はぜひ発表にチャレンジしてみてください!

一応僕のほうでも解答例を用意してあったので、この時間を利用して簡単に発表させていただきました。

途中、僕が説明したアルゴリズムに不十分な点があることを @ounziw さんにご指摘いただく場面がありました :sweat_smile: 危うく間違った内容をドヤ顔でアップしてしまうところでした!ご指摘ありがとうございました!

LTタイム

続いてはLTタイムです。今回は事前にお申し出いただいていたLTが2本と、飛び入りLTが1本と、書籍争奪じゃんけん大会が1本(笑)というラインアップでした。

発表者 内容
@@kohe_dekita TILリポジトリのススメ
@brandonpittman フロントエンドフレームワークLivewireについて
@smdhogehoge 飛び入り Nagoya.php #17 の問題が解けなかった話
@ounziw 「WordPressユーザーのためのPHP入門-はじめから、ていねいに。第3版」 希望者1名にプレゼント

皆さん発表ありがとうございました!

交流タイム

今回はLTタイムが結構盛りだくさんだったのでほとんど時間が取れませんでしたが、クロージングまでは自由に交流していただく時間としました。

今までのようにピザを囲むスタイルではなくなったので、この時間を盛り上げるのがなかなか難しいなと思いました :thinking:

次回からは sli.do などを使って参加者同士で質問してみたいこととかを募って、それに答えていくような形式でもいいのかもなと思いました。

おわりに

というわけで、今回も隔月開催という約束を守って2ヶ月ぶりで開催することができました :muscle:

最後に「今日楽しかった人ー?」と質問したところ全員が手を挙げてくださいました!引き続き実り多い会にできるよう頑張っていきたいと思っています。

なお、参加者の皆さんの解答例や当日の様子がTwitterのハッシュタグ #nagoyaphp で見られたりもしますので、興味のある方は覗いてみてください :smile:

引き続き隔月開催を目標に頑張って運営していこうと思っています(次回は2019年10月開催予定)ので、名古屋近郊にお住まいのPHPerさんはぜひ気軽に遊びに来ていただけると嬉しいです!