Movatterモバイル変換


[0]ホーム

URL:


仕組みもわかる 初めてのHerokuアプリケーションづくり! Gitでのデプロイもさらりとこなす (1/3)|CodeZine(コードジン)
SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

仕組みもわかる 初めてのHerokuアプリケーションづくり! Gitでのデプロイもさらりとこなす (1/3)|CodeZine(コードジン)

翔泳社

プライバシーマーク

連載記事

イベント
イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZine BOOKS

翔泳社では、「独習」「徹底入門」「スラスラわかる」「絵で見てわかる」「一年生」などの人気シリーズをはじめ、言語や開発手法、最新技術を解説した書籍を多数手がけています。プロジェクトマネジメントやチームビルティングといった管理職向けの書籍も豊富です。

ITエンジニアとしてのスキルアップ・リスキリングに、ぜひお役立てください。

書籍に関する記事を見る

仕組みもわかる 初めてのHerokuアプリケーションづくり! Gitでのデプロイもさらりとこなす

Herokuでスタート! はじめてのPaaSアプリケーション開発 第2回


 前回は、HerokuアカウントのサインアップとHeorku Toolbeltのインストールを行い、Herokuを使用するための環境を整えました。今回はその環境を使用して、実際にHeroku上で動作するアプリケーションを作成し、動かしてみます。

アプリケーションを準備する

 今回作成するのはJava Servletアプリケーションです。ServletコンテナにはHerokuの中の人が作成した「Webapp Runner」を使用します。

 Webapp Runnerは内部的にTomcatを起動するだけのランチャーアプリケーションです。Heroku上で動作させることを前提として作成されており、SessionのMemcached(またはRedis)への置き換えが簡単に行えるようになっています。

 素のTomcatをそのまま使用することもできるのですが、Heroku上でServletアプリケーションを動作させる場合、SessionのMemcached(またはRedis)への置き換えは絶対に必要なのでWebapp Runnerを使用することをお勧めします[1]

[1] Session置き換えの具体的な方法と、それが必要な理由は今後の連載中で詳細に説明します。

 Webapp RunnerはMavenでビルドして実行するタイプのServletコンテナです。新規でWebアプリケーションを作成する場合、本来ならMavenのプロジェクトスケルトンをベースにpom.xmlを記述していくのですが、今回は作成済みのHello worldアプリケーションをコピーして、それをベースにカスタマイズしていくことにします。

 今回作成するWebアプリケーションのベースとなるコードを、筆者のGiHubリポジトリ(https://github.com/shunjikonishi/codezine-sample)に置きました。まず、コマンドラインから以下のようにgit cloneコマンドを実行して、ローカルにリポジトリのクローンを作成してください。GitHubリポジトリ画面の右側にある「HTTPS clone URL」で[Copy to clipboard]ボタンをクリックすると、指定するURLをクリップボードにコピーできます。

$ git clone https://github.com/shunjikonishi/codezine-sample.git -o upstreamCloning into 'codezine-sample'...remote: Counting objects: 23, done.remote: Total 23 (delta 0), reused 0 (delta 0)Unpacking objects: 100% (23/23), done.Checking connectivity... done.

 

「HTTPS clone URL」の[Copy to clipboard]ボタン
「HTTPS clone URL」の[Copy to clipboard]ボタン

 

 実行に成功するとカレントディレクトリに「codezine-sample」というディレクトリが作成され、そこにリポジトリの内容がコピーされます。

git clone

 git cloneは外部にあるリポジトリを複製するためのコマンドです。-oはリモートリポジトリの参照名を指定するオプションで、省略時には「origin」という参照名が使用されます。

 参照名はoriginのままでもよいのですが、gitでは慣習的に以下の名前が使用されることが多いので、ここではそれにならって「upstream」としています。

 

  • origin 自身の管理するマスターリポジトリ
  • upstream origin以外で自分以外の誰かが管理するマスターリポジトリが存在する場合に使用する参照名

 ここではローカルに複製したリポジトリをGitHubなどの外部リポジトリで管理するという内容は扱いませんが、その場合にはoriginという参照名を使用するとよいでしょう。

 

リポジトリの中身を確認する

 この時点でHerokuに関連する操作はまだ何も行われていませんが、Herokuとgitの関係を理解するために、まずは以下のコマンドを実行してみてください。

$ cd codezine-sample$ git remote -vupstream    https://github.com/shunjikonishi/codezine-sample.git (fetch)upstream    https://github.com/shunjikonishi/codezine-sample.git (push)

 git remoteはリモートリポジトリを管理するためのコマンドです。-vオプションを付けて実行することで、リモートリポジトリの詳細な一覧が表示されます。上記の実行結果からは、現時点ではcloneに使用したリポジトリ(upstream)のみが定義されていることがわかります。

 次にリポジトリ内のファイルを見ていきます。現時点でのファイル構成は以下のようになっているはずです。

現時点でのファイル構成
現時点でのファイル構成

 

 Mavenプロジェクトですのでpom.xmlがあり、Javaのソースファイルはsrc以下に次の3つがあらかじめ用意されています。

  • HelloServlet 単純なHello worldのServlet
  • TemplateEngine Mustacheをラップしたテンプレートエンジン
  • FileUtils ファイル読み書きなどのユーティリティクラス

 なお、TemplateEngineは今回使用しません。今後このアプリケーションを作り込んでいく際に使用します。

 .gitディレクトリと.gitignoreファイルはgit関連のファイルです。 .gitがgitリポジトリ本体で、.gitignoreにはgitでのバージョン管理対象外のファイルを記述します。

 README.mdはプロジェクトの説明書き。 run.sh/run.batはMac/Win用の実行ファイルです。

 Procfileとsystem.propertiesの2つはHerokuで使用するファイルですが、これらの説明は後で行います。

 

ローカルで動かしてみる

 Herokuを使う前にまずはこのプロジェクトをローカルでコンパイルして動かしてみます。 mvn packageでコンパイルしてrun.sh(Windowsの場合はrun.bat)で実行してみてください。

$ mvn package[INFO] Scanning for projects......(中略)...[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 4.513 s[INFO] Finished at: 2014-09-20T11:56:39+09:00[INFO] Final Memory: 20M/91M[INFO] ------------------------------------------------------------------------$ ./run.shAdding Context  for target/heroku-sample9 20, 2014 12:09:19 午後 org.apache.coyote.AbstractProtocol init...(略)...

 Webブラウザで http://localhost:5000/ にアクセスすると、Hello worldの文字列が表示されます。

この記事は参考になりましたか?

この記事の著者

小西 俊司(コニシ シュンジ)

株式会社Giveryに所属するエンジニア。CODEプロジェクトというエンジニアの成長を促進するプラットフォーム開発のテックリード。Herokuも使った新しいプロダクトを今秋リリース予定。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この著者の最近の執筆記事

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/81872014/12/17 20:52

Special Contents

AD

    キャリアインタビュー

    AD

      おすすめ

      アクセスランキング

      アクセスランキング

      1. 1
        AWS、「Amazon S3 Vectors」のプレビュー版発表NEW
      2. 2
        OpenAI、「ChatGPTエージェント」を正式発表、タスク実行・ウェブ操作が一体化
      3. 3
        ITエンジニア注目トレンドを総まとめ!週間ニュースランキングTOP10【7/11~7/17】
      4. 4
        日本CTO協会、「開発者体験ブランド力」調査に基づく上位30社のランキングを発表NEW
      5. 5
        【TypeScriptの基礎を学ぶ】JavaScriptと比較して起こりがちなミスを防ごう!
      6. 6
        品質をあらゆる面から検証せよ! シフトレフトを実現するフルスタックテスティングの全体像NEW
      7. 7
        現場と上流の往復で見つけた「構造」という武器──アーキテクト 尾髙敏之さんが語る、事業目線の育て方
      8. 8
        大企業の約8割がIT人材不足を実感、5年後は「IT人材不足がさらに拡大」との予測も約6割に。ヒューマンリソシアが調査
      9. 9
        残業が0でも生産性5倍に!全社AI導入を推進するジーニー・CTOが語る次世代エンジニア像と組織のあり方とは?
      10. 10
        Google、AIアプリ開発向けPythonライブラリ「GenAI Processors」をOSSで発表
      1. 1
        Google、AIアプリ開発向けPythonライブラリ「GenAI Processors」をOSSで発表
      2. 2
        なぜあなたのWebサイトは遅いのか? mizchi氏が語るパフォーマンス改善のポイントとは
      3. 3
        「AIに代替されない」エンジニアになる3つの能力──“日報”で鍛える問題解決力
      4. 4
        総務省、21万人以上が受講した無料オンライン講座「社会人のためのデータサイエンス入門」を開講
      5. 5
        COBOLからJavaへの変換も!汎用機の移行支援サービスが提供開始
      6. 6
        103社を分類!AIエージェントのカオスマップが公開、LLMから採用支援まで網羅
      7. 7
        AWS、無料で生成AIについて学べる学習コンテンツ「AWS SimuLearn」を公式ブログで紹介
      8. 8
        GitHubは30% ソースコード管理ツールの利用状況、AI活用に影響も—―ファインディが調査結果を発表
      9. 9
        リモートからの出社強制に戸惑いの声「仕事を続けられない」なども。「働き方への不安」に関する調査実施
      10. 10
        GitHub Copilotの「Agent mode」が正式リリース、MCPはプレビュー版提供開始

      イベント

      CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

      Developers Summit(デベロッパーズサミット)

      新規会員登録無料のご案内

      • ・全ての過去記事が閲覧できます
      • ・会員限定メルマガを受信できます

      メールバックナンバー

      アクセスランキング

      アクセスランキング

      1. 1
        AWS、「Amazon S3 Vectors」のプレビュー版発表NEW
      2. 2
        OpenAI、「ChatGPTエージェント」を正式発表、タスク実行・ウェブ操作が一体化
      3. 3
        ITエンジニア注目トレンドを総まとめ!週間ニュースランキングTOP10【7/11~7/17】
      4. 4
        日本CTO協会、「開発者体験ブランド力」調査に基づく上位30社のランキングを発表NEW
      5. 5
        【TypeScriptの基礎を学ぶ】JavaScriptと比較して起こりがちなミスを防ごう!
      6. 6
        品質をあらゆる面から検証せよ! シフトレフトを実現するフルスタックテスティングの全体像NEW
      7. 7
        現場と上流の往復で見つけた「構造」という武器──アーキテクト 尾髙敏之さんが語る、事業目線の育て方
      8. 8
        大企業の約8割がIT人材不足を実感、5年後は「IT人材不足がさらに拡大」との予測も約6割に。ヒューマンリソシアが調査
      9. 9
        残業が0でも生産性5倍に!全社AI導入を推進するジーニー・CTOが語る次世代エンジニア像と組織のあり方とは?
      10. 10
        Google、AIアプリ開発向けPythonライブラリ「GenAI Processors」をOSSで発表
      1. 1
        Google、AIアプリ開発向けPythonライブラリ「GenAI Processors」をOSSで発表
      2. 2
        なぜあなたのWebサイトは遅いのか? mizchi氏が語るパフォーマンス改善のポイントとは
      3. 3
        「AIに代替されない」エンジニアになる3つの能力──“日報”で鍛える問題解決力
      4. 4
        総務省、21万人以上が受講した無料オンライン講座「社会人のためのデータサイエンス入門」を開講
      5. 5
        COBOLからJavaへの変換も!汎用機の移行支援サービスが提供開始
      6. 6
        103社を分類!AIエージェントのカオスマップが公開、LLMから採用支援まで網羅
      7. 7
        AWS、無料で生成AIについて学べる学習コンテンツ「AWS SimuLearn」を公式ブログで紹介
      8. 8
        GitHubは30% ソースコード管理ツールの利用状況、AI活用に影響も—―ファインディが調査結果を発表
      9. 9
        リモートからの出社強制に戸惑いの声「仕事を続けられない」なども。「働き方への不安」に関する調査実施
      10. 10
        GitHub Copilotの「Agent mode」が正式リリース、MCPはプレビュー版提供開始

      Special Contents

      AD

        キャリアインタビュー

        AD

          アクセスランキング

          1. 1
            AWS、「Amazon S3 Vectors」のプレビュー版発表NEW
          2. 2
            OpenAI、「ChatGPTエージェント」を正式発表、タスク実行・ウェブ操作が一体化
          3. 3
            ITエンジニア注目トレンドを総まとめ!週間ニュースランキングTOP10【7/11~7/17】
          4. 4
            日本CTO協会、「開発者体験ブランド力」調査に基づく上位30社のランキングを発表NEW
          5. 5
            【TypeScriptの基礎を学ぶ】JavaScriptと比較して起こりがちなミスを防ごう!
          6. 6
            品質をあらゆる面から検証せよ! シフトレフトを実現するフルスタックテスティングの全体像NEW
          7. 7
            現場と上流の往復で見つけた「構造」という武器──アーキテクト 尾髙敏之さんが語る、事業目線の育て方
          8. 8
            大企業の約8割がIT人材不足を実感、5年後は「IT人材不足がさらに拡大」との予測も約6割に。ヒューマンリソシアが調査
          9. 9
            残業が0でも生産性5倍に!全社AI導入を推進するジーニー・CTOが語る次世代エンジニア像と組織のあり方とは?
          10. 10
            Google、AIアプリ開発向けPythonライブラリ「GenAI Processors」をOSSで発表
          1. 1
            Google、AIアプリ開発向けPythonライブラリ「GenAI Processors」をOSSで発表
          2. 2
            なぜあなたのWebサイトは遅いのか? mizchi氏が語るパフォーマンス改善のポイントとは
          3. 3
            「AIに代替されない」エンジニアになる3つの能力──“日報”で鍛える問題解決力
          4. 4
            総務省、21万人以上が受講した無料オンライン講座「社会人のためのデータサイエンス入門」を開講
          5. 5
            COBOLからJavaへの変換も!汎用機の移行支援サービスが提供開始
          6. 6
            103社を分類!AIエージェントのカオスマップが公開、LLMから採用支援まで網羅
          7. 7
            AWS、無料で生成AIについて学べる学習コンテンツ「AWS SimuLearn」を公式ブログで紹介
          8. 8
            GitHubは30% ソースコード管理ツールの利用状況、AI活用に影響も—―ファインディが調査結果を発表
          9. 9
            リモートからの出社強制に戸惑いの声「仕事を続けられない」なども。「働き方への不安」に関する調査実施
          10. 10
            GitHub Copilotの「Agent mode」が正式リリース、MCPはプレビュー版提供開始

          新規会員登録無料のご案内

          • ・全ての過去記事が閲覧できます
          • ・会員限定メルマガを受信できます

          メールバックナンバー

          新着記事

          新着記事一覧を見る

          イベント


          [8]ページ先頭

          ©2009-2025 Movatter.jp