有吉です。一昨年入社したpaiza(ギノ) の営業です。
営業なのですが、以前「技術的な知識がないとよい提案ができないな…」「プログラミングできる営業になれたら付加価値つくかも」という気持ちで、プログラミングの勉強を始めました。
私がプログラミングの勉強を始めたときの詳しい話はこちら
paiza.hatenablog.com
この時点で「プログラミングに入門はできたかな?」って状態だったのですが、やっぱりプログラミングを学んだからには、動くものを作ってみたい〜!
というわけで、今回はさらにpaizaラーニングで知識を深めたりしながら、自分が好きな言葉を一覧&追加・削除できて、Slackにも通知を飛ばしてくれる格言botを作ってみました。
最初は「開発って大変なんだろうな…」と思っていましたが、paizaラーニングで復習したり、社内のエンジニアに質問したりしながら、なんとか一応完成できました。やった〜!
今回は、私がどんな格言botを作ったか、作るためにどんな勉強をしたか、実際に作ってみて大変だったことやわかったことなどを書いていきます。
私が作ったもの
こんな感じの格言botです。(今は近江商人の商売十訓を追加しています。一応営業なので…)
毎朝10時になると社内Slackの格言チャンネルにランダムで一つの格言が飛んでくるようになっています。
本当はURLを公開してみなさんにも見ていただきたいですが、まだセキュリティがガバガバなので…そこは今後の課題として、解決できたら改めて公開させてください…。
開発環境としては、クラウド統合開発環境のPaizaCloudを使いました。
ちゃんと自分で作りましたよ!
言語Rubyで、WebフレームワークはSinatra、DBはSQLite、CSSフレームワークはUIKitを使っています。
格言bot作成のために勉強した内容
大事なことは全部paizaラーニングで学びました。わからない部分が出てくると、社内のエンジニアに質問していました。
私の場合、Ruby入門編とHTML/CSS入門編はすでに終えていたので…
今回新たに「Webアプリ開発入門 Sinatra編」を学びました。
途中でターミナルが出てきてくじけそうになったので(…)「シェルコマンド入門編」もやりました。
所要時間は2講座あわせて1日2時間×7日ぐらいですね。格言botの開発には、1日2時間×5日ぐらいかかりました。※ちゃんと営業もやってますよ!!!
ちなみにpaizaラーニングでは、これらの入門講座がすべて無料公開となっていますから、ぜひやってみてください。(宣伝)
なぜ格言botを作ったのか?
最初にも言いましたが、「やはりプログラミングを学んだからには動くものを作りたい」と思ったのが一番の理由です。
そんな中でエンジニアに勧められて「Webアプリ開発入門 Sinatra編」を一通りやってみたのですが、「レッスン内容と同じような掲示板を作るだけだとちょっとつまらないな」と思ったんですよね。
自分は割と格言チックな言葉が好きなので、「ただ掲示板を作るよりはそういった言葉を登録しておけるサイトを作って、ついでにSlackに通知とか飛ばしてくれる機能とかあったらいいかもしれない…」と思い、それを形にしてみました。
RubyでWeb開発のフレームワークと言えばRailsが有名ですよね。私も最初は「Railsを使うといいのかな?」と思っていたのですが、エンジニアに相談したところ「初めてならSinatra入門→Rails入門という順番で学ぶと理解が深まると思う」と言われ、まずはSinatraを使ってみることにしました。
ほかにも「DBはとりあえず自分で使うだけならSQLiteを使えばサーバを立てなくて済む」「CSSフレームワークにはBootstrapだけでなくUIKitというものもある」と聞いたので、取り入れてやってみました。
大変だったこと、学んだこと
ターミナルって怖い…→怖くない!
実は最初はターミナルというものに、すごく抵抗がありました。だって、なんか黒いし、怖いし、わけわかんないし、親切じゃなさそうだし…。
そこで、「Webアプリ開発入門 Sinatra編」でターミナルが登場したときに「シェルコマンド入門編」も一緒に受講しました。
正直言って、私はコマンド単体で学んでも、あまり理解できなかったと思います。だって「ディレクトリを移動するコマンド」とだけ言われても、「そもそもなんでディレクトリを移動するんや?どんなときに使うんや?」って感じじゃないですか。
でも、実際に開発で使いながら学ぶことで、「ここでこうしたい!→こうするためにはこのコマンドをこうやな!」を繰り返せて、シェルコマンド単体で学ぶよりもかなり理解が深まったと思います。おかげでターミナルやコマンドが怖くなくなりました。
人間、なんでもわけがわからないものは怖いですよね。しかし、相手を知れば克服できます。
フレームワークやライブラリってすごい!
Rubyなのでgemをいくつか入れたのですが…すごい!便利!いろいろな機能が、自分で実装しなくても搭載できてしまうのですね…。
先人の知恵に感謝です(-人-) 私みたいな初心者でもなんかそれっぽいものが作れました。初心者のみなさん、先人の知恵を借りつつ怖れず作ってみましょう。さすれば道は開けます。
「Slackに通知を飛ばしたい!」と思ったときも、「そんな機能自分に作れるのだろうか?」とエンジニアに相談したところ、「Slackに通知を飛ばすgemがあるからすぐできるよー」と言われて驚きました。
当たり前かもしれませんが、エンジニアって、こういうgemとかライブラリとか、自分の技術を惜しみなくシェアしてくれるのが、本当にすごいしありがたいと思います。
営業って、自分の成果は自分のものにする仕事だし…そんな…シェアとか…あんましないんで…………。
名前の付け方が大事!
PaizaCloudの開発画面の画像を見ていただくとわかるのですが、models配下のファイル名が「myapp」になっております。初心者あるある(そうでもない?)。
今はこの格言botしか作ってないからよいですが、今後自分で作ったものが増えたり、他人と共有したりすることになったらmyappじゃわけがわからなくなってしまいますね。せめてKakugenかなんかにしておけばよかった。
よくメソッド名や変数名の名前は大事という話は聞いていたのですが、名前は本当に大事ですね。
フレームワークごとの違いが気になってきた
最初は「Railsはなんかフォルダとかファイルがいっぱいあるのが難しそうで…怖い…(だからSinatraのほうがとっつきやすい!)」と思っていました。でも、今回でSinatraはある程度触ることができたので、次はRailsで作って、Sinatraとの違いを知りたいなー。
エンジニアに聞いてみたところ、Railsはファイルの置き場所などにもルールがあるそうですね。
「同じものを違うフレームワークで作ってみると勉強になるよー」とエンジニアに言われたので、やってみます。あと、ほかの言語のDjangoとかLaravelとかにも興味がわいてきました。
ユーザー管理&セキュリティの問題
今は誰でも追加や削除ができるような状態なので、ゆくゆくはちゃんとユーザー権限がある人だけがいじれる仕様にしていきたいですね…。
あとサニタイジングもできていない…公開はそれが対応できてからですね…。
PaizaCloudがすごい便利〜!
PaizaCloudでは、さまざまなフレームワークや言語を使ったWeb開発が、ブラウザだけで簡単に始められるオンラインクラウド開発環境です。
使ってみてわかったけど、自分で環境設定したり、サーバ立てたりしなくてもWebサービスが作れてめちゃ便利です。(宣伝)
まとめ
というわけで、私がプログラミングを勉強して格言botを作ってみた話でした。
私は営業職ですが、プログラミングの勉強をすればするほど、「エンジニアってすごい…」という気持ちになります。
今回は特に、「ライブラリ作ったり知見を共有してくれるエンジニアのみなさんすごい」「そしてこれよりもっと複雑で大変な開発業務をこなしているエンジニアのみなさんすごい」と感じました。超リスペクト。
営業の私でも簡単なWebサービスを開発できるようになれたので、プログラミング初心者の方、Webサービスを開発してみたい方は、ぜひpaizaラーニングの動画レッスンを見てみてください。今なら全編無料で見放題です!(宣伝)
プログラミングが動画で学べるpaizaラーニングについて詳しくはこちら
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。