Trail of a Human Resource

興味のある技術、趣味についての記事をかきます

Google Cloud Platform の勉強

作ってみたいソフトウェアがあるので、準備としてGoogleCloudPlatformを触ってみました。無料トライアルで一年間GCPのサービスが使え、$300のクレジットも使えるということなので、お金が無くても使えるのがありがたいです。

 

基本はsinatraを使ってrubyでサーバーサイド側のソフトを作ろうと決めました。

本体の"app.rb"、デプロイ用の"app.yaml"を用意すれば、"gcloud app deploy"で簡単にデプロイできる……と思ってたのですが、思わぬところで躓きました。

ディレクトリ内の".my.cnf.4237"という謎のファイルにアクセスできないよ、というpermission errorが出て四苦八苦。ググっても解決策が出てこない。

結構試行錯誤していたんですが、結局ディレクトリにあった".my.cnf.4237"という隠しファイルを消せば解決しました。デプロイ時にディレクトリの全ファイルにアクセスされるようになっているのでしょうね。このファイルはどういう経緯で生成されたのだろう?

 

まだ"Hello World"という表示だけしか行えないのですが、次は作ったアプリからGoogle Cloud SQLにアクセスできるようにしようと思います。

builderscon2018に参加してきました

先日(9月7日)、慶応大学日吉キャンパスで開催されたエンジニア向けのカンファレンス「builderscon」を聴講してきました。

ド素人なので深い理解はできていないかもしれませんが、見てきたトピックを軽くご紹介します。

 

機械学習を用いず数学でゲーム内の需要予測をする

エンジニアではなく数学科出身の方による、数学のお話でした。膨大なデータをもとに、ほぼ人力で数値予測をしてしまうという話。手法も面白かったけど、厳密に正しい理論をもとに予測をすると機械学習をも越えられるんだなぁ、と感心しました。

 

Webサービスの品質とは何か?アラート地獄と監視の失敗、サービスレベル目標設計から学んだ3つの答え

 

WEBサービスを動かすにあたって、異常事態が発生したときの対策について。何を目的として監視するのか、異常とはどういう物か、など適切に定めて工夫してサービスを運用しようというお話。

 

ソーシャルゲームが高負荷に陥っているとき、何が起こっているのか 〜その原因と対策〜

ユーザーの急な流入、ガチャ回されすぎ、などソーシャルゲームにおける様々な高負荷要因から生じた問題とその対策について。実際にあった事例をもとに対策を述べられていたので、サーバーエンジニアの仕事についてイメージをより具体的につかみつつ、どういった作業が行われるのかが分かり、とても勉強になりました。

 

懇親会にも参加させて頂き、いろいろ貴重なお話を聞くことができました。

なにを隠そう去年までWEBエンジニアの仕事に興味がなかった学生なので、こういった技術者のための面白いカンファレンスがあること自体も初めて知りました。

 

仕事は大変そうですが、エンジニアとして生活する楽しみってこういうイベントの存在もあるんでしょうね。来年から働くのが楽しみです。

企業インターンシップに行って来ました

9月3日(月) ~ 9月7日(金)の間、某WEB系の企業にインターンシップに行ってきました。

この期間を通して行ったことは「InstagramのようなWebサービスを作ってみよう」という課題。作業用のMacに環境導入をし、社員の方からGithub上でコードレビューをして頂きつつ形にしていくというプログラムです。

進め方としては、最初にMacbookProを支給され、社員の方から「環境導入して終わったら教えてね」「次はDockerでMySQL立てて」「sinatraでトップページ作ってみて」といった指令が出されるだけで、淡々と進んでいきました。基本的に学校のように手順を指導して頂けるといったこともなく、自分でやってみて、調べても分からなかったら聞くというスタイル。マイペースにできるのでありがたい。

 

そもそもMac使うの学部1年生以来なので、思い出しながら&調べながら操作をしつつ慣れていくところから始まりました。慣れていくとスイスイ~っと操作しながら作業できて楽しいです(操作を完璧にするにはまだまだ訓練が必要そうですが)。

使った技術はDocker、MySQLRubysinatra、bootstrapなど。それぞれの役割を簡単にまとめておきます。

 

Docker

サービスを動かす為の仮想OSを作り、ミドルウェアを動かすソフト

MySQL

Webアプリ上のデータを保存しておくための データベース管理システム

Ruby

プログラミング言語インターン中、Go言語とどっちがいいですかと聞かれたが、個人的にRubyの方はよく使っていたのでRubyで書くことに。

sinatra

Webアプリを作る為のRuby用ライブラリ。RubyでWebアプリ作成といえば Ruby on Rails が一般的だが、Railsよりも低レベルな部分に触りながらWebアプリが作成できる、とのこと。

bootstrap

WEBサイトのUIを簡単にデザインできるフレームワークCSSでデザインをいちいち書かずとも、クラス指定だけである程度本格的なデザインが使える。

 

他に使ったもの:slack、git、Sublime Text、bundle

 

以上を使って、4日間でなんとなくInstagramっぽいWebサービスを作ることができました。ユーザー登録/ログインして画像をアップロードして記事を作り、その記事にコメントができるというもの。分からないことがあればその都度ネットで調べたり、人に聞いたりするだけなので体系的に学べていない部分も大きかったです。もっと本格的にやる為に、書籍を読んで勉強してみたいなぁ~と思っています。

Mac操作に慣れていなかったりGithubの使い方に苦戦したり、色んなところで時間を潰してしまったのですが、4日かけてなんとか形にすることができました。

今後の課題として、「必要な作業を手早くできるようになりましょう」ということを言われました。ターミナルで素早く作業するスキルやコーディングの速度など、課題はたくさん。速度を速めるためには様々な時短テクを使ったり、日々ソフトウェアに触れておく必要がありそうですね。

インターネットで調べるスキルを磨くというのも要求される能力だと感じました。問題を解決するにあたって個人ブログやQiitaをよく参考にしていましたが、基本グーグルで検索して上位に出たものを参考にしているだけなので、見てみても実際役に立たなかったりすることも多かったです。調べる為によく使うサイトを決めておく必要があるかな。

 

得ることが多くとても充実したインターンシップでした。5日目は技術者向けカンファレンスを聴講しにいったのですが、それについては次の記事で。