はじめに
雨が降ったのでネットサーフィンしていたら、「未経験者のITエンジニアへの転職はアピールできるものがないと、大変(意訳)」的な記事をいくつか見つけてむしゃくしゃした(実際には不安になった)ので、ポートフォリオ用のソフトウェアを作ろうと思いました。
本記事群
- 素人が四苦八苦学びながら下記Webアプリ(予定)を作成する様子がうかがえる
- 私が進捗管理、学びのあしあと残しをすることができる
自己紹介
- 大学での専攻、前職は土木
- 理系大卒で教養レベルのC言語を学習したが、うろ覚え
- バイトでObjectiv-Cを使用したiPhoneアプリ作成を行ったが、うろ覚え
- 大学論文研究のデータ整理に必要でPythonを独学したが、体系的な勉強はしていない
- 趣味でHTML、CSSを使用したホームページを運営している(レンタルサーバを使用、テンプレートをカスタマイズして使用)
- 職業訓練にてJavaを学習中
作るもの
- 「勉強した」「技術書を読んだ」「技術的な情報共有」ができるSNSWebアプリ
- 投稿にタグを付与することができ、タグのついた投稿数によって勉強進捗管理が可能
- SNSのテーマは「土木」、ターゲット層は「土木技術に興味がある人(職業問わず)」
開発環境(予定)
- ホスティングサービス:conoHa VPS(OS:ubuntu 24.04)
- バックエンド:サーブレット
- フロントエンド:JSP(Java8,HTML5),CSS,JavaScript
- データベース:PostgreSQL
JSP、サーブレットは現在Javaを学習していること、長く安定して使用されている技術をまず習得したいことから選択、PostgreSQLは学習の機会が今後待っていること(知識の混濁を防ぐ)、RDBとしての充実した機能に興味があるところから選択しています。
しかしここまで来るのにも一難あったのであった(素人なので)
何を作ればいいんだ
転職先を土木・IT両方で探しているので、このポートフォリオ用ソフト、土木転職の自己PRにも使えるなら使いたいのです。
そのため土木の人からしても閲覧しやすく、私の性質、能力アピールがくみ取れるようなソフトを作る必要がありました。
というわけでまず作るものはWebアプリであり、オンラインに公開することとしました。
Webアプリの内容を考える
かつてのバイト先の先輩が「サービスは自分が欲しいものを作るといいよ」って言われていたので、「土木の資格試験とか技術書とか、情報交換気軽にできる場がないのでほしい!」と欲望のままに「土木の学習に関するSNS」をメインテーマにしました。
投稿ついでにタグを付与し、タグ付きの投稿数から勉強進捗管理もするとやる気も出るかもしれないですね。SNSテーマとタグ内容を変更できれば汎用性も高そうな。
ホームページ運営経験があるため、
- 検索エンジンのクローラーに見つけてもらう期間が必要
- いきなりでかいものを作ろうとするとつまずいたときに完成しないので、段階的に完成(バージョンアップ)させていくことが大切(という気がする)
- 使い方が感覚的に理解できて、手間なく気軽に扱えて、便利なものだとユーザーに使ってもらいやすい傾向にある
ということで、段階的完成と、ユーザー側から見てシンプルな機能を心掛けつつ完成図をイメージしていきます。ただし技術的に可能かどうかは別問題なので軌道修正は逐次かけつつ。
アプリ内容を考えるのに下記記事も参考にさせていただきました。
ユーザーに使ってもらえるアプリって何だろうとか、計画の立て方、アプリを作るのに何が必要か考えるやり方などです。
https://qiita.com/kd9951/items/92cc7bb14c1fbfcb6dab
Webアプリの内容
【段階1】仮置きページ
・クローラーに感知してもらうためのもので、最悪「堂々完成予定!」でもよい
【段階2】基本的な機能があるSNSサイト
・ユーザー登録、編集、削除ができる
・公開用ユーザープロフィールの編集ができる
・メッセージ投稿、削除ができる
・タイムラインを閲覧できる
・セキュリティ的な整備(以降随時)
【段階3】サブとなる機能があるSNSサイト
・投稿に付与されたタグより抽出したタイムラインを閲覧できる
・タグが付与された投稿数から進捗グラフを表示できる
・自他の投稿へコメントができる
【段階4】あったらうれしい機能があるSNSサイト
・「応援」「お疲れ」「N値爆上がり」「(v⋅∇)v」「おやすみ湿潤養生」などの簡単な挨拶ボタンの設置
・自己紹介的にバッチが付けられたら面白いかも?
・検索フォーム
・他思いつけば
さっそくぶち当たる技術的問題
開発環境を何にするか
割と皆目見当もつかなかったので、いろいろ人に相談したり調べたりした上で、上記開発環境に落ち着きました。素人、必要ツール、言語、何もわからない。
レンタルサーバはすでに借りていたので「これを使おう~!」と思っていたらJavaが動く仕様じゃないことを知る。(PostgreSQLも動く仕様じゃなかったんですが、これは環境を導入していないだけではと思っています。どうなんだろう。)
VPS(仮想専用サーバ)だとJava動きますね。なぜだ。調べつつ考えてみたのですが、共用サーバだとほかのユーザーに干渉するので、例えばうっかりデプロイ後にJavaプログラムが暴れだす(意図しない無限ループとか)と他のユーザーにめちゃくちゃ迷惑がかかる…といった理由なのかなと思いました。またはっきりとした理由を見つけたら追記しましょう。
閑話休題
こうして開発環境と作りたいものが固まったのであった。
話は現在に戻りまして、さっそく行動に移すのです。
アプリづくり何から始めよう?
素人はここから手さぐり。ひとまず現状下記の通りに行動しようかなと計画を立てました。
- 開発環境や作りたいWebアプリの原点の考え、根拠を整理する、まとめる、記録する(今ココ)
- SNSのWebアプリを作っている人のコードや記事を読みまくる(今ココ)
- 技術を無視してUIデザインを考える(ザックリ書いた)
- 開発環境を整える(IDEとしてeuripus、GitHub)(終了)
- conoHaVPSの環境を整える
- 段階1を作成、デプロイ【遅くとも11月中まで】
- 理想のUIデザインに寄せはするが、あくまで「機能すること」を優先し、とりあえず段階2を目指して書いてみる
- 理想のUIデザインに寄せる努力をする
- 段階2のデプロイ【12月中旬までにできると嬉しい】
- 段階3のデプロイ【1月中旬までにできると嬉しい】
- 段階4のデプロイ【2月より前にできると嬉しい】
おそらく開発中に「そんな作業があったとは」とか、「思ったんと違う」「そもそも知らん」とかいろいろあるかと思いますし、期間に関する計画も完全に決め打ちなので大きくブレると思います。その時は適宜修正、PDCAサイクル的なものをくるくる回すということで。
今回はこのくらい!頑張ります!