技術習得を支え続けた私の個人開発ヒストリー / Hatena Engineer Seminar #28
by
Arthur
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
技術習得を支え続けた 私の個人開発ヒストリー id:arthur-1 2024-01-30 Hatena Engineer Seminar #28 1
Slide 2
Slide 2 text
Arthur と申します id:arthur-1 Mackerel開発チーム アプリケーションエンジニア 2022年新卒入社(もうすぐ丸2年) 𝕏: @Arthur1__ 2
Slide 3
Slide 3 text
おしながき ● 私の個人開発の歴史と技術習得 ● 最近進めている個人開発のモダナイズの様子 3
Slide 4
Slide 4 text
9年前から振り返ります 4
Slide 5
Slide 5 text
2015〜2017年 5
Slide 6
Slide 6 text
2015〜2017年の様子 学園祭実行委員会のWebサイトを内製する部署で 開発をしていた cf.) 「学園祭Web開発の現場とPHPのこれまでとこれから ── 技 術選定と教育から語る」 PHP Conference Japan 2023 https://speakerdeck.com/arthur1/php-conference-japan-2 023 6
Slide 7
Slide 7 text
2015〜2017年に得た技術 ● HTML・CSS ● JavaScript ● PHPを用いたサーバサイドプログラミング ● MySQL ● Webセキュリティ ● レンタルサーバの運用 7
Slide 8
Slide 8 text
2018年 8
Slide 9
Slide 9 text
2018年の様子 サークルを引退して ● 組織下で開発する機会がなくなった ● サークルのサーバが利用できなくなった →VPSを借りて、個人でWebサービスの開発を始める 9
Slide 10
Slide 10 text
Twicla 授業に出席したらボタンを押す と出席時刻が記録されTwitter (現:X)でツイート 自分の出席のモチベーションを 高めるために作成し、他の人も 使えるように仕上げた https://github.com/Arthur1/t wicla (画像がないのでイメージです) 10 出席する 火曜3-4限「電磁気学」 授業開始まであと3分
Slide 11
Slide 11 text
ぶらつき学生ポータル 「アグリコラ」というボード ゲームの戦績を記録・公開する サービス 後に、このサービスに蓄積した プレイ情報を元に戦略研究本を 同人誌として出した。 https://github.com/Arthur1/b uratsuki-portal 11
Slide 12
Slide 12 text
2018年に得た技術 ● git ○ この頃からソースコードは公開してた ● Bootstrapなどを用いたフロントエンド実装 ● Vue.js(サーバサイドとフロントエンドの分離) ● nginx ● Linuxサーバの運用 12
Slide 13
Slide 13 text
2019年 13
Slide 14
Slide 14 text
2019年の様子 本格的にmacOSに触れ始める 先ほど紹介したぶらつき学生ポータルをリ ニューアルした ● フレームワークをFuelPHPからLaravelに 14
Slide 15
Slide 15 text
2020年 15
Slide 16
Slide 16 text
2020年の様子 新型コロナウイルスのパンデミック 友人とオフラインで遊ぶ機会が失われた 大学の授業もしばらくなかったので暇だった 16
Slide 17
Slide 17 text
National Economy Online 「ナショナルエコノミー」とい うボードゲームをオンラインで 対人戦できるWebアプリ 最初はこっそり身内のために 作ったものだが、原作者と連絡 を取り一般公開できることに https://github.com/Arthur1/n ational-economy2 17
Slide 18
Slide 18 text
リリースからの成長 最初は荒削りな状態でリリースした 友人などユーザの声を聞いて、後に使い勝手をよくし ていった ● ログ機能の追加 ● デザインの変更 ● 不要な確認モーダルの廃止 この過程で一回コードを全部書き直して式年遷宮した 18
Slide 19
Slide 19 text
現在の利用状況 ● 延べ6,000回以上遊ばれている ● このサービスで自分を知り連絡をくれた方が何 人もいた ● プレイデータがたくさん集まったので戦略研究 にも活かせそうだが規約を整備できていない 19
Slide 20
Slide 20 text
個人サイト 就活もあるだろうな〜と思って 個人で作ってきたもの・関わっ てきたものをまとめたWebペー ジを公開 サーバサイドプログラミングか ら離れて、静的なWebサイトへ 回帰 20
Slide 21
Slide 21 text
2020年に得た技術 ● WebSocket ● Gatsby.js ● GitHub Pagesで静的なサイトを公開 21
Slide 22
Slide 22 text
2021年 22
Slide 23
Slide 23 text
2021年の様子 引き続きコロナ禍 リモートのインターンに行って業務での開発も経験 23
Slide 24
Slide 24 text
Agents Visualizer 大学のオブジェクト指向プログ ラミングの最終課題の問題が難 しかった 動作イメージを掴むために、入 出力をビジュアライズするWeb アプリをシュッと作って公開 https://github.com/Arthur1/a gents-visualizer 24
Slide 25
Slide 25 text
AgricolaDB ボードゲーム「アグリコラ」の カード情報を掲載するサイト APIの提供もしており、これを 元に他の人たちが別のサービス を作っていた 25 https://github.com/Arthur1/agricola-database-server https://github.com/Arthur1/agricola-database-frontend
Slide 26
Slide 26 text
一旦ここまでのまとめ 26
Slide 27
Slide 27 text
まとめ これまでしてきたことは、 自分のニーズを叶えるモノを、他人も使えるよ うなクオリティで企画〜リリースする であった 27
Slide 28
Slide 28 text
身についた力 設計力 ● 頭の中のイメージをDBやプログラムの構造とし てモデリング 実装力 ● 必要に応じて新しい技術を学び、それを用いて 動くモノを作る 28
Slide 29
Slide 29 text
手が及ばなかったところ マネタイズ ● 自らの学びのために私財を投じた モダンな運用 ● ペットを大切に育てていた ● 複数のサービスが同居していてメンテ困難 29
Slide 30
Slide 30 text
振り返り続き (はてな入社〜) 30
Slide 31
Slide 31 text
2022年 31
Slide 32
Slide 32 text
2022年の様子 大学卒業→はてな入社 Mackerelチームに配属 ボードゲームのための個人開発をする余裕はあ まりなくなっていく 社会人1年目&そもそもメンテが大変 32
Slide 33
Slide 33 text
しゃがみを決意 持続的にサービスを提供するために: ● 個人開発を自分だけのものから、他の人も参 画できるようにする ● toilの解消・特にインフラ周りをモダンにし たい そこで、開発ではなく環境整備を進めた 33
Slide 34
Slide 34 text
環境整備 ● ボードゲーム関連の開発はGitHubのOrgを分け る ● FaaSなどを積極的に採用し、自分の責任範囲を 減らす ● IaCを採用し、再現・複製可能なインフラへ ● デプロイフローの自動化 34
Slide 35
Slide 35 text
2024年 35
Slide 36
Slide 36 text
AgricolaDBリニューアル 2021年にリリースした AgricolaDBをリニューアル。 機能面はほぼ変化がないが、裏 側は劇的に変わっている 36 https://github.com/AgricolaDevJP/agricoladb-server https://github.com/AgricolaDevJP/agricoladb-viewer
Slide 37
Slide 37 text
インフラ 37
Slide 38
Slide 38 text
インフラの工夫点 安さと自分の責任範囲の狭さを重視した設計 ● LambdaのコンテナイメージにSQLiteのファ イルを埋め込んでいる ○ マスタデータのみでほぼ変化しない ● WebページはAstroのSSGで静的に書き出し たものをCloudflare Pagesで公開 38
Slide 39
Slide 39 text
その他工夫点 ● サーバにGraphQLを採用 スキーマからコード生成して、型に頼ったコードが書ける ● 閲覧者が情報の間違いを報告できる仕組み Google FormからGitHub Issueの作成 ● テストを用意して壊れても気づけるように 39
Slide 40
Slide 40 text
はてなに入ってからの個人開発 会社にいながら個人開発していると、それぞれ の場で学んだ知識をもう片方にも輸出できる! 40
Slide 41
Slide 41 text
はてな→個人開発 はてなで仕事をしているうちで身につけたこと を個人開発に生かした例: ● IaCによるインフラ構成の管理方法 ● サービスの監視 41
Slide 42
Slide 42 text
個人開発→はてな 個人開発で身につけたことをはてなでの仕事に 生かした例: ● Go言語によるWebサーバのboiler template ● GitHub Actionsの設計指針 42
Slide 43
Slide 43 text
総まとめ 43
Slide 44
Slide 44 text
まとめ 今自分はMackerelの企画・開発の両面に携わっ て仕事している 考えるだけ・作るだけでは成り立たない個人開 発での経験が非常に生きていると感じる 44
Slide 45
Slide 45 text
まとめ 自由に弄れる自分の庭を持ってみませんか? ● 実践的に技術習得する実験場にできる ● さらに得た知見は業務でも生かすことができる ● 自分なりの美学を持って庭を手入れすることで、 より良いサービスや設計を追求することができる 45
Slide 46
Slide 46 text
宣伝 Mackerel Drink Up #14 「アラート対応やSLI/SLO、エラーバジェット の運用を学ぼう」 本日2024-01-30(火)19:00〜 はてな東京オフィスにて! https://mackerelio.connpass.com/event/307409/ 46