技術書検索アプリGeekle【個人アプリ開発インタビュー】
こんにちは!
株式会社テクトレの小田川です。
今回から開始するオリジナルアプリ開発インタビューですが、第一弾ということで、早速TechCommitメンバーのJinさんに、オリジナルアプリの Geekle を開発した経緯やその内容についてインタビューさせていただきました。
特に、オリジナルアプリ開発に挑戦することでどんな学びが得られるのか気になる方は、ぜひ生の声の1つとして、アプリの開発や学習計画などの参考にしてみてください!
アプリ開発者 Jinさんのプロフィール
Jinさん @jindotjp は2019年6月からプログラミングを独学中です。
現在はインターネット関係のお仕事をされていてプログラマーへの転身を目指されています。
技術書検索サービスのGeekleで出来ること
ー 今回開発したアプリGeekleはどんなアプリですか?
Geekleは評価の高い技術書が検索できるアプリです。
似たようなコンセプトのサービスはあったのですが、
本当に評価の高い良書が検索結果の上位に表示されるようなものを作りたいと思いました。
※下記にアプリの概要もまとめられています。
ー 書籍を選択するとQiitaのタグや記事のリンクも表示されますね
はい。外部サービスとの連携は Qiita 、 Google Books APIs 、openBD を使いました。
ー Geekleはどんな人に使ってほしいと考えていますか?
プログラミングの学習を始めたばかりの人やオリジナルアプリ開発を考えている人に使ってほしいです。
目ぼしい書籍を探すときに活用してもらえたらいいなって。
はじめは彼氏のノロケ話投稿サイトを作ろうとしていた!?
ー ちなみに、Geekleを開発しようと思ったきっかけなどはあるのでしょうか?
プログラミングを学習する上でモチベーションを維持するためには何か作るのが良いと思っていたからです。
実は、今回開発したGeekleの前にオリジナルアプリ『KareLove』(カレラブ)という彼氏のノロケ話を投稿できる掲示板サイトを作ったことがあるんです。
ノロケ話を投稿すると自動で画像が生成されてTwitterアカウントで呟かれるという仕組になっています。
ただ、女性向けのサイトで自分自身が使うものではなかったので、途中から開発のモチベーションが下がってきてしまいましたね。。。
なので今度は自分が使いたいと思えるものを作りたかったんです。
掲示板作成のチュートリアルサイトと書籍で独学
ー Geekleを開発する前は何を学習していましたか?
掲示板アプリを作成できるチュートリアルサイト GRAYCODE で学習しました。
HTML/CSSもGRAYCODEメインで学習し、合間に Progate もやりましたね。
基本はGRAYCODEで学習して、理解できないところについては書籍で補う感じで。
書籍はかなり買いましたね。
役に立ちそうだなと思った本はとりあえず買っておきました。
50〜60冊くらいは買ったんじゃないでしょうか。
買っただけで読んでいないものも...笑
GRAYCODEを一通り終えたら簡単なCRUD(※)の処理はできるようになっていました。
※CRUD … ソフトウェアに要求される4つの基本機能である、データの作成(Create)、読み出し(Read)、更新(Update)、削除(Delete)の頭文字を繋げた語
出典:IT用語辞典
ー 各言語や技術の学習の順序も教えて下さい!
HTML/CSS、PHP、データベース(以下DB)もすべて同時並行でした。
ただ、デプロイの方法だけは全ての学習を終えてからやりました。
Amazon Web Services 基礎からのネットワーク&サーバー構築 を参考にしました。
ー Laravelで作られているそうですがLaravelはいつ学習しましたか?
Geekleを開発する前に掲示板アプリを開発していたときです。
機能追加していこうと生のPHPで書いていたら、けっこうコードがごちゃごちゃしてきて、自分でも書いていてわけが分からなくなってきそうだなって。
いい実装方法がないかどうか調べてみた結果、どうやらフレームワークを使うと良さそうだという結論に至ってLaravelを学習しました。
Laravelはフロントエンドの開発環境にVue.jsをサポートしているため、比較的簡単に導入できて相性がいいことも知りました。
書籍は『PHPフレームワーク Laravel入門』がおすすめです。
DB設計に苦戦したものの1冊の書籍に助けられ4ヶ月でデプロイ
ー 開発上で苦労したことはありましたか?
今まで完全に独学でやってきたこともあって、何から手を付けていいか悩みましたね(笑)
ただ、掲示板アプリは作っていたので、DBからデータを取得して表示する部分はできるだろうと思っていました。
技術ワードで検索したらその技術に対応した書籍がランキング表示されるために、どういうDBの設計だったら実現できるか考えるのは特に苦労しました。
そんなとき、大変分かりやすくて役に立った書籍は『達人に学ぶDB設計 徹底指南書』でした。
ー 開発の手順や使用したツールもあれば教えて下さい
企画・設計→コーディング、そして最後の最後にデプロイしました。
企画や設計に関しては、すべて100円のらくがき帳に手書きをしていきました。
ツールを使うとなると使い方を覚えないといけなくて...それよりかは学習に時間を充てたかったので。
コーディングについては小さな機能単位で動くかどうか試しながらでした。
APIを使って欲しいデータが取れるかどうか実装してみて動きを確認していって...と地道に開発していました。
ー Geekleの製作期間はどれくらいかかりましたか?
およそ4ヶ月かかりました。
DB設計に苦戦していた分、意外とかかりましたね。
ー 開発をしてみて特に勉強になったことはありますか?
アプリを開発することで、フロント、サーバーサイド、インフラも学習できて、開発に関する全体像がつかめました。
それもあってか、分からないことがあったときに検索するスピードが、学習当初と比較すると断然上がったという実感がありますね!
おそらく、知らない用語が出てきたときにその用語がどこの分野のことを指しているのか当たりをつけられたからだと思います。
検索結果のアルゴリズムを工夫するも思わぬ指摘も...
ー Geekleの開発で特に工夫したことがあれば教えて下さい!
特に工夫したのは書籍の表示順です。
検索したときに「今」学習すべき良書がきちんと結果として表示したいと考えていました。
QiitaのAPIをそのまま使用するだけだと、古い書籍ほど出版から年月が経過しているので、Qiitaで取り扱っている数が多い傾向にあります。
当然ながら古い書籍は情報が古かったりするので、新しくて良い書籍が上位に表示されるようにしたかったんです。
それを考慮して出版年月日が古いとマイナス点を付けるなど、検索結果の表示順序を調整しました。
ー 今後このアプリをどうしていきたいですか?
まずは検索結果をもう少し改善していきたいですね。
ちょっと他の人に突っ込まれたのが、JavaのところにJavaScriptの書籍が表示されてしまっていて(^_^;)...
例えば、QiitaでJavaのタグが付いている記事の中にJavaScriptの書籍が紹介されていたりすると検索結果に混ざってきてしまうんです。
検索結果の表示はこのサイトの大切な要素なので近々に取り組みたいです。
ー とてもよいですね!Jinさんありがとうございました!
まとめ
今回Jinさんにインタビューをしてみて特に下記の内容が印象に残りました。
(1)Geekleのようにオリジナルアプリで、自分が使いたいものを作るとモチベーションも上がった。
(2)オリジナルアプリを開発するとアプリ開発に必要なDB等の周辺知識も一通り学習でき、問題解決のスピードが上がった。
(3)PHPやDBなどの周辺技術の学習、Webフレームワークと順番に着実に学習を積み上げて制作されていた。
しっかり自分で考えて学習対象を取捨選択し、自分で問題解決されている様にとても情熱を感じました。
ITスキルを学ばれている方はGeekleでも面白そうな技術書を見つけてみましょう!
Jinさん、この度はありがとうございました!
学習の方法は人それぞれです。
ITエンジニアの友達や相談相手が欲しい方、また学習習慣をつけたい方は TechCommit も気軽にご活用いただけましたら幸いです!
今後もオリジナルアプリを開発したメンバーのお話を『個人アプリ開発インタビューマガジン』にまとめていきますので、よろしければフォローもぜひお願いします。
もし少しでも役に立った、面白いなと思ってくださったら、「スキ」や「フォロー」で応援していただければ嬉しいです!