メンタープラン
自己紹介
情報系の大学を卒業後、2011年よりWebシステムの開発に従事。
プライベートでもアプリ制作やコンテストに応募。
MusicHackDayTokyo2014では他三名と作成したChrome拡張で、企業賞二つ獲得。
フリーランスとしても活動しており、
ヒアリングからシステム設計・実装して提供した実績あり。
ITで新しい価値や世界を創っていきたいと思っているが、
そのためにも「人」そのものを理解する必要がある思い、
「伝える技術」や「聞く技術(コーチング)」も学ぶ。
法人営業にも着手し、月に50社程飛込み営業などを行う。
人への興味が強く、より強く人と関わっていきたいと思っている。
2021年4月から個人事業主・法人2本立てで独立し、
IT関連全般(開発・集客・教育・コンサル・サポート・サービス導入など)や恋愛コーチ(コミュトレ)を行っております。
経歴・実績
2016
年
2月
〜 2021
年
3月
株式会社オーガランド
<職務要約>
主に楽天市場の店舗さん向けの販促ツールを提供するサービスの開発。
商品やカテゴリ等の各種ページにランキング情報や期間で切り替えるバナー、PCページからスマホ用ページを作成するツール等の多種多様な販促ツールを提供するサービス。
そのバージョン1がCakePHPで書かれていたものを、Laravelにリプレイスするプロジェクト。
---------------------------------------
[概要]ネットショップ販促支援サービスの運用開発
[規模]7名 (エンジニア3名、デザイナー1名、ディレクター2名、事業部長)
[役職]なし
[担当]開発関連全て(外注対応、エンジニア採用含む)
[環境]ruby2系 / rails4系 / vagrant / vue.js2系 / AWS / php7系 / laravel5系
[ポイント]エンジニア1名によるサービス運用
---------------------------------------
<身についた知識・スキル>
・Vue.js導入、Vue/Rails/laravel開発、障害調査、外注依頼、AWS導入、
・開発リソース管理(自分/リモート外注者/クラウドソーシング)
・採用
---------------------------------------
<職務詳細と工夫したこと>
初期環境構築
新しい開発環境を作る上で、
・外注者等新しい人でもすぐ環境を構築できるか
・API連携のある別システムも含めて問題なく動作できるか
等を考慮して、開発環境とAWS上のステージング・本番環境を構築した。
AWS環境の工夫
楽天サーバへの接続が日本IPからしか受け付けないという特殊仕様のため、
AWS上の環境は全てNATで日本IPに変換するようにした。
(1サーバ1日本IPと結びつけてしまうと、サーバ台数分日本IPを取得する必要があり、オートスケーリングに対応できないため、NATを利用)
JSフレームワークの選定&Vue.jsの適応
元々jqueryで書かれていたものに対して規模が大きくなってきたため、
jsフレームワークを適応することを提案。
複数のフレームワークを社内メンバーのスキルや導入コスト・運用コスト等を考慮し、
Vue.jsを選択。初期導入も含めて行う。
Vue.jsの知見を持つものがおらず、jquery脳だったので概念から学び、他メンバーに横展開を行う。
コーディング規約の導入&リファクタリング指揮
元々知識の豊富なメンバーがおらず、修正に修正が重ねられ、属人的で複雑なコードになっていた。
それに対して、他メンバーが理解しやすいよう、修正コストが下がるよう、
コーディング規約に則り、仕様も把握しやすい実装になるよう導いていった。
具体的には、PHPMDやCodePHP_SnifferをsiderによりPR単位に指摘されるように導入したり、
毎回のレビューでわかりにくい点や複雑なロジックを指摘し、改善していった。
工夫した点としては、実装者は結局人間であるため、闇雲に指摘するのでなく相手をきちんと見るということ。
一度身に付いた実装方法をすぐ変更して修正するか、頑固に今までの書き方に拘るかは人によって異なる。
そのため、なぜこのような書き方が必要なのか、なぜそのような書き方だとわかりにくいのかを相手の技術や仕様への理解度にに合わせて説明したり、軌道修正を段階的に適応したり、一方的に決めつけるのでなく相手の意思や判断を尊重して指摘したりと、
相手の人間性を尊重しつつ着実にストレスが少なく着実に前に進んでいくよう工夫をした。
作成機能:受賞ランキングバナー作成機能
楽天市場ではデイリーランキングやリアルタイムランキングがあり、その受賞結果の画像を店舗ページに販促ツールとして設置するニーズがある。
ただ受賞したかどうかを探し、販促画像を作成するのはとても手間なため、それらを自動化する機能を実装。
受賞結果を自動で収集し、リスト表示。
任意の結果を用意したサイズから選んで販促画像をシステム側で作成する。
工夫した点としては、ランキング結果は非常に多くなる場合があるため、
読み込みを非同期で段階的に行い、
ソートもフロントだけで完結させてソートのたびに通信が発生しないようにして操作性を下げないようにした。
<職務要約>
主に楽天市場の店舗さん向けの販促ツールを提供するサービスの開発。
商品やカテゴリ等の各種ページにランキング情報や期間で切り替えるバナー、PCページからスマホ用ページを作成するツール等の多種多様な販促ツールを提供するサービス。
そのバージョン1がCakePHPで書かれていたものを、Laravelにリプレイスするプロジェクト。
---------------------------------------
[概要]ネットショップ販促支援サービスの運用開発
[規模]7名 (エンジニア3名、デザイナー1名、ディレクター2名、事業部長)
[役職]なし
[担当]開発関連全て(外注対応、エンジニア採用含む)
[環境]ruby2系 / rails4系 / vagrant / vue.js2系 / AWS / php7系 / laravel5系
[ポイント]エンジニア1名によるサービス運用
---------------------------------------
<身についた知識・スキル>
・Vue.js導入、Vue/Rails/laravel開発、障害調査、外注依頼、AWS導入、
・開発リソース管理(自分/リモート外注者/クラウドソーシング)
・採用
---------------------------------------
<職務詳細と工夫したこと>
初期環境構築
新しい開発環境を作る上で、
・外注者等新しい人でもすぐ環境を構築できるか
・API連携のある別システムも含めて問題なく動作できるか
等を考慮して、開発環境とAWS上のステージング・本番環境を構築した。
AWS環境の工夫
楽天サーバへの接続が日本IPからしか受け付けないという特殊仕様のため、
AWS上の環境は全てNATで日本IPに変換するようにした。
(1サーバ1日本IPと結びつけてしまうと、サーバ台数分日本IPを取得する必要があり、オートスケーリングに対応できないため、NATを利用)
JSフレームワークの選定&Vue.jsの適応
元々jqueryで書かれていたものに対して規模が大きくなってきたため、
jsフレームワークを適応することを提案。
複数のフレームワークを社内メンバーのスキルや導入コスト・運用コスト等を考慮し、
Vue.jsを選択。初期導入も含めて行う。
Vue.jsの知見を持つものがおらず、jquery脳だったので概念から学び、他メンバーに横展開を行う。
コーディング規約の導入&リファクタリング指揮
元々知識の豊富なメンバーがおらず、修正に修正が重ねられ、属人的で複雑なコードになっていた。
それに対して、他メンバーが理解しやすいよう、修正コストが下がるよう、
コーディング規約に則り、仕様も把握しやすい実装になるよう導いていった。
具体的には、PHPMDやCodePHP_SnifferをsiderによりPR単位に指摘されるように導入したり、
毎回のレビューでわかりにくい点や複雑なロジックを指摘し、改善していった。
工夫した点としては、実装者は結局人間であるため、闇雲に指摘するのでなく相手をきちんと見るということ。
一度身に付いた実装方法をすぐ変更して修正するか、頑固に今までの書き方に拘るかは人によって異なる。
そのため、なぜこのような書き方が必要なのか、なぜそのような書き方だとわかりにくいのかを相手の技術や仕様への理解度にに合わせて説明したり、軌道修正を段階的に適応したり、一方的に決めつけるのでなく相手の意思や判断を尊重して指摘したりと、
相手の人間性を尊重しつつ着実にストレスが少なく着実に前に進んでいくよう工夫をした。
作成機能:受賞ランキングバナー作成機能
楽天市場ではデイリーランキングやリアルタイムランキングがあり、その受賞結果の画像を店舗ページに販促ツールとして設置するニーズがある。
ただ受賞したかどうかを探し、販促画像を作成するのはとても手間なため、それらを自動化する機能を実装。
受賞結果を自動で収集し、リスト表示。
任意の結果を用意したサイズから選んで販促画像をシステム側で作成する。
工夫した点としては、ランキング結果は非常に多くなる場合があるため、
読み込みを非同期で段階的に行い、
ソートもフロントだけで完結させてソートのたびに通信が発生しないようにして操作性を下げないようにした。
2015
年
7月
〜 2015
年
12月
ザワット株式会社
<職務要約>
ブランド品オークションサイトの運用開発に携わる。
---------------------------------------
[概要]オークションサイトの運用開発
[規模]20名(自社 10名、協力会社 1名、アルバイト 10名前後)
[役職]開発時:なし(一時PM)、営業時:マネージャー
[担当]バグ改修、新規機能開発、運用、法人営業、営業管理
[環境]aws/python/php/redis
[ポイント] 動きの早い事業の中でのいちエンジニアに収まらない柔軟性
---------------------------------------
<身についた知識・スキル>
・プロジェクトマネジメント
・営業マネージメント
・飛込み営業
<職務要約>
ブランド品オークションサイトの運用開発に携わる。
---------------------------------------
[概要]オークションサイトの運用開発
[規模]20名(自社 10名、協力会社 1名、アルバイト 10名前後)
[役職]開発時:なし(一時PM)、営業時:マネージャー
[担当]バグ改修、新規機能開発、運用、法人営業、営業管理
[環境]aws/python/php/redis
[ポイント] 動きの早い事業の中でのいちエンジニアに収まらない柔軟性
---------------------------------------
<身についた知識・スキル>
・プロジェクトマネジメント
・営業マネージメント
・飛込み営業
2014
年
8月
〜 2015
年
6月
株式会社クロス・マーケティング
<職務要約>
新規事業開発室で進めていた新規事業のサンプリングサイトの運用開発に携わる。
---------------------------------------
【所属部署】
2014年8月~2015年6月 新規事業開発室(メンバー数:6名 内1名外注)
異動なし
[概要]サンプリングサイトの運用開発
[規模]6名(自社 5名、協力会社 1名)
[役職]なし
[担当]バグ改修、テスト、サーバ管理
[環境]ubuntu/python/mysql
[ポイント]自社エンジニア1名での運用開発
---------------------------------------
<身についた知識・スキル>
・分散バージョン管理
・python/Django開発
<職務要約>
新規事業開発室で進めていた新規事業のサンプリングサイトの運用開発に携わる。
---------------------------------------
【所属部署】
2014年8月~2015年6月 新規事業開発室(メンバー数:6名 内1名外注)
異動なし
[概要]サンプリングサイトの運用開発
[規模]6名(自社 5名、協力会社 1名)
[役職]なし
[担当]バグ改修、テスト、サーバ管理
[環境]ubuntu/python/mysql
[ポイント]自社エンジニア1名での運用開発
---------------------------------------
<身についた知識・スキル>
・分散バージョン管理
・python/Django開発
2011
年
4月
〜 2014
年
6月
株式会社アイソルート
<職務要約>
受託もしくはSESにて様々なWEBサービス(主に業務系)の設計・開発を主に行う。
期間は3ヶ月から数年まで様々。
---------------------------------------
【所属部署 異動歴】
■2011年4月~2014年6月 WEBソリューショングループ(メンバー数: 30名)
【担当プロジェクト歴】 ※実績やスキルが評価されたものを抜粋
2013年10月~2014年6月
[概要]テキストデータの構文解析+結果収集、提示システムの開発。
[規模]10名
[役職]SE
[担当]構造設計、詳細設計、開発、テスト
[環境]HP-UX/HiRDB/Java6.0/jsp+Servlet/Cosminexus
[ポイント] WEB-APサーバ間のEJB通信部を独力で設計・開発
---------------------------------------
<身についた知識・スキル>
・EJB通信技術
・WEB API
<職務要約>
受託もしくはSESにて様々なWEBサービス(主に業務系)の設計・開発を主に行う。
期間は3ヶ月から数年まで様々。
---------------------------------------
【所属部署 異動歴】
■2011年4月~2014年6月 WEBソリューショングループ(メンバー数: 30名)
【担当プロジェクト歴】 ※実績やスキルが評価されたものを抜粋
2013年10月~2014年6月
[概要]テキストデータの構文解析+結果収集、提示システムの開発。
[規模]10名
[役職]SE
[担当]構造設計、詳細設計、開発、テスト
[環境]HP-UX/HiRDB/Java6.0/jsp+Servlet/Cosminexus
[ポイント] WEB-APサーバ間のEJB通信部を独力で設計・開発
---------------------------------------
<身についた知識・スキル>
・EJB通信技術
・WEB API
2019
年
12月
〜 2020
年
8月
negocia株式会社(個人受注)
<職務要約>
WEB広告の結果をinputとし、機械学習等を用いて効果測定を行い、
次の広告の適切な設定値をoutputするシステムの、
システム設計からベースとなるアプリケーションを構築・テスト実装まで行う。
---------------------------------------
<概要>
[概要]WEB広告効果測定システム開発
[規模]参画時点:10名前後 離脱時点:20〜30名前後
[役職]バックエンドエンジニア
[担当]システム設計、環境構築、実装、テスト
[環境]python, flask, AWS lambda, doker
[ポイント] 0ベースからのシステム設計&環境構築を一人で行う
---------------------------------------
<身についた知識・スキル>
・lambdaを用いたシステム設計
・規模拡大に耐え得るflaskアプリケーション設計
---------------------------------------
<職務詳細と工夫したこと>
システム全体のインフラ設計
要件定義を確認し、本システムにおいて適切なシステム設計を行った。
(アウトプットはシステム構成図)
工夫した点としては、
・システムが常時稼働する必要が無いこと
・コスト面の優先度が高いこと
などから通常のインスタンスではなくlambdaを用い、デプロイも運用を考慮してコマンドベースで行えるよう設計した。
アプリケーションの初期構築
flaskはrailsのようにデフォルトのディレクトリ構造が無いため、実装開発を考慮して独自にディレクトリ構造を策定し、loggerやexception周り、ORMもファイル分割を行い、規模拡大に耐え得る構成で作成した。
本プロジェクトは自分が長く入り続けるわけではないのは決まっていたので、
自分がいなくてもちゃんと開発運用が続けられるよう、コメントやREADMEもしっかりと残していった。
カバレッジの網羅+テストコードの整理
実装優先にしていたためカバレッジが網羅できておらず、他の方が想定と異なるtestの組み方をしていて複雑化していたので、カバレッジの網羅とテストコードの整理を行った。
他の方が組まれていたテストがテスト同士密結合になっており、実装を修正した際のテストの修正が非常に困難となっていたため、
疎結合として分解し、修正も容易となるよう調整していった。
ただ、完全に分解して書き直すにはコストがかかりすぎると判断し、適度な所で切り上げ、それ以上被害が広がらないようにだけ考慮し、理想と現実の折り合いを付けていった。
<職務要約>
WEB広告の結果をinputとし、機械学習等を用いて効果測定を行い、
次の広告の適切な設定値をoutputするシステムの、
システム設計からベースとなるアプリケーションを構築・テスト実装まで行う。
---------------------------------------
<概要>
[概要]WEB広告効果測定システム開発
[規模]参画時点:10名前後 離脱時点:20〜30名前後
[役職]バックエンドエンジニア
[担当]システム設計、環境構築、実装、テスト
[環境]python, flask, AWS lambda, doker
[ポイント] 0ベースからのシステム設計&環境構築を一人で行う
---------------------------------------
<身についた知識・スキル>
・lambdaを用いたシステム設計
・規模拡大に耐え得るflaskアプリケーション設計
---------------------------------------
<職務詳細と工夫したこと>
システム全体のインフラ設計
要件定義を確認し、本システムにおいて適切なシステム設計を行った。
(アウトプットはシステム構成図)
工夫した点としては、
・システムが常時稼働する必要が無いこと
・コスト面の優先度が高いこと
などから通常のインスタンスではなくlambdaを用い、デプロイも運用を考慮してコマンドベースで行えるよう設計した。
アプリケーションの初期構築
flaskはrailsのようにデフォルトのディレクトリ構造が無いため、実装開発を考慮して独自にディレクトリ構造を策定し、loggerやexception周り、ORMもファイル分割を行い、規模拡大に耐え得る構成で作成した。
本プロジェクトは自分が長く入り続けるわけではないのは決まっていたので、
自分がいなくてもちゃんと開発運用が続けられるよう、コメントやREADMEもしっかりと残していった。
カバレッジの網羅+テストコードの整理
実装優先にしていたためカバレッジが網羅できておらず、他の方が想定と異なるtestの組み方をしていて複雑化していたので、カバレッジの網羅とテストコードの整理を行った。
他の方が組まれていたテストがテスト同士密結合になっており、実装を修正した際のテストの修正が非常に困難となっていたため、
疎結合として分解し、修正も容易となるよう調整していった。
ただ、完全に分解して書き直すにはコストがかかりすぎると判断し、適度な所で切り上げ、それ以上被害が広がらないようにだけ考慮し、理想と現実の折り合いを付けていった。
2018
年
7月
〜 2019
年
7月
株式会社Soeur
<職務要約>
女性のための就活・転職相談としてユーザ同士をマッチングし、やりとりを促すサービス。
途中まで開発が進んでいたがその時の実装者による開発が進まなくなってしまったため、開発をバトンタッチし、リリース・運用まで受け持つ。
---------------------------------------
<概要>
[概要]就職・転職相談サービス開発
[規模]3~5名
[役職]エンジニア
[担当]フルスタックエンジニア(デザイン以外)
[環境]ruby, rails45, docker, ansible, capistorano, AWS EC2, mysql
[ポイント] 途中で立ち行かなくなった所から、リリースまでに必要な要件を再抽出し、実現してリリースまで持っていった事。
---------------------------------------
<身についた知識・スキル>
・lambdaを用いたシステム設計、規模拡大に耐え得るflaskアプリケーション設計
・
---------------------------------------
<職務詳細と工夫したこと>
要件定義・詳細設計
どこまでができていてどこからができていないのか、最終的にどんなイメージかを確認し、設計を進めていった。
依頼者も資金的に余裕のある方ではなかったので、追加したい機能とコスト感・工数を都度比較検討し、互いに納得する仕様を設計し、進めていった。
リリースが伸び伸びになっていた事もあり、「早くリリースしたい」という点の優先度が高かったため、とりあえずリリースできるミニマムの形の設計と理想形の設計を行い、段階的にリリースするようスケジュールに落とし込んでいった。
実装方針変更への対応
リリース後、ユーザの反応によって実装の変更が入る事がちょくちょく発生していた。
結果的にうまくいった点ではあるが、最初の実装の段階で依頼者の思いを理解し、
変更の可能性をある程度考慮して変更に耐えられるよう疎結合で実装していた。
そのおかげもあってか変更があってもスムーズに変更していくことができた。
システム全体としても修正によってツギハギだらけの複雑化させることなく、属人化させずにシンプルでわかりやすいコードを維持することができた。
実装機能:チャット&ビデオチャット機能
互いに承認したユーザ間でリアルタイムチャットができる機能。
また、互いに希望があればビデオチャットもできるよう実装。
ビデオチャットは外部サービスを埋め込む形とし、低コストで実装。
リアルタイムチャットができるようrailsのAction Cableを使用。
LINEなどの見慣れたUIになるようイメージを合わせ、既読機能も付与。
<職務要約>
女性のための就活・転職相談としてユーザ同士をマッチングし、やりとりを促すサービス。
途中まで開発が進んでいたがその時の実装者による開発が進まなくなってしまったため、開発をバトンタッチし、リリース・運用まで受け持つ。
---------------------------------------
<概要>
[概要]就職・転職相談サービス開発
[規模]3~5名
[役職]エンジニア
[担当]フルスタックエンジニア(デザイン以外)
[環境]ruby, rails45, docker, ansible, capistorano, AWS EC2, mysql
[ポイント] 途中で立ち行かなくなった所から、リリースまでに必要な要件を再抽出し、実現してリリースまで持っていった事。
---------------------------------------
<身についた知識・スキル>
・lambdaを用いたシステム設計、規模拡大に耐え得るflaskアプリケーション設計
・
---------------------------------------
<職務詳細と工夫したこと>
要件定義・詳細設計
どこまでができていてどこからができていないのか、最終的にどんなイメージかを確認し、設計を進めていった。
依頼者も資金的に余裕のある方ではなかったので、追加したい機能とコスト感・工数を都度比較検討し、互いに納得する仕様を設計し、進めていった。
リリースが伸び伸びになっていた事もあり、「早くリリースしたい」という点の優先度が高かったため、とりあえずリリースできるミニマムの形の設計と理想形の設計を行い、段階的にリリースするようスケジュールに落とし込んでいった。
実装方針変更への対応
リリース後、ユーザの反応によって実装の変更が入る事がちょくちょく発生していた。
結果的にうまくいった点ではあるが、最初の実装の段階で依頼者の思いを理解し、
変更の可能性をある程度考慮して変更に耐えられるよう疎結合で実装していた。
そのおかげもあってか変更があってもスムーズに変更していくことができた。
システム全体としても修正によってツギハギだらけの複雑化させることなく、属人化させずにシンプルでわかりやすいコードを維持することができた。
実装機能:チャット&ビデオチャット機能
互いに承認したユーザ間でリアルタイムチャットができる機能。
また、互いに希望があればビデオチャットもできるよう実装。
ビデオチャットは外部サービスを埋め込む形とし、低コストで実装。
リアルタイムチャットができるようrailsのAction Cableを使用。
LINEなどの見慣れたUIになるようイメージを合わせ、既読機能も付与。
2021
年
4月
TechGuide合同会社
会社設立。
DX化が進んでいない中小企業へのサポートと、初級エンジニアが次のステージに進むためのスキルアップ支援を相乗的に進める。
IT教育・ITサポート・ITコンサル
会社設立。
DX化が進んでいない中小企業へのサポートと、初級エンジニアが次のステージに進むためのスキルアップ支援を相乗的に進める。
IT教育・ITサポート・ITコンサル
対応可能な時間帯
平日朝
平日日中
平日夜
土曜日
日曜日
返信スピード
24時間以内