ナミザト
バックエンドエンジニア
業務委託
概要
技術
経歴
自己紹介
応募 (0)
トピック 0
質問 (0)
回答 (0)
出身企業
最終学歴
経験年数
7
希望稼働時間
40時間
技術
7年
PHP
3年
JavaScript
3年
React.js
3年
Next.js
経歴
勤務開始 | 報酬 | 勤務先 | 役職 | 開発規模 |
---|
自己紹介
## 技術スタック `PHP` `Laravel` `JavaScript` `TypeScript` `React` `MySQL` `BigQuery` `CI/CD` `GitHub Actions` `Docker` ## 職務経歴 - 個人事業主(2023年1月〜現在) - 弁護士ドットコム株式会社 (2020年8月〜2022年12月) - 株式会社Sinq (2019年1月〜2020年6月) - 株式会社Abridge (2017年4月〜2018年12月) ### フリーランス #### BIツール ATSから応募者のデータを取得して、月毎にどれくらいの応募があったかを発生日や応募日ごとに解析するツールの開発。 0→1開発の1人目エンジニアとして、主にバックエンドを担当。 ATSからデータを取得する箇所の設計、DB設計、Laravelのアーキテクチャ選定、実装、テストを担当。 #### 問い合わせ寄与PJ【弁護士ドットコム株式会社】 `概要` 弁護士ドットコムはサービス開始から10数年経ち、成熟期に差し掛かったいま問い合わせ数やユーザーの純減が止まらないという状況です。(全国の弁護士1/3が登録しているため頭打ちという問題もある) それらの状況を打開すべく、問い合わせ数とユーザーの純増を目指すため施策を回し、ユーザーにより良い機能、UIを提供しようというプロジェクトです。 7人チームのスクラムで主に施策を考えたり、実際に実装してみてユーザーの反応をOptimizeのA/Bテストを回して、BigQueryで効果検証をするという流れでやっていましたが、断捨離業務や新機能の開発など幅開く対応しました。 `成果` Googleのアルゴリズムアップデートなどの影響で残念ながら、思ったように成果は振るっていませんが、 今現在でも問い合わせ数とユーザーの純増を目指しています。 --- #### 毎週金曜日に行う業務外の20%ルールで対応した案件【弁護士ドットコム株式会社】 `概要` 弁護士ドットコムでは毎週金曜日に普段の業務から離れて、別でチームを組み、 これまで溜まってきた負債を回収しようという取り組みがあり、それらを自分たちで発案して実際に改修していくという制度があります。 複数の対応があるため、こちらにまとめます。 `使われていないテーブルの断捨離` これまで10年以上続いているサービスのため、使われなくなったテーブルやロジックが乱雑していて、開発効率の妨げになっていたため、それらの負担を少しでも無くしていこうということでチーム4人で対応しました。 内容はソースコード上で全文検索し、該当のテーブルが使用されていないか、またソースコード上では使用されている場合でもコンテンツとしては既に使われていない場合などもあり、それらをペアプロで調査して実際に断捨離できそうであれば断捨離を進めていくという流れで対応していました。 これらは成果として、今まで確立されていなかったテーブル削除の手順書の作成、 未使用なテーブル20個、その他不使用なカラムなどを削除しました。 `管理画面の改修` 管理画面は長年放置されていて、不具合が出たら修正するという方針になっていました。 ですが、普段業務として使用している方からは不満が溜まっていたようで多くの改善要望がありました。 それらを改善しようということになり、4人チームでミニマムの改修で大きく業務効率を上げれる箇所はないか管理画面をみんなで実際に使ってみて、目星をつけた機能を普段から使用している部署にヒアリングして実際に回収を行いました。 やったこととしては、複数のページに跨ったユーザー登録機能を一つにまとめて業務効率を改善、 またPHPのviewファイルで組まれていたページをReact×TypeScriptで組み直して、それらの改善手順書も作成しました。 もう一つは情報登録機能で並び替えがなく、普段は全消し全登録を繰り返しているという箇所をReact×TypeScriptで組み直して実装しました。 `PHPUnitの改善` 弁護士ドットコムではテストカバレッジ38%というあまり高くない数字とはいえ、ファイル数は1000以上あるためCIを回しているときのPHPUnit終了時間が9分も掛かっていました。 これらを効率化するため、PHPUnitの見直しするためのチームを発足して対応しました。 テストの並列実行、テストコードの見直し(具体的にはseeder、ixtureの削除、テスト自体の修正など)を行うことで4分台までPHPUnit終了時間を縮めることができました。 --- #### みんなの法律相談リニューアル【弁護士ドットコム株式会社】 `概要` 入社後すぐに配属されたプロジェクト。 弁護士ドットコムの根幹サービス「みんなの法律相談」のリニューアル対応です。 10年以上運用しているサービスのため誰も理解していない複雑な仕様、SP/PCで違うロジックのControllerなど様々な問題を抱えていたためにこれらの仕様をまとめて、ソースコードをシンプルに保ち品質保証を高めるという内容でした。 私がアサインしたタイミングではすでにある程度の要件はまとまっていたため、主にプログラムを書いたりテストをして、必要になれば関係部署とやりとりを行い要件をまとめて進行しておりました。 チームは6名で、こちらはカンバン方式を採用して各々がタスクをこなすという方針で進めていました。 `成果` 今までSP/PCで見た目も別れていたため、それらをレスポンシブ化、 また無駄なassetsファイル、使われていないロジックの断捨離を行うことでサイト表示速度の向上につながり、サイト訪問者数が大幅に増加し、社内の最優秀チームとして表彰されました。 --- #### 生協アプリ【副業】 `概要` 関西圏の一部の地域住民向けアプリのAPI開発です。 途中参画ながら、バックエンドのサブリーダーとしてアサインしてからバックエンドを実装しつつ、 ボーイスカウトルールを目標にリファクタを進めました。 またこの案件でのドキュメントが乱雑になっており、誰も把握していない状況でしたので、チームで話し合いGitのプロジェクト内でのドキュメント管理を整備、その他自動テストと静的解析をGithub Actionsで導入して業務効率化を図りました。 その他にもPR作成時のコミット粒度や、レビュー依頼の方法など様々なアプローチを行いました。 `技術領域` 主にバックエンドのAPI開発を担当、 参画当初すでにぐちゃぐちゃになったDB構成や、コードを追って仕様を把握するまででも精一杯の状態でしたが、上でも書いたようにボーイスカウトルールを行うことで徐々に初めての人でも読みやすく、管理しやすいコードを意識的に書くように心がけました。 さらに何かを触ればどこが壊れる。の様な状態になっていたのでチームでなるべくテストを書こうと呼びかけ、今ではバグ頻度を確実に下げることができています。 --- #### アニメキャラクター音声通話キャンペーン【株式会社Sinq】 `概要` キャンペーン番号に電話すると番号を選択し、指定の番号を押すと決められたキャラクターの音声が再生される。 Twilioという通話音声APIを使用した開発。 `技術領域` TwilioAPIの使用が初めてなので、1行ずつデバッグしてどんなデータを渡せばどんなデータが返ってくるのかを試しながら開発しました。 〇〇回線以上はパンク、キャンペーン開始日時〜キャンペーン終了日時に該当しなければコールを切断、 日時により音声データが変わるなどの複雑な分岐を求めれる仕様でしたが、 日時などの条件を定数ファイルで保管、分岐はなるべくネストしない様に切り分けるなどを意識して実装しました。 スムーズに実装を進められて想定していた工数より半月近く空いてしまったので、 しっかり書いた事がなかったテストコードを書いたテストが出来ました。 --- #### キャンペーンレポート管理システム【株式会社Sinq】 `概要` 広告代理店からの案件が大半なためキャンペーン案件をよく制作しており、 今まで開発してきた知見を活かしてキャンペーン管理システムを作りたいと言う話があり、自身も開発者として参画。 キャンペーンと言えど様々な種類があるため、先ずは形にする事を最優先と考えてSNSキャンペーンから開発する事になりました。 `技術領域` 実装内容は、別のシステムで収集してきたキャンペーン情報を一定時間でバッチ処理を起動し、 処理の中でキャンペーンに紐付く情報をデイリーデータとしてDBに保存して、APIでフロントにデータを渡すという内容です。 SNSキャンペーンは大きく分けてSNSキャンペーンを設定し、 設定したキャンペーン内容で情報を取得してくると言う管理機能、収集してきた情報を デイリーデータをレポートすると言う機能の二つがあり、 自身はデイリーデータをレポートする機能の設計・担当を致しました。 `成果` ディレクションや見積もりの作成など普通であれば新人のうちから関わる事のない上流工程を学ぶことで、 今のサーバーサイドエンジニアとしてだけでなく、開発の全体を見渡せるエンジニアになれたと感じております。 また技術面ではWebサイトの中では大きい規模の案件でチーム開発に携わり、自分一人だけが見れるコードは書かないという意識付けやGitHubフローを学びました。 --- #### キャンペーン管理収集機能システム【株式会社Sinq】 `概要` 自社サービス開発。 広告代理店からのキャンペーン案件が多いので、管理画面上でキャンペーンに使用するハッシュタグやツイートIDを指定して参加条件を満たしているユーザ情報を収集し、当選者などを管理しやすいシステムの開発をすることになりました。 `技術領域` 担当した開発は一部機能のリツイート収集システムです。 簡易的ではありますがDB設計からシステム設計実装までを一人しました。 実装内容は、TwitterAPIを使用して管理画面上で登録したツイートIDをcronを回して一定時間経つと、 自動的に登録したツイートIDのリツイートまたは引用リツイートしたツイートを収集してDBに保存。 その情報を管理画面上に表示して当選者などをお客さん側で簡単に設定でき、CSVエクスポートが可能というものです。 苦労した点は、TwitterAPIを使ってデータを引っ張ってくるやり方を従来であれば指定の時間から指定の時間をcronで収集してDBに保存するというやり方を取っていたが、それだとAPIの上限が1度に100件までしか収集できないため投稿数が多いと歯抜けになってしまうという課題がありました。 それをTwitterAPIに紐づけられたページングを使用し、ID順に取得する事でこの問題を解決することができました。 また同じ様な問題で、TwitterAPIの仕様で決められたリツイート取得では件数が決められている、引用リツイートを収集できないなどの理由で今回の要件は満たせませんでした。 どうにか収集できる方法はないか試行錯誤した結果、ツイート検索APIの組み合わせで上記の要件を満たせる方法を発見し、実際に組み込みました。 --- #### キャンペーンお問合せフォーム【株式会社Sinq】 `概要` 期間限定LPのアンケートフォーム。 アンケートフォームの内容を管理画面上で表示とCSVダウンロードするだけと簡単な要件でした。 客先サーバーでPHPが使えないことが判明し、API経由で別サーバーに管理画面とDBを立てて対応。 `技術領域` 管理画面上に反映させるという簡単な内容でしたが、クライアントのサーバーにPHPをインストールする事ができないということでJavaScriptの非同期通信でフォーム内容を別ドメインのサーバを用意し、そこにLaravel環境を立ててクロスドメイン対応。 バリデートを行い問題があればレスポンスを返し、問題がなければ保存するという対策を行いました。 この時点では、API開発が初めての開発だったのとCORSがしっかり理解出来ていなかったので、記事を読んでしっかりCROSドメイン通信を学びました。 取得元のLaravelで作った環境にCORSライブラリをインストールし、フォーム側のドメインからのリソースアクセスを許可しクロスドメインに対応出来る様にしました。 #### 釣具ECサイト【株式会社Abridge】 `概要` 関西圏で大手の釣具屋ECサイトの案件。 自身はフロントエンド/バックエンドとプラグインの開発・カスタマイズなどを担当しました。 既に運用しているASPのECサイトを自社で使いたいという制作依頼で、経験が浅いながらもディレクターが不在の中、自身で要件定義をまとめて使用するプラットフォームの選定、見積書の制作などを経験しました。 `ディレクション` デザインは外注のデザイナーとやり取りを全て担当。 デザインに沿ってEC-CUBE(Symfony)のテンプレートエンジンTwigでコーディングする作業。 その他自身でお客様の要望通りに調整し、実装。 `技術領域` プラットフォームは国内でコミュニティが活発なEC-CUBEを選定。 ローカルで環境を構築し、規定やソースコード/DB構造などを確認、この時初めてのチーム開発だったのでGitHubを使った開発も用意。 経験が浅いこともあり、プラグインのカスタマイズを主に担当。 ランキング機能・オススメ機能・カート周りなどのプラグインを要件通りの動きになるように実装。 カスタマイズもなるべくコアな部分は変えずに応用できそうな箇所を探してそのコードをその部分に当ててるように最小限に書くことを意識しました。 `成果` ディレクションや見積もりの作成など普通であれば新人のうちから関わる事のない上流工程を学ぶことで、 今のサーバーサイドエンジニアとしてだけでなく、開発の全体を見渡せるエンジニアになれたと感じております。 また技術面ではWebサイトの中では大きい規模の案件でチーム開発に携わり、自分一人だけが見れるコードは書かないという意識付けやGitHubフローを学びました。 --- #### 農業マッチングサービス【株式会社Abridge】 `概要` WEB開発部に配属後すぐに自社で農業で働きたい人と人手不足の農家をつなぐマッチングサイトを作りたいと言う事で実践研修を兼ねて私が担当することになりました。 `技術領域` この時点では、ほとんどろくな研修もやっていない状態なので右も左もわかりませんでした。 とりあえずサーバーはさくらVPSというものを使用するということだけ決まっていたので、サーバーの仕組みや役割などを学んだ後に、実際にVPSを設定し、説明に添いながらファイアウォール設定/SSL設定を設定後、LAMP環境の構築を経験しました。 実装自体は、この時初めてPHPを使用したので本を見て基礎を取得しました。 オブジェクト指向の理解が浅く、最初はスパゲティコードになってしまいましたが後半はその気づきを活かし、管理しやすいコードを意識していました。 `成果` この案件は私がWebエンジニアとしてWebの技術を一通り経験させてやりたいという先輩社員の想いがあって、一人でサーバー構築から実装まで行うことが出来ました。 残念ながら現在は更新されておらず放置されてしまっているようですが、 この案件を通してフロント/サーバーサイド/サーバ設定などWEBの仕事を一通り実践する事で、後の自信に繋がりました。 --- ## 活動 #### 最近書いたQiita記事 - [Laravelワカンネ(゚⊿゚)から「完全に理解した()」までステップアップ](https://qiita.com/namizatork/items/801da1d03dc322fad70c) - [PHP初心者とお仕事した時に用意したコーディングルールのテンプレ](https://qiita.com/namizatork/items/79b0a8002575bc74dfd8) - [まだレビューでそんなやりとりしてるの?PHPStanとPHP-CS-Fixerを導入して楽しよう(Github Actionsを添えて)](https://qiita.com/namizatork/items/ca87de50d70d243b5f99) #### 登壇資料 - [PHPerKaigi2022 / PHPのエラーを理解して適切なエラーハンドリングを学ぼう](https://speakerdeck.com/namizatork/phpfalseerawoli-jie-siteshi-qie-naerahantorinkuwoxue-hou-2) - [MeetUpOkinawa / もう細かいレビューはしたくない/されたくない](https://speakerdeck.com/namizatork/mouxi-kairebiyuha-sitakunai-saretakunai) - [SPA/PWA/AMPってなに?](https://speakerdeck.com/namizatork/amptutenani) - [Laravelの「Hello World」を表示するまでの処理を追ってみた](https://speakerdeck.com/namizatork/laravelfalse-hello-world-wo-biao-shi-surumadefalsechu-li-wozhui-tutemita) #### 社内ブログ PHPUnitの速度改善をテーマに社内ブログを書きました。 https://creators.bengo4.com/entry/2022/02/28/164914 #### メンター業務 生徒さんをメンターしつつ、一緒に副業を体験させてエンジニア就職に必要な事を教えていました。 この記事もメンターの転職活動用のポートフォリオとして一緒に考えて執筆しました。 [ど素人でもフロントエンドエンジニアになれますか?](https://qiita.com/natsumi1206/items/a4483d830cb26ed74a0e) #### 主催の勉強会 - オンライン酒飲みLT会 - 参加人数18人 - https://connpass.com/event/215975/ - Laravelハンズオン - 参加人数23名 - スタッフ6名 - https://connpass.com/event/146307/ - もくもく会 - これまでの参加約50人 - https://connpass.com/event/166264/
応募
トピック
質問
回答