チャレキャラ反省会(技術編)

はじめに

このブログでは6ヶ月に渡って行われた「九州アプリチャレンジキャラバン2019」(チャレキャラ)を振り返り、自己反省をするとともに今後参加される人の参考になるような記事をテーマに分けて書かせてもらいます。第2回は技術的な面で学んだ内容や勉強方法の反省になります。

1.チャレキャラに参加する前のレベル

CとJavaを大学で学んだ
Ruby on Railsをバイト先で学んでいる
Rails tutorialは完走した
Bitcoinについては簡単な仕組みを説明できるレベル

 チャレキャラに参加する以前の自分のレベルはこんな感じでした。僕たちはチームをフロントエンドとバックエンドに分けて作業を進めることにしました。Rails tutorialの内容を復習したかったので僕はバックエンドに回ることにしました。

2.用いたツールとアーキテクチャ図

アーキテクチャ図

Qusaryのアーキテクチャ図はこのようになります。ユーザとのやり取りはフロントのNuxt.jsとバックエンドのRailsが処理するという形です。Bitcoinとのやり取りにはBlockstream のAPIを用いました。

スクリーンショット 2019-12-24 10.50.26


Blockstream API

さっきのアーキテクチャ図の中で見覚えのないツールNO.1はこのBlockstream APIでしょう。何ができるのかというとBitcoinの送金、トランザクションやブロックの検索がAPIを叩く形で実現できます。

僕はAPIの使い方があまり理解できないままコードを書こうとして時間を食ってしまいました。この外部と通信しながらサービスを作るという形はこれからのアプリ作成に欠かせない技術だと思います。苦戦しながらでも理解することができてよかったです。

Figma

画面設計やメインカラーが決まったらフロント陣がFigmaを用いて画面のレイアウト策定を開始しました。このとき初めてこのツールに出会ったのですが見やすいUIを簡単に作れて感動しました!

Postman

BlockStream APIとのやり取りや仮想ユーザの作成などのテストを行う際にこのPostman先生が大活躍してくれました。

いちいちブラウザを開かなくてもルートとパラメータを渡すだけでローカルホストでAPIやDBと通信してその結果を表示してくれます。なのでバックエンドでJSON形式のパラメータを調べてそれをフロントエンドに共有するまでの過程がスムーズに進みました。

ちなみにテストが終わるまでに100人近いユーザを作成してました

Heroku

メール認証機能はHerokuのSend Gridアドオンを用いました。

メール認証機能は僕がRails tutrialで省いてしまった部分なんで今回はしっかり実装しようと思いながら進めました。でもパラメータの型が違ったりサーバが違ったり(Webと携帯端末のサーバの違い)とチュートリアルどうりに進むことはほぼありませんでした

最終的にメンターさんに協力してもらいながら解決しました。本当にありがとうございました。

メール認証機能の実装が一番苦労しました。しかし、この時ほど

いつも使っているサービスを自分が作っている実感と楽しさを感じたこと

はありませんでした。

残念ながらバックエンドの処理は完成したのですがフロントに反映させることができず、コンテストまでに実装が間に合わなかったのでこれからの課題にしたいと思います。メール認証機能についてはJWT(Json web Token)も効果的とのことなので次のアプリで使って見たいと思います。

Git

当たり前っちゃ当たり前ですけどバージョン管理にはGithubを用いました。

今まで個人でコードを書くことの方が多くあまりGitは使っていなかったのですが、チーム開発をするに当たって欠かせないツールだということがわかりました。バージョン管理以外にも僕たちは細かくissueを立てて進捗を管理していました。本当に有能だ!

チャレキャラはGitの基本的なコマンドの使い方を学ぶ良い機会になりました!!

変なところでマージしたりブランチを切り忘れたりしてチームに迷惑をかけたりしましたが....

3.勉強方法

基本的に以下のフローで開発を進めました


大雑把に初めて使うツールやプラットフォームに目を通す
            ↓
Rails tutrialを基に実装したい機能のコードを真似てみる
            ↓
失敗したらエラーメッセージから15分くらい考える
            ↓
エラーについてググってみる
            ↓
それでもダメならチームSlackで質問
            ↓
メンターさんに質問・telatailに質問

大体ググったら解決したのですがどうしても解決できない問題の方が多かったかもしれません。

エンジニアの発想力って何か作る時も必要だけどエラーを解決する時も必要だと感じました

Rails tutorial

最初の1ヶ月くらいはRails tutorialの参考になりそうな章を復習しました。

難易度がちょっと高めで時間がかかりますが全部無料でSNSのようなウェブアプリが作れます。チャレキャラのメンターさんでもこの内容は難しいとおっしゃていました。なので実装段階でわからないところはある程度出てきました。

teratail

技術的にわかんないことたっっっくさん質問しました笑

ググって出てくることって結局自分と全く同じ環境じゃないからいつも参考になるわけではありません。teratailなら自分の環境を説明した上でエンジニアの方が回答してくださるので高確率で問題点を見つけることができました。

質問して解答が得られるまで時間がかかるので寝る前に質問したり大学に行く前に質問したりして時間を有効に使いました。

4.まとめ

チャレキャラには半年前の自分には想像もできないようなところまで連れて行ってもらいました。いろんな課題が山積みな状況で、必要な情報を集め試行錯誤しながら一つずつ解決する作業の繰り返しでしたが、気付いたらこんなことができるようになっていまいした。

APIを叩けるようになった
Gitを使えるようになった
メール認証機能を実装できるようになった
フロントのコードを書くようになった
わからないことを解決する自分なりの手順ができた

次はこんなことにチャレンジしてみたいです

AWSを用いた開発
Dockerを用いた開発
Flutterでスマホアプリ開発

コードを書く楽しさや問題解決に挑む姿勢の持ち方などが半年間でかなり鍛えられたなと感じています。

ただ自分が作りたいものを作っていただけなのに完成品以上のものを収穫できてとても嬉しいです。

このような経験をさせてもらったのも、メンターさんやチームメンバーのおかげだと思っています。ありがとうございました。

これからも新しい技術へのキャッチアップを忘れずに頑張りたいと思います!

この記事が気に入ったらサポートをしてみませんか?