文系エンジニア大学生の技術ブログ

社会が多様化していく中、大学生の学生生活も多様であるべきと考えています。主にエンジニア向けにITやプログラミングなどの技術系と大学生向けに休学、留学、海外生活、トビタテ留学、長期インターンに関する記事を書いています。

【rails】編集画面でimageカラムにアップした画像のみをレコードから削除する方法

f:id:daikiyano:20190317210252p:plain

railsの編集画面でimageカラムにアップした画像のみをレコードから削除する方法をご紹介します。

今回、編集画面で画像だけ削除できるような実装をしたいと思います。 前提としてarticleテーブルを作成し、画像を保存するためthumbnail_urlカラムを用意してあります。 実装の方法は簡単で編集画面で画像が存在している時は画像と削除ボタンを表示させてあげます。 formを作成し、admin配下にあるarticle_controllerにvalueをPOSTするようにします。

f:id:daikiyano:20190317205200p:plain

edit.html.erb

<% if @article.thumbnail_url.present? %>
     <div class="article_thumb">
         <p class=" fw_3 ctr">サムネイル画像</p>
           <%= image_tag @article.thumbnail_url %>
              <%= form_for([:admin, @article]) do |f| %>
               <%= f.submit value: "Delete Thumbnail image",name: "delete_image",data: { confirm: "サムネイル画像を削除しますか?"}, class: "btn_send" s%>
           <% end %>
      </div>
 <% end %>

削除ボタンが押されたら@article.thumbnail_urlにnilを代入し保存してあげます。

article_controller


def update
  if params[:delete_image]
  #削除ボタンが押されたらnil
      @article.thumbnail_url = nil
      @article.save!
      render :action => 'edit'
      return
   end
end

render :actionで編集画面に戻した後、returnでメソッドを抜けましょう。 これで実装完了です。

明日、トビタテの件で朝の6時からイスラエルの方と面談なので今晩オンライン英会話を使用して慣らしておきます。 基本イスラエルとの面談が夜中か早朝なのできついです。笑

www.for-engineer.life

続きを読む

Google Cloud Platform(GCP)のCloud Load Balancingの概要

f:id:daikiyano:20190310095430p:plain

今回、Google Cloud Platform(GCP)のロードバランサであるCloud Load Balancingの概要についてまとめていきます。

はじめに

ロードバランサというと難しく設定が面倒というイメージがありますが、GCPのロードバランサであれば一時間程度で設定出来ます。 複数のリージョン(地域)にインスタンスを配置したり、オートスケールも可能になるのでGCPのCloud Load Balancingを使えば実践的にロードバランサについて学べるので、無料トライアルを使って試してみました。今回は、Cloud Load Balancingの概要をご紹介します。

www.for-engineer.life

負荷分散の基礎とロードバランサの導入

負荷分散はシステムの可用性の向上と処理速度の向上を目的としています。 サイトの利用者が増えたり、サイト内のあるコンテンツ(記事)などがバズった場合、アクセス数と処理数が激増します。 そうすると、一台のサーバーに負荷が集中するため、サイト内のページ表示が遅くなったり、一時的に表示されなくなることがあります。負荷分散を用いて処理を複数のサーバーで割り振ることで、特定のサーバーに負荷が集中するのを防ぐことが可能です。その負荷分散を実現するための方法の一つとしてロードバランサーの利用があります。ロードバランサは、負荷分散専用のネットワーク機器で、クライアントからのリクエストを一定のアルゴリズムに基づいて複数のサーバーに振り分けます。

f:id:daikiyano:20190309233543p:plain https://www.cacloud.com/services/cloud-load-balancer/より画像出典

Google Cloud Platform(GCP)のCloud Load Balancingの特徴

Cloud Load Balancingは、複数の仮想マシンインスタンスに対して、インターネットからのトラフィックを負荷分散するサービスです。

世界最大規模のインフラ

GCPの特徴はGmailやYoutube,Google検索などGoogleが提供するサービスを支えているインフラをそのままクラウド化したサービスをユーザーが利用できる点です。皆さんもご存知の通り、Googleの持つネットワークは世界最大規模です。世界最大級のインターネットサービスを提供するGoogleのインフラは高速で性能の高いインフラストラクチャのため信頼の高いサービスと言えます。

リージョンやゾーンごとの負荷分散

Googleは世界中ににデータセンターを保有しているため、複数のリージョンやゾーンにまたがって負荷分散出来ます。例えば、アメリカ・ヨーロッパ、東京の三つのリージョンで負荷分散したとします。仮に東京リージョンで障害が発生した場合、東京以外のリージョンに自動で振り分けることができるので、サーバーダウンの影響を与えずにサービスの提供を続けることが出来ます。

Cloud Load Balancingの二種類の負荷分散

f:id:daikiyano:20190310000806p:plain

Backend Buckets  |  Load Balancing  |  Google Cloudより引用

HTTP(S)負荷分散

ブラウザなどの端末がWebアプリケーションにアクセスする際、HTTP、またはHTTPSのプルトコルを使用します。HTTPS(S)負荷分散は、これらのアクセスを複数のリージョンにわたる複数バックエンドのインスタンスに振り分けます。アクセスが急速に増えても、世界中の複数リージョンでさばくことができるので拡張性の高い基盤を構築出来ます。そのため、多くのユーザーを抱えるWebアプリケーションを公開する際には最適なサービスです。

TCP/UDP負荷分散

GCEの同一リージョン内でTCPプルトコル、またはUDPプルトコルのトラフィックを負荷分散します。HTTP(S)負荷分散と違い、複数リージョンにまたがる負荷分散は出来ません。同じリージョンで異なるゾーン間で負荷分散することは可能です。

最後に

次回はGCPで実際にロードバランサの設定しながら、負荷分散やロードバランサについて記事にしていきたいと思います。 また、GCPのアカウント登録をすれば、300 ドル(約三万円分)分の無料クレジットがあるので、今ならお金をかけずにGCPを学べます。是非、興味のある方は試してみてください。

続きを読む

私が海外とプログラミングに興味を持ち休学を決意したきっかけ

f:id:daikiyano:20190307230042j:plain

私が海外とプログラミングに興味を持ち、大学を休学しようと思ったきっかけについて記事にします。

当時の大学生活

私が休学を決意したのは、大学2年生2016年の8月頃の話。大学三年生になって休学を届けを提出し、1年間の休学生活が始まりました。 休学するまではアルバイトをしながら大学に通い、時間があれば友人と飲み会に参加する大学生活を送っていました。また、中学・高校で陸上部に所属していたこともあり、走ることが好きでランニングインカレサークルの副代表としてイベントや合宿に企画、練習の指揮をしながら、100kmウルトラマラソンや24時間リレーマラソンなど過酷な大会に参加していました。笑 単位の習得も順調で、大学生活にあまり不満はありませんでした。しかし大学卒業後、やりたいことや目標もなかったので、社会人になったら何やってるんだろうなあと漠然とした将来に対する不安はありました。

講義の中で聞いたある経営者のお話

私は大学2年生の時に特殊講義という講義を履修していました。その講義は社会人になった大学のOBOGの方に登壇してもらい、キャリアデザインについての講義をしていただくという内容でした。登壇した社会人は海外留学後にNPOを立ち上げた方、第二新卒で希望の企業に就職された方、子育てをしながらも会社で活躍する女性の方などそれぞれが異なるキャリアデザインをされ、私にとってこの講義は刺激的なものでした。その中でも特に印象に残っている経営者の方がいます。その方は大学を卒業後、大手建設会社に就職されたのですが、一年弱で会社を退職。その後、初めての海外でアメリカのサンフランシスコを訪問し、フラフラしていたら、現地で出来たたまたま友人に声をかけられ、IT系ベンチャー企業の立ち上げに携わり、現在は国内で別の事業を立ち上げて経営者として社会で活躍されている方です。 その方がおっしゃっていたのは

将来、やりたいことが決まっていない学生がいたら在学中に「語学力」と「IT」この二つのスキルを身につけることをお勧めします。何故ならば、英語は皆さんご存知の通り世界共通の言語です。そして、プログラミング言語も英語と同じく世界共通の言語です。だからこそ、この二つのスキルを身につければ、視野が広がり、自身の人生においての選択肢も増えます。現在、世界ではグローバル化が進み、物凄い速度でIT技術が進歩し発展しています。今後、確実に必要になるスキルは「語学力」と「IT」、この二つです。

このお話を聞いて私は初めて海外とプログラミング(IT)に興味を持ちました。そして、この講義を通して様々なキャリアを積まれてきた方の話を聞いていくうちに、1年くらい休学しても対して特に支障はないんじゃないか?と思い翌年、大学を1年間休学することを決意しました。

他にもある海外や休学に興味を持ったきっかけ

海外や休学興味持った最大のきっかけは講義の中で聞いた経営者の方の話ですが、他にもきっかけはあるので挙げていきます。

休学しようと思ったきっかけ

アルバイト先とサークル先に休学している先輩がいた。

アルバイトやサークルを通して休学を経験した方がいました。その方はフィリピンに語学留学されていた方で、 「休学するか悩んでいるなら休学しちゃいなよ!絶対、後悔しないよ!」と言っていただいて私の休学の決断を後押ししてくれました。

海外に興味を持ったきっかけ

高校生の時に成田空港にある店舗で働いた経験

高校生の時に成田空港の中にある店舗で働く機会がありました。お客さんの7割が外国人、従業員の方も多国籍でベトナムや中国の方が在籍しており、外国籍の方とコミュニケーション取りながら働いたため、海外や異文化に興味を持ったきっかけの一つです。特にベトナムの方と仲良くなったこともあり、初めての海外で最初に訪問した国はベトナムでした。

f:id:daikiyano:20190307230028j:plain

休学するまでの困難

両親への説得

休学する上で一番大変だったのが、両親への説得でした。私の家族、親戚の中に留学を経験している方は一人もいません。ましてや、大学を1年間休学するなんて絶対ありえない!というのが親の考えでした。私の考えを理解してもらうために休学した友人の話をしたり、休学するメリット・デメリット、休学中の留学計画、留学・休学費用について時間をかけて丁寧に説明しました。説得するまでに数ヶ月かかりましたが、最終的には納得していただき休学届けを大学に提出することができました。今、思い返せばこの経験がトビタテの選考に活きているのかなあと感じます笑 学歴や成績は関係ありません。大事なのは熱意、情熱、パッションです。笑 

最後に

昨今の日本は働き方改革やワークライフバランスの考え方が浸透しつつあり、キャリアデザインの仕方は多種多様です。私は社会が多様化していく中、大学生の学生生活も多様であるべきと考えています。社会人に比べ大学生は時間に余裕があります。大学生のうちにやりたいことや試してみたいことがあれば、積極的にチャレンジすることをお勧めします。そして、チャレンジするときでいいので、1年間大学を休学するという選択肢も頭の片隅に入れておくと良いです。私たちが100年生きるとしたら、休学してもたったの100分の1年です。ここ数年で休学を選択する学生が増えてきましたが、今後もこの流れは変わらず、休学することが当たり前になる時期は必ず来ると思います。日本では休学することは特殊なのかも知れません。しかしながら、海外では休学するなんて当たり前のことです。大学生活を通して様々な経験をし視野を広げ、人生の選択肢を増やす機会を得ることができれば、悔いのない大学生活を送ることができるのではないかと思います。そんな思いを込めてこの記事を執筆してみました。

www.for-engineer.life

www.for-engineer.life

続きを読む

トビタテ留学JAPAN!第10期壮行会に参加してきました

f:id:daikiyano:20190303224910j:plain

「トビタテ留学!JAPAN日本代表プログラム」第10期派遣留学生壮行会に参加してきましたので記事にしたいと思います。

今回のイベントは以下の3部で構成されていました。

  • 式典
  • 交流会
  • 派遣留学生研修

式典・交流会

式典では文部科学省大臣と支援企業代表者様からの御挨拶、先輩トビタテ生からのメッセージ、派遣留学生代表による決意表明などが行われました。 式典終了後は交流会のため、別の会場に案内されました。交流会は立食形式でテーブルごとに何種類かの飲み物があり、コースごとに分かれて自由にトビタテ生同士でお互いの留学計画を発表したり雑談したりしました。その後は興味のあるテーマ同士に集まったり、地域ごとに集まって話したりととラフな感じの交流会でした。

私の大学は完全に文系大学なので、理系の各分野で研究している方のお話は聞いてて大変有意義でした。

f:id:daikiyano:20190303224947j:plain

派遣留学生研修

f:id:daikiyano:20190303222234p:plain

交流会の後は派遣留学生研修が行われ、今回は地域ごとに各グループ四人で構成されていました。 グループのメンバーの留学先はモロッコ、イスラエル、アラブ首長国連邦(UAE)、リトアニア、パレスチナ、オマーンなどザ・アラビアンという感じでした。

この研修では上記のシートに原体験・思い・留学テーマと活動を記入し、グループ内で共感したことや興味のあることをピックアップして、グループディスカッションするというものでした。皆さん異なる原体験を持ち、思いを持って留学されるんだなあと再び感心してしまいました。

ちなみに私はシートにこのようなことを記述しました。事前に書く内容を考えてなかったのですが、ペンを持つと意外とスラスラ書けました。

原体験

  1. 大学2年時に講義で聞いた経営者のお話(語学とIT)
  2. 一年前にインドで偶然出会ったトビタテ生

思い

  1. 目指せグローバルに活躍できるエンジニア
  2. 先進国に住む日本人としての義務
  3. 海外とプログラミングの魅力を発信
  4. 日本とイスラエルの架け橋となる人材

活動

  1. 現地企業でエンジニアインターンとして働く
  2. IT・AIイベントへの参加
  3. ブログを通じて海外とプログラミングの魅力を発信
  4. インキュベーター施設で各国の働き方の違いを調査

海外とプログラミングに興味を持ったきっかけ(原体験)は三年前にあるのですが、また機会があった時に記事にしたいと思います。

最後に

研修開始時にトビタテ!留学JAPAN プロジェクトディレクターの船越力さんから簡単な自己紹介とトビタテの成り立ちについてのお話がありました。

その中で特に印象に残った言葉が二つあるので紹介します。

グローバルリーダーとして活躍するのに必要なのは、成績や英語力ではなく、熱意とやる気である

若者の感性で未来を創る時代

朝起きた時は天気悪いし、眠かったので文科省まで行くのが億劫でしたが、トビタテはすごい人&変人がたくさんいるのでなんだかんだ楽しい!笑

今回、交流していただいたトビタテ生の方ありがとうございました!

続きを読む

【評判】オンライン英会話「ネイティブキャンプ」を2年間使ってみての感想

f:id:daikiyano:20190301202951j:plain

今回は、私が2年間愛用しているオンライン英会話「ネイティブキャンプ」の感想をご紹介したいと思います。

私は今年の8月からトビタテ留学JAPANという留学制度を利用してアメリカとイスラエルに7ヶ月間留学する予定です。 20卒なので就職活動をする傍ら、夏からの留学に備えて英語力を向上させなければなりません。私の留学計画は語学研修が含まれてなく、いきなり現地企業でインターン生として働く予定なので、日本にいるうちに最低限の語学力を備えている必要があります。なので、オンライン英会話「ネイティブキャンプ」を使ってスピーキング力の向上を目指します。実は「ネイティブキャンプ」は二年前から語学力向上のために愛用しているツールの一つです。 今回、このオンライン英会話「ネイティブキャンプ」について紹介していきます。

ネイティブキャンプに向いている人

下記のの項目に当てはまる方はお試しでネイティブキャンプ七日間無料トライアルを利用してみることをおすすめします。

  • 留学や海外出張の予定がある方で英語力を身に付けたい方
  • 費用を抑えて英会話学習をしたい方
  • 場所と時間を選ばずに英会話学習をしたい方

ネイティブキャンプのメリット

続いて「ネイティブキャンプ」のメリットについて紹介します。

英会話スクールに通うより値段が圧倒的に安い。

従来型の英会話スクールに通うと、週数回のレッスンで月額の費用が万単位かかってしまうのが普通です。 一方、ネイティブキャンプは月額5980円の低価格の上にレッスン回数が無制限なので、英会話スクールより圧倒的に安くてお得です。

時間と場所を選ばずに英会話学習ができる。

スクールの場合、受講時間をあらかじめ予約をして、その場所まで足を運ぶ必要があります。一方、「ネイティブキャンプ」はオンライン上で英会話学習が出来るため基本的に場所を問わずレッスンに参加できます。24時間365日受講出来るので、朝の時間を活用して受講するのもOKですし、学校や仕事帰りの夜中にレッスンを受けられます。ちなみにネイティブキャンプは海外からでも利用できます。私は二年前カナダに留学していたのですが、時間が空いて暇なときは「ネイティブキャンプ」を使って英会話学習をしていました。留学開始直後はスピーキング力が皆無だったので、ネイティブキャンプを併用してスピーキング力を鍛えていました笑 なので、留学先や出張先で語学力で悩んでいる方にもおすすめですね。

PCだけでなくスマホからでも受講出来る。

インターネットが繋がっていれば、PCだけでなくスマホやタブレットなどからでも利用できます。「ネイティブキャンプ」のアプリをダウンロードすれば、すぐに使うことができます。スカイプなどのツールを使う必要がないので、簡単にレッスンに参加できます。

教材が豊富

「ネイティブキャンプ」では豊富なカリキュラムが用意されています。

英会話初心者から日常会話に問題のないTOEICハイスコアを目指す上級者まで、 それぞれのレベルで自由にカリキュラムを組めるので、レベルに合った授業を受けることができます。

以下のような教材が用意されています。

  • 日常英会話コース
  • ビジネスコース
  • 初心者コース
  • TOEIC対策コース

など。利用者の用途に合わせてコースが用意されています。 既に英語が喋れる方はフリートークコースを使えば、講師と英語で気軽にコミュニケーションを取ることができます。

様々な国籍の講師が在籍している

私がネイティブキャンプを使い始めた当初は、フィリピンの方しか講師がいませんでした。しかしながら、現在はセルビアやナイジェリア、アメリカ、イギリスなど世界90ヶ国以上の様々な国籍の講師が在籍しています。昨年、日本人英会話講師によるレッスンも開始したので、英会話レッスンが初めての方でも安心して利用できます。

ネイティブキャンプのデメリット

続いてデメリットを挙げていきます。

解約を忘れると自動的に引き落とされる。

退会の手続きをしないと通知なしで自動的に引き落としされます。 無料トライアル終了時にも通知は届かなかったはずなので、無料トライアルで満足を得られなかった方は解約手続きするのを忘れないようにしましょう。

時間によって混雑していて受講できない。

平日の夜や土日は利用者が増え混雑するため、予約しないと受講できない場合があります。予約する場合は1レッスン200コインかかりますが、 無料トライアルに参加するとコインが1000コインほど配布されます。また、混雑していても5分ほど待ってリロードすれば、基本的に受講できるので 必ずしも予約する必要はありません。

いかがでしたか?オンライン英会話を使って、語学力を向上させたい方はネイティブキャンプ の7日間の無料トライアルを利用することをおすすめします。 私も8月の留学に備えて最低、1日1回ネイティブキャンプを利用していこうと思います。

続きを読む

【rails】controllerとviewページでデバッグする方法をまとめてみたよ

f:id:daikiyano:20190220171535p:plain

今回、railsのcontrollerとviewページでデバックする方法をまとめてみました。

そもそもデバッグとは

プログラミングをしている方なら、エラーが表示されたり、プログラムが思い通りに動かなことが多々あります。このようにプログラムに問題があったり、それが原因でエラーが表示されることをバグと言います。ゲームをしてたりするとバグというフレーズを聞くことがあるので、ご存知の方も多いと思います。当然ですが、バグがあればプログラムは正常に動作しないので、その原因を突き止めなければなりません。そのバグの原因を見つけ、修正する作業をデバッグと言います。私もプログラミング初心者の頃は日々エラーに悩まされてました。

意外と知らなかったrailsのデバッグ法

PHPの場合、デバッグの手法としてvar_dumpやprint_rなどのオブジェクトに入っている値や配列などを確認出来る便利な関数が用意されています。私のPHPで好きな関数はvar_dumpと言っていいほど、PHPでプログラミングを書く際は重宝します。 railsの場合のデバッグのやり方はControllerかViewによってデバッグの方法が異なります。

railsでデバッグする方法

今回、railsでデバッグする手法として以下の二つを紹介します。

  • <%= debug () %>・・・Viewページ用
  • logger.debug()・・・controller用

Viewページでデバックする方法

Viewページでデバッグする際は<%= debug () %>を使用します。 以下のように記載すればデバッグ出来ます。

/html.erb

<%= debug 中身を確認したい変数、値 %>

例えば、@userの値の中を確認したい場合は以下のように記述して

<%= debug @user %>

Viewページで中身の値を確認し、デバッグすることが出来ます。

concise_attributes:
  - !ruby/object:ActiveModel::Attribute::FromDatabase
    name: id
    value_before_type_cast: 1
  - !ruby/object:ActiveModel::Attribute::FromDatabase
    name: email
    value_before_type_cast: hello@gmail.com
  - !ruby/object:ActiveModel::Attribute::FromDatabase
    name: crypted_password
    value_before_type_cast: "$2a$10$YmSkade3RbHBguE.cM8kK./aIx5FEBVaj/ZXD.xvRT6sjJu"
  - !ruby/object:ActiveModel::Attribute::FromDatabase

このように記述した場合は、

<% @user.each do |user| %>
         <%= debug user.email %>
  <% end %>

Viewページにこのようにデバッグの結果が表示されます。

hello@gmail.com

Controllerでデバックする方法

続いてcontrollerでデバッグする際は logger.debug()を使います。

例えば、コントローラーで以下のように記載します。

@user = User.first
 logger.debug("コントローラーでデバッグだよ")
 logger.debug(@user.email)

デバッグの内容はブラウザでは確認出来ないのでlogでチェックします。

f:id:daikiyano:20190220165621p:plain

このように確認することが出来ます。

デバッグ用のgemファイル

railsには便利なデバッグ用のgemファイルが用意されています。

better_errors

github.com

byebug

github.com

pry-byebug

github.com

まとめ

デバッグの手法として分割統治法があります。 大きなプログラム上の問題やバグが発生したとしても小さな問題に分割し、個別に小さな問題を解決していくことで、大きな問題も解決しやすくなります。 そのため、プログラミングでバグやエラーが発生した場合は、焦らず丁寧にオブジェクトに入っている値や配列を確認しながらデバッグしていくことが大事です。 デバッグをこまめに実施し、バグの原因を見つけた時は嬉しいものです。 プログラミング初学者の方は、特にデバッグすることを意識してプログラムを書いていくと挫折しにくいかも知れませんね。

参考サイト

www.youtube.com

[初心者向け] Ruby on Rails デバッグ方法まとめ - Qiita

www.for-engineer.life

www.for-engineer.life

続きを読む

【GCP入門】GCPで作成したインスタンスのポート番号を変更し、ファイヤウォールを設定する方法

f:id:daikiyano:20190217155050p:plain

今回、GCPでセキュアなサーバーを構築するため、ポート番号を変更しファイアウォールの設定をする手順について紹介します。

GCPの概要、GCPでインスタンスを作成する手順については以下の記事をご参照ください。

www.for-engineer.life

www.for-engineer.life

www.for-engineer.life

GCPのファイアウォール

GCPには、仮想マシンインスタンスとの通信を制御するセキュリティ機能であるファイアウォールがあります。 このファイアウォールは、プロジェクト内に用意されているネットワークに紐づいた機能です。ファイアウォールが未設定の場合は、外部からの受信トラフィックは全てブロックされます。ファイアウォールに対して明示的に設定をすることで、インスタンスへのアクセスが可能になります。ファイアウォールのルールは、ネットワークごとに定義する形となり、ルールとタグの組み合わせでパケットフィルタリングを行います。それぞれのインスタンスにタグを付与することができ、一つのインスタンスに対して複数のタグを設定することが可能です。

今回、セキュアなサーバーを構築するためにインスタンスのポート番号を変更します。また、変更したポート番号をGCPでファイアウォールのルールとタグを作成し適用させます。

余談ですが、ファイアウォール秘術を開発したのはイスラエルの企業です。 興味がある方は以下の記事をご参照ください。

www.for-engineer.life

インスタンスのポート番号を変更する。

rootへ移動

ポート番号を変更するためにsudo su -でrootへ移動します。

[@centos-7-1 ~]$ sudo su -

rootに移動したら vi /etc/ssh/sshd_configでsshd_configファイルの設定を変更します。

 vi /etc/ssh/sshd_config

上から約13行目にPort 22と記載されされています。デフォルトは22のままなので、今回、ポート番号を30933に変更します。

UNIXコマンドの基本

  • vi ・・・ファイルをオープン
  • i ・・・書き込み
  • escを押した後に:wqで上書き保存
[root@centos-7-1 ssh]# cat /etc/ssh/sshd_config
#       $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22  #変更前
Port 39033 #変更後
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO


sshd_configファイルの設定が完了したら、systemctl restart sshdでsshdを再起動します。 再起動をしないと変更が反映されないので、注意しましょう。

[root@centos-7-1 ssh]# systemctl restart sshd

ファイヤウォールの設定

続いてファイヤーウォールの設定を行います。 ポート番号変更後、ファイヤーウォールのポートを解放しなければ、コンソールへアクセス出来なくなります。

メニュー > VPCネットワーク > ファイヤーウォールルール へ移動したら、

f:id:daikiyano:20190203134046p:plain

上部にある「ファイヤーウォールルールの作成」を選択します。

f:id:daikiyano:20190203134316p:plain

今回、分かりやすいようにファイアウォールのルール名をallow-test-39033とします。 ターゲットタグも同じ名前にします。

f:id:daikiyano:20190203134335p:plain

f:id:daikiyano:20190203134346p:plain

上の画像のように設定が完了したら作成ボタンを押します。 ファイアウォールのトップページへ戻り、作成したallow-test-39033のファイアウォールルールとタグが追加されていることを確認します。

f:id:daikiyano:20190203134456p:plain

続いて、作成したインスタンスにファイアウォールのタグを設定します。

Compute Engine > VMインスタンスへ移動します。

f:id:daikiyano:20190203134540p:plain

インスタンスの詳細ページへいき、編集をクリックします。

f:id:daikiyano:20190203134846p:plain

ネットワークタグの項目でallow-test-39033を追加し保存します。

f:id:daikiyano:20190203134654p:plain

f:id:daikiyano:20190217153033p:plain

作成したインスタンスからブラウザウィンドウでカスタムポートを開くを選択し、ポート番号の39033を入力します。ポート番号とフ、ァイアウォールの設定が完了していた場合、コンソール画面へアクセス出来ます。

続きを読む

負荷分散の基礎とロードバランサーの役割

f:id:daikiyano:20190211232126g:plain

画像出典:https://www.infraexpert.com/study/loadbalancer1.html

今回、負荷分散の基礎とロードバランサーを紹介していきます。

負荷分散の基礎

システムの可用性の向上と処理速度の向上を目的として負荷分散があります。 負荷分散はサイトへのアクセス数が僅かな場合、処理数が少ないので負荷分散を導入する必要がありません。しかし、サイトの利用者が増えたり、サイト内のあるコンテンツ(記事)などがバズった場合、アクセス数と処理数が激増します。 そうすると、一台のサーバーに負荷が集中するため、サイト内のページ表示が極端に遅くなったり、一時的に表示されなくなることがあります。負荷分散を用いて処理を複数のサーバーで割り振ることで、特定のサーバーに負荷が集中するのを防ぐことが可能です。

ロードバランサーの導入

f:id:daikiyano:20190211232126g:plain

画像出典:https://www.infraexpert.com/study/loadbalancer1.html

負荷分散を実現する方法の一つとしてロードバランサーの利用があります。ロードバランサは、負荷分散専用のネットワーク機器で、クライアントからのリクエストを一定のアルゴリズムに基づいて複数のサーバーに振り分けます。

ロードバランサーの役割

ロードバランサの役割として以下の三つがあります。

サイト内の表示速度を高速化

ロードバランサーを利用することでサイト内の表示速度が高速化します。 サイトに負荷がかかることでページの表示が遅くなったり、表示されなくなるため、SEOの観点からみた時に離脱率が高くなります。 そのため、利用者にとって快適なサイトを運営するために表示速度を高速化する必要があります。

サーバーダウンのリスクを回避

ロードバランサを利用すると複数台のサーバーを使うため、万が一一台のサーバーが故障しても他サーバーに自動切替します。 そのためサービス停止のリスクを回避でき、システムの可用性が向上します。

サーバーのメインテナンスが可能

ロードバランサは複数台のサーバーを使うため、サーバーのメインテナンスを行う際にサービスを停止する必要が無くなります。メインテナンス中のサーバーに振り分けしないようにすることで実現可能です。

ロードバランサーの注意点

ロードバランサーを利用する際の注意点としてロードバランサ自身が単一障害点(SPOF)にならないように注意する必要があります。SPOFとは、その箇所で障害が発生すると、システム全体が利用できなくなってしまうことです。 仮にロードバランサーで障害が発生しても、サイトサービスが全停止しないように冗長化などの対策が必要になります。

  • SPOF・・・ single point of failure

GCPでロードバランサーの導入

f:id:daikiyano:20190211232405p:plain

画像出典:Google Cloud including GCP & G Suite — Try Free  |  Google Cloud

GCP(Google Cloud Platform)ではCloud Load Balancingによる負荷分散システムがあります。

Cloud Load Balancingは、複数の仮想マシンインスタンスに対して、インターネットからのトラフィックを負荷分散するサービスです。複数の地域(リージョンやゾーン)にまたがって負荷分散できます。

どこかのタイミングでGCPでロードバランサーの導入する手順を記事化したいと思います。

詳しくはGCP公式サイトをご参照ください。

cloud.google.com

続きを読む

トビタテ留学JAPAN10期選考結果のご報告

f:id:daikiyano:20190207163927j:plain

この度、トビタテ留学JAPAN10期の選考結果が届きましたのでご報告いたします。

結果、トビタテ留学JAPAN10期生として採択されました。

今回の件でご協力していただいた方には感謝の気持ちでいっぱいです。

今年の8月からアメリカ・シリコンバレーとイスラエル・テルアビブを拠点に活動予定です。

f:id:daikiyano:20181216082046p:plainf:id:daikiyano:20181216082338p:plain

主に以下の三つの視点を意識して活動を行います。

  • 技術的視点・・・メインはwebエンジニアとして企業で活動。ITイベントへの参加、AI技術の応用など。
  • 経営学的視点・・・主に経営組織、経営労務の視点から日本と他国との働き方の違い、開発の仕方の相違。インキュベーター施設の在り方
  • 宗教的・歴史的視点・・・ 中東問題、パレスチナ問題。

メインはエンジニアインターン生として現地のIT企業で働くことです。 せっかく大学で経営学を専攻していますので、経営学的視点で現地企業の組織文化や価値観などを解読したら、面白い発見があるんじゃないかなあと考えています。特に小国でありながらIT先進国であるイスラエルの企業で働きながら、文化を紐解けるのは本当に楽しみです。 個人的に歴史にも関心があるので、深刻なパレスチナ問題等にも向き合い、現地から発信していきたいです。

と、好奇心旺盛で困っています。笑 あくまで、理系コースとしてエンジニアリングを学ぶことがメインであることを忘れずに引き続き留学計画のブラッシュアップをしていきます。

今後は当ブログを通じてトビタテ留学生としても情報発信していきます。

引き続きどうぞ宜しくお願いいたします。

追記 2019/2/16

この度、トビタテ留学JAPAN10期 理系・複合・融合コースで採用されました。 私は大学二年生時にプログラミングに興味を持ち、独学で学びはじめましたが挫折し、昨年1月にはインドへIT留学しました。現在、エンジニアインターン生として企業で働きながらスキルを磨いています。将来はグローバルに活躍できるwebエンジニアになることです。その目的を果たすためトビタテ生として8月から7ヶ月間IT先進国であるアメリカ・シリコンバレーとイスラエル・テルアビブへ留学します。現地ではエンジニアインターン生としてIT企業で働く予定です。AI技術を活用する企業なので、留学が開始するまでに自力で機械学習等を学びインターン先で何らかの形で応用させたいと考えています。が多分また挫折する。笑

また、大学で学んだ経営学の知識を活かすために経営学的視点で現地企業の組織文化や社員の考えや価値観を解読します。 解読することで ・どうすれば、もっと楽しみながら生き生きと会社で働くことができるのか。 ・どうすれば、日本の長時間労働や残業を減らせるのか。 の手がかりを見つけたいと考えています。 幸いにも受け入れ機関先が世界各国のスタートアップ企業が集結するインキュベーター施設内にあるので、働き方の違い、開発の仕方の違いを垣間見ることが出来そうです。積極的にコミュニケーションを取りながらヒヤリングもしていきたいです。 トビタテ生として日本に成果を最大限還元するために、まだ留学計画をブラッシュアップしている段階です。

大学側で審議してもらい休学せずに留学するつもりなので、予定通り20卒生です。

同じトビタテ生の方、どうぞ宜しくお願いいたします。

www.tobitate.mext.go.jp

www.for-engineer.life

続きを読む

【rails5.2】検索フォームを作成してみたよ。キーワードと部分一致した結果を表示させる

f:id:daikiyano:20190206160323p:plain

今回、rails5.2で検索フォームを実装する方法をご紹介します。

検索機能の実装

今回、ユーザー一覧が表示されるusers/indexページに、検索フォームを実装します。 検索フォームに入力されたキーワードがデーターベースにあるユーザー名と部分一致した場合、そのユーザー名を表示される仕様にします。

まずは、以下のように検索フォームを作成します。 ユーザーネームのカラム名はusernameです。

users/index.html.erb

     #検索拡張機能
          <%= form_tag(users_path, :method => "get") do %>
            <%= text_field_tag :search %>
            <%= submit_tag "Search" ,:username => nil ,class: "button is-info"%>
          <% end %>

 
     <% @users.each do |user| %>
      

続いてUsersControllerのindexにsearch(params[:search])を追加します。 検索フォームで入力されたキーワードがparamsの中に入るようなイメージです。

  • search(検索フォームで入力されたキーワード)

class UsersController < ApplicationController
(中略)
  def index
      @users = User.paginate(page: params[:page], per_page: 5).search(params[:search])
  end
(中略)
end

最後にuserモデルにsearchというメソッドを作成します。 検索フォームで入力されたキーワードがsearchメソッドの中で処理されます。 キーワードと部分一致するユーザーネームがあれば、その結果がページに表示されます。 部分一致するユーザーネームがない場合は、allとして全てのユーザーネームが一覧として表示されるようになります。

models/user.rb

class User < ApplicationRecord

  def self.search(search) #self.はUser.を意味する
    if search
      where(['username LIKE ?', "%#{search}%"]) #検索とuseanameの部分一致を表示。
    else
      all #全て表示させる
    end
  end


end

完成イメージとして下のようになります。

f:id:daikiyano:20190206160121p:plain

f:id:daikiyano:20190206165520p:plain

参考サイト

qiita.com

続きを読む

大学生がシェアハウスをするメリットについて紹介してみるよ

f:id:daikiyano:20190203153725j:plain

今回、大学生に向けてシェアハウスをするメリットついてご紹介したいと思います。

私は昨年の三月からシェアハウス業者を利用してルームメイトとシェアハウスしながら生活をしています。理由は以下の二点です。

  1. 将来の留学を見据えている
  2. 外国人の友人を増やし、語学力と異文化コミュニケーション能力を向上させる

①は何度もブログの中でも触れている通りトビタテ留学です笑 いい加減トビタテ、トビタテしつこいと言われてしまいそうですね。 二つ目は純粋に外国人と会話するのが好きなので、国内でも外国人の友人が増えれば良いなと思い、シャアハウスで生活することを決めました。

今回、実際にシェアハウスをしてみて感じたメリットを少しだけ紹介したいと思います。

シェアハウスをするメリット

初期費用がかからない。

通常、賃貸アパートで一人暮らしを始める場合、敷金、礼金、仲介手数料、鍵交換代などの初期費用が発生します。しかしながら、シェアハウス業者を利用してシェア暮らしを始めると敷金、礼金などの初期費用が発生しません。短期間しかその場所に滞在しない方や留学などを検討している学生であれば、シェアハウスで生活すると費用を抑えることが出来ます。

家具、WIFIが既に設置されている

一人暮らしを始めると冷蔵庫や洗濯機、キッチン用具、ベット、机、椅子などの家具を自分で用意する必要があるので費用がかかります。シェアハウスであればそれらの家具は既に用意されているので、自力で準備する必要がありません。Wi-FIついても既に設置されているシェアハウスがほとんどなので、業者と契約して配線を繋げてWi-Fi設置してもらう手間が省けます。また、シェアハウスの場合、家賃の中に光熱費、水道代、Wi-FI代が含まれているので、冷暖房やガスを使いすぎて代金が高くなってしまう心配もありません。家賃として一括で支払いができるので、光熱費や水道代を滞納してしまうリスクも無くなります。

外国人と交流することができる。

こちらは記事の冒頭で少し触れましたが、多くの外国人がシェアハウスを利用しています。シェアハウス先によって異なりますが、シェアハウスを利用している4割近くの方は外国人です。仕事や留学、ワーキングホリデーで訪日した外国人は生活費用を抑えながら、日本人の友人を作り交流することを目的としてシェハウスを利用します。日本は欧米ほどホームステイを積極的に受け入れている家庭が少ないので、その代替案としてシェアハウスを利用する外国人が多いです。実際に私もシェアハウスをして9ヶ月経ちましたが、これまでに韓国、中国、シンガポール、アメリカ、カナダ、イタリア、フランス、イギリスの国籍の方々とシェアハウスをしてきました。シェアハウスをしていると自然と外国人の友人が増えるため、語学力を伸ばしたい、異文化コミュニケーションを深めたいという学生にはおすすめです。

自立している人が多い。

シェアハウスは学生だけでなく、社会人や海外からの留学生も利用しています。みなさんそれぞれシェアハウスする目的があり、そこでルームメイトと生活をしています。私がシェアハウスを利用している目的は冒頭で述べた通りです。 社会人の方も同じような目的で、

  • 語学力を伸ばすため
  • 貯金して将来、ワーキングホリデーを使って海外に行く

と将来のキャリアをしっかりと考えている方が多いです。外国人の方も日本語を覚え文化や伝統を学ぶため、日本人の友人を増やすためなどの理由でシェアハウスする方が多いです。将来を見据えてシェアハウスを利用する方が多いので、自立している方が多い印象です。このように学生がシェアハウスをすると社会人や外国人の方と交流する機会も多いので、大学生活では味わえない価値観や刺激を受けることが出来ます。

いかがでしたか?シェアハウスを検討している方が多い一方で、他人とシェアハウスすることに対して不安や心配を抱えている方も多いと思います。 今回の記事を通して、シェアハウスを検討する際の判断材料になれば幸いです。

シェアハウス業者

最後にシェアハウス業者をいくつかご紹介したいと思います。

ひつじ不動産

www.hituji.jp

クロスハウス

x-house.co.jp

ボーダレスハウス

www.borderless-house.jp

SHARE PARADE

sharepare.jp

続きを読む

ブログを開設してから4ヶ月の振り返りと今後の目標

f:id:daikiyano:20190131182712j:plain

こんにちは。大学3年のdaikiです。

皆さんいかがお過ごしでしょうか? 今日で1月が終わり、2019年も12分の1が終わりますね。 時が経つのは早いものですね。

今回、昨年の10月にブログを開設してから4ヶ月経ちましたので、少し振り返りをしていきます。

ブログを始めようと思ったきっかけ

そもそも私がブログを始めたきっかけはトビタテ留学に応募するためです。

トビタテ留学とは

「トビタテ!留学JAPAN日本代表プログラム」は、2014年からスタートした官民協働で取り組む海外留学支援制度です。2020年までの7年間で約1万人の高校生、大学生を「トビタテ!留学JAPAN日本代表プログラム」の派遣留学生として送り出す計画です。派遣留学生は支援企業と共にグローバル人材コミュニティを形成し、”産業界を中心に社会で求められる人材”、”世界で、又は世界を視野に入れて活躍できる人材”へと育成されます。帰国後は海外体験の魅力を伝えるエヴァンジェリスト(伝道師)として日本全体の留学機運を高めることに貢献することが期待されています。 出典元:トビタテ!留学JAPANとは|トビタテ!留学JAPAN HP

www.tobitate.mext.go.jp

トビタテ留学に応募しようと考えたのは、大学を休学していた昨年の2月です。 大学四年生の後期(2019年8月)にもう一度海外に飛び立ちたい、海外企業で働きながらエンジニアリングを学びたい、という気持ちがありました。しかし、これ以上の留学は資金面で難しいです。そ子で民間企業が協賛金として出資していただき、支援金という形で志高い大学生に給付する留学制度「トビタテ留学JAPAN!」に着目しました。

私がトビタテ留学を活用してエンジニア留学するためには理系、複合・融合系人材コースで応募する必要がありました。 しかし、自身が文系大学生であるため、ただやる気と意欲だけがあったとしても他の理系学生と勝負できないと感じていました。そこで、最初の取った行動として所属していたゼミを辞めました。理由は、①プログラミング学習に集中するため②エンジニアインターンに参加するためです。この二点を達成すればエンジニアスキルを磨くことができ、実績を作ることができると考えたからです。そして、実際に昨年の夏からエンジニアインターン生として企業で働き始めました。しかし、それでもアピール材料が足りないと感じていました。そこで、周囲の方のアドバイスを参考に取った行動がブログを開設することでした。 そこで、2018年10月3日に技術ブログを開設しました。

ブログ運営の目的

ブログを開設しようとした理由はトビタテ留学に合格するためのアピール材料にするためでした。 しかしながら、トビタテ留学生として発信していくことを目的にすると視野が狭まり、短期的なブログ運営で終わってしまいます。 そこで、将来のキャリアを見据えて文系エンジニアの視点で、二つブログ運営の目的を設定しました。

  1. ①習得した技術、経験を言語化し、アウトプット(備忘録)
  2. ②アウトプットした内容を有効活用するため、訪問者にとって有益な記事を作成

この二点です。

①の習得した技術、経験というのはエンジニアスキルのアウトプットだけでなく、休学や海外留学、トビタテ留学の応募、プログラミングの学習法など私が経験してきたことを含めて言語化しアウトプットするという意味合いです。備忘録としてアウトプットしたものを有効活用するために設定した目的が②に該当します。

備忘録を前提としてブログ運営を行っているので、収益やPV数は特に気にしていません。 他の人にも参考になってくれたらラッキー。という気持ちでブログ運営をしています。 それくらいゆるい気持ちでブログ運営をしているのが、ブログ運営が続いている要因なのかも知れませんね。

アクセス数が多く人気だった記事

人気だった記事は以下の通りです。

一位

www.for-engineer.life

二位

www.for-engineer.life

三位

www.for-engineer.life

四位

www.for-engineer.life

五位

www.for-engineer.life

正直、技術記事書いてもPV数伸びません笑 代わりに人気だったのは、トビタテ留学に関する記事です笑 私もトビタテ応募する際はググりまくりながら応募していたので、トビタテ関連に記事を閲覧する方の気持ちはよく分かります。 三位はrailsのvideoタグに関する記事ですね。こちらはグーグル検索の流入がほとんどです。 四位がgoogle adsence合格記事、五位がプログラミングの学習法をまとめた記事でした。

学習法やノウハウ系の記事はアクセス数伸びるのは分かっています。 ただし、アウトプットすることが目的なので引き続き、技術記事にこだわってブログ運営していきます

今後の目標(短期目標)

今後の目標はとりあえず、ブログの更新を継続していくことなのかなと思います。技術記事にこだわり過ぎず、休学や留学など大学生にとって役に立つような記事を多く作成したいと考えています。トビタテ留学に合格すれば、トビタテ合格のコツなどを記事化できます。実際にアメリカとイスラエルの留学が実現すれば、海外から情報を発信することも可能です。イスラエル系テックブロガー兼ユーチューバーとかかっこいいなと思ったり。笑 就職活動が終了すれば、就活ネタも記事化できるので、しばらくネタに困ることはなさそうですね笑

今後の目標(長期目標)

長期目標として5年後、10年後も継続しているようなブログ運営を心がけていきたいです。 なぜなら、私がエンジニアとしてキャリアを積んでいくのであれば、ブログが自身のポートフォリオやキャリア形成としてのツールになり得るからです。 今はまだ備忘録としてアウトプットをすることで精一杯です。しかし、エンジニアとして働き始め数年経てば、初心者エンジニアから中堅エンジニアへ立場が変化していきます。そうすれば、今より技術的に高度な記事を作成することが可能です。 そうなった場合、質の高い技術記事を執筆し、日本のエンジニア業界に貢献できる技術ブログを最終的な目標として掲げることができるのではないかなと考えています。笑

続きを読む

GCPで作成したCentOS7のインスタンスにNginxをインストールする

f:id:daikiyano:20190130203338p:plain

今回は、前回GCPで作成したCentOS7のインスタンスにNginxをインストールする手順の確認をしていきます。

Nginxとは?

Nginxは2002年にロシアのIgorSysoev氏によって開発されたwebサーバーです。 webサーバーと言えば、1995年に登場したApacheがシェアが高く有名でしたが、2018年12月時点でのサーバーのシェア確認したところNginxがApacheを抜いています。

f:id:daikiyano:20190128155524p:plain

December 2018 Web Server Survey | Netcraft

Nginxについて以下のサイトで分かりやすい解説がされています。

https://wa3.i-3-i.info/word12859.html

Nginxをインストールするよ

前提

今回は、GCPで仮想マシンインスタンス作成したことを前提に進めていきます。 仮想マシンインスタンスを作成するまでの手順は以下の記事を参照ください。

www.for-engineer.life

Linuxの操作方法が分からない方は、ドットインストール UNIXコマンド入門を参考にすると分かりやすいのでお勧めです。

インスタンスのコンソール画面へアクセス

左のタブからCompute Engine > VM インスタンスを選択し、VMインスタンスのページへ。

f:id:daikiyano:20190127140021p:plain

SSH > ブラウザウィンドウで開くを選択し、コンソール画面を表示させます。 黒い画面が表示されればOKです。

f:id:daikiyano:20190127140441p:plain

リポジトリ追加

ここからCent OSにNginxをインストールしていきます。 まずはリポジトリの設定を行います。

コマンドで sudo vi /etc/yum.repos.d/nginx.repoを叩きnginx.repoのファイルを作成します。

[username@centos-7-1 ~]$ sudo vi /etc/yum.repos.d/nginx.repo

作成したnginx.repoに以下を書き込みます。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

Nginxをインストール

続いてNginxをインストールしていきます。

[username@centos-7-1 ~]$ sudo yum install nginx

最後の部分に以下の記載があれば、Nginxのインストール完了です。

Installed:
  nginx.x86_64 1:1.15.8-1.el7_4.ngx           
Complete!

Nginxのバージョンの確認をします。

[username@centos-7-1 ~]$ nginx -v
nginx version: nginx/1.15.8

Nginxの設定

Nginx がインストール出来たことを確認したら、コンピュータ起動時に自動的にNginx が起動するように設定します。 コマンド上でsystemctl enable を実行します。

[username@centos-7-1 ~]$ sudo systemctl enable nginx

Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

Nginxの設定変更後、必ずsystemctl start nginxを実行し、Nginxを再起動させます。

[usernamer@centos-7-1 ~]$ sudo systemctl start nginx

最後にGCPの インスタンスの外部IPにアクセスし、Welcome Nginxが表示されればNginxが無事に導入出来たことになります。

f:id:daikiyano:20190130175745p:plain

f:id:daikiyano:20190130203338p:plain

今回、Nginxのインストール方法について確認しました。 次回からGCPで作成したインスタンスのポート番号の変更とファイアウォールの設定について確認していきます。

続きを読む

【GCP入門】GCEで新しいプロジェクトを作成し、仮想マシンインスタンスを起動するまでの手順

f:id:daikiyano:20190126201457p:plain

画像出典:GCP と G Suite を含む Google Cloud - 無料トライアル  |  Google Cloud

今回、Google Cloud PlatformのGCEで新しいプロジェクトを作成し、仮想マシンインスタンスを起動するまでの手順をまとめていきます。

前回、Google Cloud Platform(GCP)の概要を説明するところで終了しました。 GCPで登録すると300$分無料でGCPを操作することができるので、無料トライアルを活用し色々試していきます。

cloud.google.com

www.for-engineer.life

Google Compute Engine(GCE)とは?

GCEはGoogle Cloud Platformで仮想マシンを提供するサーバーです。AWSだとEC2に相当するサービスです。AWSのEC2などの一般的なクラウド環境に比べて仮想マシンの起動が早く、分単位で課金されていくので低コストで運用できるのが特徴です。

仮想マシンの起動の速さを三大クラウドと比較すると GCPが一番早いです。

  • Google Cloud Platform:40秒以内
  • AWS:1分程度
  • Azure:2分30秒以上

・参考サイト clonos.jp

仮想マシンインスタンスを作成し起動するまでの手順

プロジェクトの作成

GCPのアカウント登録が完了したら、まずプロジェクトを作成します。 Cloud consoleのホーム画面に移動後、下の画像の赤い枠の中がtestとなっていますが、プロジェクトを作成していないデフォルトの状態だとプロジェクトを作成と表示されていますのでそちらをクリック

f:id:daikiyano:20190127131944p:plain

プロジェクトを作成 > 新しいプロジェクトをクリックしたら任意のプロジェクト名を設定します。 今回、プロジェクト名を「test」とし、作成ボタンをクリックします。

f:id:daikiyano:20190127131951p:plain

f:id:daikiyano:20190127132004p:plain

仮想マシンインスタンスの作成

続いてGCEの仮想マシンインスタンスを作成していきます。

左のタブからCompute Engine > VM インスタンスを選択します。

f:id:daikiyano:20190127132746p:plain

上部にインスタンスを作成のボタンがあるのでそちらをクリック。

f:id:daikiyano:20190127133227p:plain

インスタンスの作成画面が表示されるので、順番に設定していきます。

名前は任意のインスタンス名を設定します。

リージョン

リージョンですが 今回はasia-northeast1(東京)を選択します。

マシンタイプ

続いて仮想マシンインスタンスのスペックを選択します。 今回は、テスト用なのでmicro(共有 vCPU × 1)とします。

ブートディスク

仮想マシンインスタンスで使用するOSとディスクのサイズ設定を行います。 今回は、CentOS 7を選択します。

f:id:daikiyano:20190127133519p:plain

f:id:daikiyano:20190127134704p:plain

アクセススコープ

こちらはアクセス権の設定です。 アクセス権を設定することで、仮想マシンインスタンスごとに利用可能なサービスを制御することが可能です。 今回は、デフォルトのアクセス権を許可するにします。

ファイアウォール設定

ファイアウォールの設定をします。

余談ですが、ファイアウォール技術を開発したのはイスラエル企業です。 興味があれば見てみてください。

www.for-engineer.life

デフォルトではSSH,RDP,ICMPをのぞいて、外部ネットワークから受信される全てのトラフィックがブロックされます。 今回は、

  • HTTP トラフィックを許可する
  • HTTPS トラフィックを許可する

の両方にチェックを入れます。

各設定を終了後作成ボタンをクリックするとインスタンスが作成されます。

仮想マシンインスタンスへアクセス

早速、先ほど作成した仮想マシンインスタンスへアクセスします。

Compute Engine > VM インスタンスを選択すると以下のページへ遷移します。

続いてインスタンスのSSH > ブラウザウィンドウで開くを選択します。 f:id:daikiyano:20190127140021p:plain

すると、別ウィンドウでSSHのコンソール画面が表示されます。

f:id:daikiyano:20190127140441p:plain

以上で、GCEで新しいプロジェクトを作成し、仮想マシンインスタンスを起動させるまでの手順でした。

今後、このコンソールから、仮想マシンインスタンスのゲストOSに対する操作を行います。

続きを読む