SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

フロントエンド開発者に贈る、個人開発のファーストステップ

個人開発を始めてみよう──「失敗」を避ける大事な考え方とは?

フロントエンド開発者に贈る、個人開発のファーストステップ 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載では2回に渡ってソフトウェアの個人開発に関するアドバイスや楽しさ、学びを紹介します。前編に当たる本記事では個人開発の「失敗」を避けるためのアドバイスをお伝えします。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 BASE株式会社でシニアエンジニアを務めているプログラミングをするパンダ(@Panda_Program)と申します。本連載は「フロントエンドカンファレンス沖縄2022」で私が発表した内容[1]を記事として再構成したものです。

対象読者

 本連載の対象読者は、個人開発に興味があるソフトウェアエンジニアの方です。

個人開発に「失敗」しないための考え方

 ソフトウェアの個人開発とは、ソフトウェアエンジニアが自分のプライベートな時間を使ってWebサイトやスマートフォン向けのアプリを作成、公開、運用する趣味活動です。では、本記事のタイトルに含まれている「失敗」という語の指す内容とは何でしょうか。本連載で私はそれを「学習またはリリースを目的としたときに、その目的が達成できていないこと」と定義したいと思います。

 個人開発における最大の意思決定はリリースの有無です。自分が開発したソフトウェアをリリースして世界中の人が使えるようにするか否かで、テーマ、技術選定、解決したい課題、日常生活の中での開発の優先順位付けなどが変わるからです。このため、個人開発を始める前にまずはリリースをするかしないか決めることをオススメします。

個人開発の目的を設定しよう

 個人開発に挑戦する方に紹介したいのは、その目的を「リリース」または「学習」に大別する考え方です。このことを視覚的に理解しやすいように簡易的なフローチャートを作成しました。本節ではこの内容に沿って解説をします。

フローチャートの画像
フローチャートの画像

目的がリリースの場合

 まず、目的をリリースと設定したときのアドバイスを紹介します。リリースを目的にするケースでは、最短でのリリースを目指しましょう。個人開発は趣味活動であるのでプライベートの時間を割いて開発することになります。個人の時間というリソースは有限である一方で、個人開発において考えることは山ほどあります。それは例えば、解決したい課題の特定、仕様決め、デザイン、開発、デバッグなどです。そこで時間というリソースの上手な配分を考えなければなりません。

 具体的には、仕様やデザインを極力シンプルにして開発に集中する時間を捻出し、素早く作り上げることが望ましいです。ノーコードツールでプロトタイプを作成しても構いません。また、開発工数をできるだけ削減するために慣れた技術・ツールを使うことがオススメです。

 ただし、品質や信頼性の低下に繋がるバグの混入や、セキュリティインシデントにつながる脆弱性を放置してはいけません。スピードは重要ですが、全世界に対して公開するのですから社会的な責任も発生します。バグや脆弱性を放置せずに「動くソフトウェア」をユーザーに届けることを念頭に置きましょう。

 また、スクレイピングしたデータを見やすい形で表示するサイトを作ったがそもそもデータ取得元がスクレイピングを禁止していたなど、他サービスの規約違反となるサイトや社会通念上認められないようなソフトウェアは作成しないように注意してください。

目的が学習の場合

 もし個人開発の目的を学習に据えるのであれば、馴染みのない技術を使ってミニプログラムを作成することをオススメします。この場合、あえてリリースしなくても構いません。リリースを目的とするケースと異なり、開発スピードより自分にとって新しいことを理解する作業に時間を充てることを重視しましょう。

 新しいプログラミング言語を学ぶのであれば、CRUD操作をするブログやTODOリストといった仕様が簡単なアプリケーションを作成しましょう。もし実用的で複雑なアプリを作成するのであれば、RealWorldというプロジェクトを参照するのがオススメです。Real Worldは、Medium.comのクローンアプリをさまざまな言語で実装するプロジェクトで、フロントエンドであればNext.js(React)やNuxt.js(Vue.js)のみならず、RustやKotlin、Elmといった言語のサンプルが揃っています。仕様が定められているため、実装に集中できることが大きなメリットです。

 また、JSONパーサーLISPのインタプリタ簡易版のReactを作ってみるなど、解決済みの問題を解くことも技術者としての視野を広げてくれます。これらの成果物はGitHubで公開したり、製作の過程で学んだことをブログで発信してみると良いでしょう。どちらも自分に対する自信を得ることができ、次なる挑戦のやる気を高めてくれる上に、就職・転職の時のアピール材料にもなります。

 なお、個人開発の目標がリリースでも学習でもない場合は、心が赴くままにやってみてください。

 [1]個人開発の失敗を避けるイケてる考え方

次のページ
なぜ個人開発ではリリースにこだわるのか

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
フロントエンド開発者に贈る、個人開発のファーストステップ連載記事一覧
この記事の著者

プログラミングをするパンダ(プログラミングヲスルパンダ)

 https://twitter.com/Panda_Program/ フロントエンドエンジニア。元々サーバーサイドエンジニアだったが、個人開発を機に HTML, CSS, JS に興味を持つ。特に React、Next.js に熱中しフロントエンジニアに転向。TDD、XP、DevOps が好き。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17888 2023/06/22 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング