ID:45140さん

3年後の目標や野望


感動を与えられるプロダクトを作り続けたい。

私はAppleの製品が好きでよく使用しています。 Apple製品を使用すると、ほとんどの製品で感動してしまいます。 同じPCなのに、同じイヤホンなのに何でApple製品はこんなに違うんだろう。といつも考えさせられます。 その1つとして考えられるのが製品としての高いクオリティが入っていると思います。 私はエンジニアとしてその感動を作り出すために、高いエンジニアスキルがつけられる環境で高い志でプロダクトを開発し続けたいと考えています。 またUXデザインまで考えられるエンジニアになりたいと思っています。

年収評価シート

2019年/2年以内

美容部員向け就活・口コミサイト (ユーザー側サービス・自社管理画面・クライアント管理画面・ IOS, Androidモバイルアプリ)

# 業務内容 スタートアップの会社に参画し、美容部員を目指している方向けの就活・口コミサイトの開発・運用を担当していました。 具体的な業務内容としては、 - Nuxt.js, Vuetify, TypeScript, Firebaseを用いたフロントエンドの開発 - 初期フェーズでのFirestoreの設計・実装 - Node.js, Nest.js, TypeScript, Postgres(CloudSQL)を使ったAPIの開発 - Dockerを使ってサーバーサイドの開発環境構築 - Jest, CircleCIを使ってサーバーサイドの自動テスト・デプロイを導入 - GAEを使ってインフラ構築 - Algoliaの検索システムの導入 - SendGridを使用してメールシステムの導入 - Twillioを使用してSMS通知の導入 - Cloud Functionsを利用してのクーロン,バッチ処理 - monaca, vue.jsを使用してアプリ開発 - 初心者のエンジニアの教育・マネジメント --- # 開発の課題 - コアメンバーのエンジニアが抜け1人でフルスタックに開発する必要があった - 0ベースから開発することが多かった - 運用や技術的負債を後回しにして、開発していたことでの問題の顕在化 # 解決策 > コアメンバーのエンジニアが抜け1人でフルスタックに開発する必要があった 初期のプロダクトがない状態では、とにかくスピーディーに開発することが必要でした。 すでに営業をかけている状態でのコアメンバーの離脱もあり、0ベースという状況で3週間でリリースしないといけない。という状況でした。 1人でAPIを0から作りフロントエンドまでということもできませんでした。そこでFirebase, Firestoreを利用して開発を行いました。 Firestoreでの知見は少なかったので、どういう設計にすれば良いのか?を学ぶために勉強会に参加したり、勉強会での登壇者に個人的に質問をしにいったりしました。また、簡単なアプリケーションを実装したりもしました。 このプロジェクトや個人で実装したのもあってFirestoreを使ってのアプリケーションを作る力が身につきました。Firestoreはフロントエンドで完結するので結果的に3週間で開発を終えることができてリリースまで持ってくことが出来ました。 細かい要望やビジネスロジックはCloud Fucntionsを使って実装したりすることもできました。1人で開発を行うのにFirebaseはとてもよかったです。 しかし、Firestoreはまだ発展途上というのもあり設計が確立されていなかったり、情報が十分でないので困る場面も多々ありました。クライアント(顧客)がいくつかつき始め、クライアント向けの管理画面を作成するタイミングで、Node.js, Nest.js, TypeScript, Postgres(CloudSQL)を使ったサーバーサイドの開発をし書き換えました。 フロントエンドはTypeScriptで書いており、Repositoryパターンを実装していたので、Firestore→REST APIへの変更はスムーズに行うことができました。 ### SaaS 1人で開発するために積極的にSaaSを利用しました。 検索サービスにはAlgoliaを利用しました。Algoliaを利用した理由は,Firestoreとの相性が良く、公式のドキュメントでも紹介されていたので実装がスムーズだったからです。 Algoliaを利用することで主に2つメリットがありました。 - 複雑なクエリを考慮したサーバーサイドの設計をしなくて良い - フロントエンドで完結できる CQRSを考慮することもAlgoliaを利用することでかなり減ります。またその後ジョインするフロントエンドとのコミュニケーションも最小限ですみ、フロントエンド側の細かい要望もAlgoliaが吸収してくれることになります。 ### 設計 設計に関する深い知識がほとんどなかったこと、経営者に近い環境で開発していたこともあり、DDDに興味を持ちました。 DDDの全てを設計に盛り込んだわけではないですが、ドメイン知識の深い理解とユビキタス言語を正しく扱うという点を重視して設計をし開発できるようにしました。 ### インフラ・自動化 またCircleCIとGitHubを使ってCI/CD環境を整えました。自動化できるものは積極的に自動化しました。 他にも分析して欲しいデータなどは、大体決まっていたのでCloud Functionsでバッチ処理を書いてクーロンで分析データを通知→管理画面で表示できるようにしました。 人材系のサービスだったので、履歴書の作成がとても手間になっていました。 そこで、ユーザーの応募情報を元に履歴書を自動で生成できるようにしました。 ユーザー応募→Cloud Functionsのtiggerを実行→REST APIから応募情報を取得→PDFで履歴書を生成→Cloud Storageに保存→ダウンロード ができます。 インターン生が初心者エンジニアとして入ったタイミングで、簡単に環境構築できた方が良いと考え、Dockerで環境構築しました。 ### Pマークの取得 Pマークを取得する必要が出てきたので、セキュリティ領域もしっかり実装することにしました。 GCPのIAM管理, インフラのアーキテクチャ構成, VPNの設定, Firewallの設定, ホワイトリスト, ブラックリストの登録なども行いました。 ### 知識の共有 1人での開発でどうしてもコアな知識が足りなかったり、未経験領域の十分な知見がないのは1つの課題でした。そこで勉強会に参加した際にできた友人などとslackでチームを作り情報交換を行うようにしました。 突然起きたインシデントを質問したり、新しい実装をするときにお互い設計をレビューしあったりすることで閉鎖的にならないように心がけました。勉強したことのアウトプットもみんなそこでやっているので、自分の知らない領域の知見も入ってくるのはとてもよかったです。 --- > 0ベースから開発することが多かった 0ベースからの開発、SaaSの導入、など新しい技術を使ったり、知識を入れながら手を動かすなど難しい点もありました。 新しい知識に関しては2種類の方法で学習しました。 1. 時間がある時(1, 2週間ほど) - 学びたい対象に対しての有名な本を1,2冊準備します。 - 有名な本は難しいことが多いのでそれを補うための簡単な本(絵でわかる・漫画でわかるなど)を3冊準備します。 - 簡単な本を1冊は熟読して、残りに2冊は1冊目になかった知識を入れることだけに集中します。 - 有名な本を読むだけの準備としての知識があるので、最後にその本を読みます。 この方法だと何かに偏ることが少なく、深い知識が得やすいと感じています。 2. 時間がない時(2,3日後) - 有名な本を1,2 ~冊調べます。 - その本に関するまとめの記事を10 ~ 20ほど集めて読みます。 - その本に関するslideを5 ~ 10ほど集めて読みます。 この方法だと記事やスライドがライトで、要点をまとめてあるので効率的に学ぶことが出来ます。 最後にアウトプットは、友人たちとのslackで常にアウトプットしているので そこで質問をしたり、フィードバックをもらったりすることが出来ています。 --- > 運用や技術的負債を後回しにして、開発していたことでの問題の顕在化 初期のフェーズはとにかくプロダクトを作ることに専念していたので、セキュリティやテスト環境など運用するにあたっての不安がどんどん顕在化し始めました。 具体的に発生したものは、 1. リリースした後に別の機能でバグが発生が頻発した 2. ロジックが間違っていたことで短時間の間だけ個人情報が一部公開されてしまった。 この2つのインシデントから、テストの重要性とセキュリティ向上の重要性を感じました。 そこで行ったのはJestを使ったテストの自動化です。 テストの観点は2つ - 機能は正しく動くか? - 適切な権限で機能が実行できる or 実行できないか? 何も変哲もない解決策に思えますが、このテストを心から重要だと思って書くことができると自負しています。この自動テストを導入したことで、当時ご迷惑をおかけしてしまったクライアントにも改めて信用を得ることが出来ました。 また、依存関係による思わぬバグもすぐに検知することができることで開発を行いやすくなりました。 具体的な数値では出せませんがテストを導入することで - テストを書くとコードが綺麗になる。 - テストを書くと健康になれる。 - テストを書くとモテる。 **テストはエンジニアを幸せにする。** と思います。

2017年/1年以内

スマホゲームアプリの開発【Corona/Lua/PHP/JavaScript】

# 業務内容 インターンとしてスタートアップの会社に参画し、ゲーム開発を担当しました。 具体的な業務内容としては、 - Corona SDK, Luaを使ってUIの開発・ゲームのロジックの実装 - アニメーションの実装 Google Apps Scriptでの業務効率をあげるツールの作成 ### 開発の状況 - エンジニアはインターン生含めて合計約6人ほど, 2, 3人のチーム - 新規開発が多く、スピード重視の開発スタイル - エンジニアとして自分はほぼ初心者 # 担当したアプリ - ノベル系脱出ゲーム (逆転裁判のようなゲーム) - 狼ゲーム, 嘘つきゲームの開発(1つのアプリに複数のゲームが入っている) - ど根性はるちゃん (脱出ゲームに近いゲーム性) - 三国志のクリッカーゲーム # 個人的な課題 エンジニア初心者だったのでとにかく早くプロダクトのコアな開発に取り組めるようにしたかった。 # 解決策 難しい機能や自分が想像できない機能に関してのタスクを優先的にとるようにしました。 インターンに参加するにあたっても、初心者のコードとしての質をとても評価してもらい 会社で一番重要なプロダクトにアサインさせてもらいました。 その中でキャッチアップしながら実装していましたが、機能全体ができてからテストを行うと軽微なバグ含めて500近くのバグが出てきました。 チームで開発していて自分はほとんどUIに関する実装がメインでした。 ここで自分のできると思う実装をやり続けてしまうと成長することもできません。 チームとしても自分が成長することの方が長期的にみた場合貢献できると考えました。 そこでバグを修正するにあたって、未経験領域を積極的に実装しました。 初心者かつ未経験領域というのもあってバグ修正にはとても苦戦しました。 コードを読むことも当時の自分にはとても難しかったのです。 理解するためには、どういう仕組みで機能が実装されているかを理解する必要があると思ったので 終業後や土日を使って、同じアーキテクチャや設計で同じ機能を0から自分で実装しました。 クラス図など先輩方がやっていたのをみようみまねで書いたり、書籍や記事を読みあさり、オブジェクト指向について学んだりしながら簡単なアプリケーションを実装しました。 そういった行動から実装したものを先輩方に見ていただきレビューをもらうこともできました。 他にもアニメーションの実装方法や、勉強しておいた方が良い知識などを教えていただける機会をいただけるようになりました。 とにかく楽しくて四六時中実装していたので、楽しそうに実装しているのを見てデザイナー・イラストレーターなどエンジニア以外の方からもアドバイスをいただけるようになりました。 ここで「教えがい」というものがあることがわかりました。 自分の成長はたくさんの方に教えていただいたからこそできたものだと思います。 1つ1つのバグの修正には時間がかかってしまいましたが、わからない→自分で実装してみる を何度も繰り返していくうちに他のインターン生と差がつきました。 その結果、重要なプロダクトを続けてアサインしてもらえたり、インターンのエンジニアとして唯一残していただき開発を続けることが出来ました。 ゲームなので、Webとは違う場面もあるかと思いますが、オブジェクト指向の考え方やプログラミング言語を使ってロジックを開発する力はつきました。

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

マネージメント能力

学生のインターン生のマネジメントをしていました。
初心者のエンジニアを自走可能な状態まで育てることが一番の責務でした。
どうすれば自走できるようになるのか?というのを一番考えました。 一番大事なことは1人の相手と向き合い、教育する立場にある方が教えることに一生懸命になることだと思います。 初期の頃、インターンの子は質問がメインで教えてもらうのが当たり前のような状態でした。 学校の延長で考えていたのかもしれません。 しかし、スタートアップというのもあり会社としても自分としても、そこまで時間を作ることが難しい状況でした。そこのギャップが彼のインターン生活での難しい点だったように思います。 色んなエンジニアの教育方法や、マネジメントの知識を入れた上で おすすめの本を教えても、時間をかけて読むこともなく。 おすすめの勉強法を教えてもほとんどやってもらえませんでした。 彼は彼なりに業務の中で、私のコードを真似ながら仕事を進めていきました。 どうすれば自分で、自分から勉強してくれるのか必死に考えましたが、ある日ペアプロに挑戦してみたところ彼の反応がとてもよかったのです。 彼からもペアプロだったらどうやって進めれば良いのか、なんで必要なのかがわかりやすい!と高評価でした。 私は、ペアプロなど多くの時間を使って教えることは自走できることにつながらないし、時間がかかって非効率だと思っていました。 ですが、この経験からわかったことは一件非効率なことが一番効率的なことだったということです。 何が一番大事なのかは、結局目の前のインターン生の子にとって何が一番良い教育なのか?ということを考えることだったと思います。 それまでは、知識ばかりを頼りにしていましたが目の前の人が何を求めているのか?を考えることが大切だと考えさせられる良い経験になりました。 拙い文章で恐縮ですが、最後まで読んでいただきありがとうございました。

アピール項目


アウトプット

GitHub アカウント
あり
Qiita アカウント
あり
Zenn アカウント
未入力です
Speaker Deck アカウント
未入力です
SlideShare アカウント
未入力です
特にアピールしたいアウトプット
あり

今後、身につけなければいけないと思っている技術は何ですか?

OSやインフラの深い知識が必要です。 また使用できる言語の数も少ないので、PythonやGoなど他の言語との違いなどを理解できるような状態にしたいと思います。 具体的にはこれらに取り組んでいます。 - OS自作 - Raspberry Piを使ったサーバーの構築 - IT関連の資格の勉強 - Pythonを使ってAtCoderに挑戦 - Pytyon, Go使っての個人プロダクトの開発

あなたが一番パフォーマンスを出せるのはどんな環境ですか?

- 成長を感じられる環境 - 新しい挑戦をしている環境 - 良い意味で、仕事を遊びと捉え楽しんでいる環境

キャラクター

直近で一番やりたいこと
技術を極めたい
好きなスタイル
好きな規模
水とプログラミングどっちが大事?
自信を持って人より秀でていると言える点
学習能力 / 問題解決力 / 巻き込み力
スキルのタイプ
得意なフェーズ
会社を選ぶ一番の基準
一緒に働く人
やりたくない分野
SI / 医療・介護 / 人材
その他の特徴
使用言語にはこだわらない / レガシーな環境を改善できる / 新しい技術はとりあえず試す / 3年以内には海外で働きたい / 趣味は仕事 / 起業/創業期のベンチャーにいた
その他のやりたいこと・やりたくないこと
未入力です

やりたい事

手を動かして設計してコードを書きたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
価値あるプロダクトを作り成長させたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
学び続けて技術力でプロダクトに貢献したい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
意義があることや社会に貢献できる仕事がしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
人や計画の調整・マネジメントをしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
レガシーなシステムの保守・運用・改善をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
企画や仕様を考えるところから関わりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
業務効率を改善して一緒に働く人のためになりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
全社横断的な共通基盤作りや強化をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
組織や文化を作る・成長させる仕事をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい

基本プロフィール

年齢
今年で30代前半
好きな Text Editor
vim
希望勤務地
東京都 / 神奈川県 / 京都府 / 大阪府
希望年収
600万円
転職ドラフトに参加して
企業から指名を受け取ろう!
会員登録をして転職ドラフトに参加すると、参加企業から年収付きの指名を受け取ることができるようになります。
会員登録する
ご意見箱

要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。

なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。

  • {{error}}
SIGN UPSIGN IN


転職ドラフトを友人や同僚に薦める可能性はどのくらいありますか?