芥川 周平

社名非公開 / 開発部

芥川 周平

社名非公開 / 開発部

芥川 周平

社名非公開 / 開発部

Why not create your own Wantedly profile?

Showcase yourself and your experiences to bring your professional story to life.

Join

2021年8月に現職を退職。翌9月からの就職先を探しています。 [略歴] 学生時代にNode.js・DockerなどのWeb技術に触れ、2017年にWebサービスの受託開発をメイン事業とする会社へ新卒で入社する。

In the future

Ambition

In the future

受託での新規開発から初期運用(1〜3年)といったフェーズを多く経験してきました。 様々な案件に携われる楽しさはありますが、一つまたは少数のプロダクトに長く携わりたいと思うようになりました。

Apr 2017
-
Aug 2021

開発部

Apr 2017 - Aug 2021

新卒入社1年目から、大手アミューズメント施設90店舗700台に導入する自動受付精算機のデスクトップアプリケーションの開発案件にメインプログラマーとして起用される。 技術選定や設計段階から任され、開発チームがWeb開発の経験に特化していることから、「Electron」を技術基盤として採用する。チャレンジ精神やプロジェクトをやり遂げる責任感を評価され、同年の社長賞を受賞する。

[Electron] 大手アミューズメント施設 自動受付精算機のアプリケーション運用保守

※ 開発実績も別途公開しています。 [内容] 開発から引き続き運用保守を行っている。 ・定期的な機能追加・不具合修正などの実装・更新作業 ・Gitlab CI/CDの導入 ・Renovateを用いての依存関係の更新 ・トラブル発生時の調査・復旧などのリモートオペレーション ・アプリケーションログからのトラブル分析・修正 店舗にある精算機(Windowsマシン)に対してリモートでオペレーションを実行するためにLinuxサーバーを踏み台としてSSHポートフォワーディングを行い、Microsoft Remote Desktopでリモート接続を行ったりしている。

Oct 2018 - Aug 2021

会社への貢献

## Gitlab を導入 入社1年目の夏に先輩と協力し、業務効率向上のために社内にGitlab CEを導入した。 ## Git flowを浸透させる それまでSVNで1ブランチ運用を行うのが主流だった社内のメンバーに対し、Gitの使い方とGit flowを用いたブランチ運用を浸透させた。 手厚く説明・サポートを行ったため、プログラムを書けないWebデザイナーにも習得させることができた。 ## Gitlab CI/CD を導入 社内にCI/CDによる自動テスト・デプロイの環境を整えた。 ## Renovateを導入 CI/CDとRenovateを組み合わせて依存関係の定期更新を行う仕組みを作った。 ## Unityプロジェクトに自動ビルドシステムを構築 Unity・Gitlab CI/CD・Fastlaneを組み合わせてUnityアプリケーションを自動ビルドするシステムを構築した。 ## RSSグループを構築 社員の技術知識を高めるために社内チャットに技術ブログやニュースなどを流すRSSグループを導入した。 役員から好評を得ることができ、情報ソースの追加・整理・保守を任されている。 記事を取得・投稿するシステムはNode.js・Dockerを用いてサクッと建てた。 ## Vue.jsを社内標準として導入 社内で勉強会を開きVue.jsを導入した。 プログラムを書けないWebデザイナーにもコンポーネントについて説明し習得させることができた。 [Vue.jsを採用した理由] 私個人としてはJSXで記述できTypeScriptと相性の良いReactを採用したかったが、 ・社内のWebデザイナーがJavaScriptを一切書くことができず、JSXで記述するReactはハードルが高い ・社内にフロントエンドエンジニアというポジションが確立されておらず、他のプログラマーが新規にフロントエンド開発に参加することが起こり得る  ・JSXのReact/Next.jsよりもSFCのVue.js/Nuxt.jsの方が学習コストが低く済む  ・Nuxtの方がフレームワークとしてのサポート範囲が広く、日本語ドキュメントも充実している といった理由からVue.jsを採用することにした。 ## 技術調査・検証 新しい技術に興味のある人物と社内で認知されているので、よくライブラリ・フレームワークなどの技術検証を依頼される。 都度検証結果をPDF資料などにまとめて報告を行っている。 報告内容も高く評価されている。

Apr 2017 - Aug 2021

[Vue/Nuxt] ビデオ通話を用いた合コン形式のマッチングサービスのフロントエンド開発

[役割] メインプログラマー(フロントエンド) ・設計 ・実装 [メンバー] 3名 ・フロントエンドエンジニア 2名 ・デザイナー 1名 [開発言語] TypeScript [フレームワーク] ・Vue.js(Nuxt.js) ・Firebase ・Agora.io ・TRUSTDOCK(eKYC) ・Stripe.js(決済) ・WebSocket [インフラ] ・Amazon CloudFront・S3 [その他ツール] ・OpenAPI Specification 3.0 ・Gitlab CI/CD ・Renovate ・Jest ・Storybook ・ESLint/StyleLint/Prettier ・husky/lint-staged [内容] 2:2の合コン形式でビデオ通話ができるマッチングサービスを開発。 ビデオ通話サービスにAgora.ioのWebSDKを使用。 決済にはStripeを使用。 [工夫した点] ・バックエンドとのAPI定義にOpenAPI Specification 3.0を導入。環境構築から基本定義までを済ませた状態でバックエンドエンジニアに共有を行なった。 ・フロントエンド側はOpenAPI Generatorを用いてTypeScriptコードを自動生成している。 ・運用保守のためにGitlab CI/CD・Renovateを導入。CIでLinterやテストを回してnpmの依存関係を更新するフローを構築している。

Dec 2020 - May 2021

[Vue/Nuxt] 教育機関向け学習教材

[役割] メインプログラマー ・要件定義 ・設計 ・実装 フロントエンド:環境構築と初期実装を行い、開発はもう一人のプログラマーへ引き継ぎ バックエンド:環境構築から実装までを担当 [メンバー] 3名 ・プログラマー 2名 ・デザイナー 1名 [開発言語] TypeScript [フレームワーク] ・フロントエンド:Vue.js(Nuxt.js) / Firebase ・バックエンド:Node.js / Nest.js [インフラ] ・AWS Lambda (Dockerデプロイ) / API Gateway ・DynamoDB / CloudFront / Serverless Framework ・CloudWatch [その他ツール] ・OpenAPI Specification 3.0 ・Gitlab CI/CD ・Renovate ・Jest ・Storybook ・ESLint/StyleLint/Prettier ・husky/lint-staged [内容] 小学生向けにフードロス問題を題材としたSTEM学習の教材を制作。 [工夫した点] ・低予算・短期間の案件であったためサーバーレス構成を採用しFirebase Authenticationで認証に伴う実装期間を短縮した。 ・APIクライアントコードを自動生成した。 Nest.jsでOAS3形式のAPI定義を自動生成し、OpenAPI Generatorを通してクライアント側のTypeScriptコードを自動生成している。

Dec 2020 - Feb 2021

他社向けにCI/CDでの自動ビルドシステムを導入

[使用サービス] Gitlab CI/CD / Fastlane / Unity [内容] 他社が開発中のUnityゲームプロジェクトに開発効率の向上を目的とした自動ビルドシステムを導入。 GitにバージョンタグをつけるとiOS/Android/Oculus向けのアプリバイナリがビルドされ、指定の共有フォルダにapk/ipaがデプロイされる。 先方にMac miniを発送してもらい、自社にて実装・設定を行なった。 納品時には客先へ出張しセットアップ・動作確認までを行なった。 他にマルチプレイヤー実装などのコンサルティングも行った。 先方が導入中のマルチプレイヤーライブラリに不満点を持たれており、上位プランや競合サービスとの比較・提案を資料にまとめ報告した。

Oct 2020 - Nov 2020

[React/Pixi.js] 家電メーカー向け・住宅組み込みAndroidタブレットにゲームアプリを開発・提供

[役割] メインプログラマー ・要件定義 ・技術検証 ・設計 ・実装 [メンバー] 2名(プログラマー・デザイナー) [開発言語] TypeScript・Kotlin [フレームワーク] React / Redux / Pixi.js (react-pixi) / Spine [その他] ・Gitlab CI/CD ・Renovate ・Jest ・ESLint/Prettier ・husky/lint-staged [内容] リビング等の壁に設置して家電の制御などを行うAndroidタブレット向けに、子供からお年寄りまで楽しめるシンプルな育成ゲームを提供。 React/Pixi.jsで作成したブラウザゲームをAndroid WebViewから実行するハイブリッド構成を使用している。

Feb 2020 - Apr 2020

[Electron] 大手アミューズメント施設 自動受付精算機のアプリケーション開発

[役割] メインプログラマー ・技術検証 ・設計 ・環境構築 ・実装 [メンバー] 3名 ・プログラマー 2名 ・Webデザイナー 1名 [動作OS] Windows 10 [開発OS]Windows 10 / macOS [開発言語] JavaScript(ES2015~) [フレームワーク] Electron / Node.js / jQuery / EJS [主要機能] ・通常受付 ・予約のチェックイン ・整理券発行・チェックイン ・チェックアウト・精算 ・物販購入 ・イベントチケットの予約・購入 [内容] 日本全国に90店舗・700台ある大手アミューズメント施設向けに自動受付精算機のアプリケーションを開発。 学生時代と入社してからの実績を社長や上長に評価され、新卒1年目からメインプログラマーとして起用される。 本案件でElectronを用いて組み込みアプリを作成するノウハウを構築した。その後社内の同様の案件でも採用されることとなった。 [工夫した点] ・自身を含め開発メンバーがWeb技術に特化していたため、Electronの使用を提案。 検証用アプリを作成し提出したところ採用された。 ・QRコードリーダー・自動釣銭機などのハードウェアが搭載されており、それらとはNode FFIを用いて各SDKのDLLを呼び出している。 ・Electronを採用したことで慣れているMacで開発できた。ハードウェアに依存する箇所の実装のみWindowsで開発した。 [苦労した点] ・入社して初めての初期開発案件だったため、設計が疎かになってしまった。 ・モジュール同士の相互依存やクラス継承を多用してしまったことにより、後の保守・改修業務を複雑にしてしまった。 ・フレームワークに複雑に依存する実装になってしまっており、保守でのバージョンアップに苦労した。

Dec 2017 - Oct 2018

Apr 2013
-
Mar 2017

神戸電子専門学校

4 years

ITエキスパート学科(高度専門士)

Apr 2013 - Mar 2017

[2013年度 1年目] アルゴリズム・プログラム設計・実装・ネットワーク・データベースなどプログラミングに必要な基礎知識を学び、2013年10月に基本情報技術者試験に合格。 C言語を学び、Digital Works(全校生がチーム形式で参加する学内プログラムコンテスト)にてRaspberry Piを用いたMP3プレイヤーを発表。

[Java/Node.js] Android向けホームアプリを開発

2015年度 Digital Works(学内プログラムコンテスト)で優秀賞を受賞した作品。 作り込みや使いやすさを評価された。 [工夫した点] ・タイル型UIを採用し、それぞれのタイルに好きな画像を割り当てることができる。簡単にホーム画面をドレスアップすることができる。 ・Google Playストアのカテゴリ情報を基にアプリ一覧を自動的に分類する。(iOS14の「Appライブラリ」の機能を2015年時点で先取りしていた。) ・キャラクターが画面の上を歩いている機能は、某携帯キャリアの羊の機能を真似た。 [担当] ・タイル型UI・カテゴリ分けドロワーのコンセプトを提案した ・アプリのカテゴリ情報を返却するためのAPIサーバーをNode.js/Expressで作成した。 ・Android側にカテゴリ問い合わせ、整理する機能を実装した。

Oct 2015 - Feb 2016

[Java/Swing] デスクトップOS向け アプリケーションランチャーを開発

2014年度 Digital Works(学内プログラムコンテスト)で最優秀賞を受賞した作品。 MacのSpotlightやAlfredのようなアプリケーションランチャーを開発。 Javaで開発し、クロスプラットフォームで動作する。 軽快に動作した点などが評価された。 [工夫した点] ・ユーザーディレクトリを再起的に探索してインデックスを作成するため、検索速度が速かった。 ・Yoinkのような一時的にファイルをドロップするパレットを用意した。 ・パレットにドロップしたファイル・アプリをまとめて開くことができるワークスペース機能を用意した。 [担当] ・ユーザーディレクトリを探索してインデックスを作成する処理 ・検索窓に文字が入力された時に検索し、結果を返却する処理

Oct 2014 - Feb 2015

[C言語/Linux] Raspberry Piを用いてMP3プレイヤーを制作

2013年度 Digital Works(学内プログラムコンテスト)に提出し、特別賞を受賞した作品。 Raspberry Piで再生・停止・曲送り・曲戻しが行えるシンプルな音楽プレイヤーを作った。 30分・50分など指定した時間に音楽がピッタリ収まるようにプレイリストを作成する機能がある。 Raspberry Piの発売日が2012年2月で、当時は他の学生も講師もRaspberry Piの存在をほとんど知らなかったので目新しさや発想を評価された。 (私が知っていたのは、Twitterでフォローしていたガジェオタ界隈が騒いでたため) [担当] アイデア出しから実装まで全部やった気がする。 [作った理由] 学校までの通学時間が(電車に遅延がない場合は)53分だった。 毎日講師が学校の前に立って挨拶をしているので、到着1分前に音楽を止めてイヤホンを外すということを毎日していた。 家を出てから52分後に音楽が停止するところだけでも自動化したかった。 途中で止まるのは嫌なのでピッタリ音楽が止まるようにプレイリストを作りたかった。

Oct 2013 - Feb 2014

基本情報技術者試験に合格

Apr 2013 - Oct 2013

[C言語] 機械学習的な三目並べAIを作った

プログラミングを習い始めて3ヶ月くらいの時に、3人1チームで三目並べゲームを作る課題が出た。 対戦相手(CPU)のアルゴリズムを考えるのが授業の主旨だったが、対戦アルゴリズムは最小限にしておいて、勝った時の対戦結果を学習させ続けてその手を真似すれば最強のCPUができるのでは?という提案をした(当時機械学習は知らなかった)。 勝った時の自分と相手の手をテキストファイル形式で保存し、対戦時に場と同じ状況をファイル内から探し出し、一番多い手を打つ実装にした。(手が見つからなければ最小限のアルゴリズムにフォールバックする) 発表時に他の班のCPUとバトルするので、前日は対戦しまくって学習させておいたが、決勝か準決勝で負けた。 [担当] 学習機能を提案した。ファイルIO部分のテキストのフォーマットなどを仕様に起こし説明した。 実装は残り2人に任せる部分が多かった。私は要求通りにできているかの確認を行っていた気がする。

July 2013 - Aug 2013


Accomplishments/Portfolio

[Electron] 大手アミューズメント施設 自動受付精算機のアプリケーション運用保守

Oct 2018 - Aug 2021

会社への貢献

Apr 2017 - Aug 2021

[Vue/Nuxt] ビデオ通話を用いた合コン形式のマッチングサービスのフロントエンド開発

Dec 2020 - May 2021

[Vue/Nuxt] 教育機関向け学習教材

Dec 2020 - Feb 2021

他社向けにCI/CDでの自動ビルドシステムを導入

Oct 2020 - Nov 2020

Show more


Languages

Japanese - Native