Javaビルド製品(Maven)を調べた!

Javaビルド製品(Maven)について調べたのでお伝えします。

MAVEN について

Mavenは、JAVAのビルド製品になります。プロジェクトをひとつのコマンドで利用できるなんて良いですよね。 インストール方法はあとで纏めるとして、基本的なことを記載します。

ビルドとコンパイルの違いは?

コンパイル

人間がプログラミング言語を用いて作成したソフトウェアの設計図(ソースコード)を、コンピュータ上で実行可能な形式 (オブジェクトコード)に変換すること。 そのためのソフトウェアをコンパイラという。 変換のみを一括して行い、生成したオブジェクトコードの実行は行わない。

ビルド  

ソースコードコンパイルやライブラリのリンクなどを行い、最終的な実行可能ファイルを作成すること。 また、そのような作業によって生成されたソフトウェアの版。

Mavenとは

Maven」とは、Javaプログラムをビルドするためのツール。

さまざまなプラグインを組み込むことによりソフトウェアテストツール、ソフトウェア保守ツール、ソフトウェア品質ツールの機能なども追加することが可能。

リモートリポジトリとローカルリポジトリの違いは?

プラグインやライブラリが置かれる場所です。 必要なプラグインやライブラリをリモートリポジトリからダウンロードし、それをローカルリポジトリに保存する仕様です。

下記は、Mavenアーキテクチャを表したものです。

桜

また、プロジェクトのライフサイクルに含まれるコンパイルやテストなどの各作業をコマンド一つで行うことができます

実現可能なこと


・ライブラリの一元管理 ・プロジェクト情報の配信 ・ビルドプロセスの提供(ソフトウェア構成管理) ・jUnitを使用した単体テストソフトウェアテスト) ・サイト生成機能を用いたプロジェクト情報の共有(ソフトウェア保守) ・FindBugsを使用したバグパターン検知(ソフトウェア品質)


大きな特徴

pom.xmlのタグにプロジェクトで使用したいJARライブラリ名及びバージョンを指定することで、外部サイトで集中管理されているJARを自動ダウンロードし、ローカルでビルドに使用が可能。

POMについて


pom.xmlはプロジェクトに関する情報を持つファイルです Project Object Modelの略です。


JARファイルとは

Javaのファイルを1つにまとめたファイル。 コンパイルされた複数のJavaバイトコード及びそれが使用する画像などのリソースを一つにまとめZIP形式で圧縮されたファイル、及びそれを出力するツール

JARファイルは、圧縮したままで、Javaの実行環境で動かすことができます。 zipファイル同様、圧縮・解凍ソフトで解凍できます。

その他のJAVAのビルド製品

Ant

Apache Software FoundationによってApache Software Licenseで提供されるオープンソースツール

よく利用するコマンド

プロジェクト作成

mvn -B archetype:generate \

プロジェクト作成

mvn -B archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DgroupId=com.myapp \ -DartifactId=myapp

プロジェクト検証

mvn validate

コンパイル

mvn compile

コンパイル時はpom.xmlには、情報を追記

テストの実行

Junitテストクラスの実行

mvn test

パッケージ生成

mvn package JAR、WAR等の成果物を生成する。 packageを実行すればvaliate、compile、test、packageのフェーズも実行される

インストール

JARをローカルリポジトリにインストールする。

mvn install

YAMLの基礎知識を理解していますか?

YAMLの構文がわからないかたは、ansibleは覚えるのに苦戦します。

ぜひ、ansibleを勉強するまえにはYAMLを覚えたほうがよいです。

ansible の参考書では YAMLの由来はあるのですが、書き方についてはあまり説明がないのです。知識があることは既に前提となっています。

基本

ansible の設定ファイルは YAML なのです 被管理ホストの作業手順書はプレイブックと言ます。 YAMLの構文を理解する必要あります。

また、Pythonが必要となります。 YAMLファイルとPythonを繋ぐライブラリはAnsibleを利用します。 YAMLAWSではおなじみなJSONに似た、データ定義のためのフォーマットです。

参考URL:Ansibleのための YAML入門 https://dev.classmethod.jp/server-side/ansible/getting-start-yaml-for-ansible/

基本書式

YAMLとは構造化されたデータを表現するための規格で、「シーケンス」「マッピング」という2つのデータ構造を使います。

シーケンス

YAMLでは行頭に「-」をつけることで配列を表現します。 「-」のあとの空白は必須です。これは忘れてはいけません。

YAMLでは、文字列をダブルクォート(")やシングルクォート(')で囲む必要は ありません。

  • d1
  • d2
  • d3 (結果) ['d1', 'd2', 'd3']

リスト

リストは複数のデータを格納するデータ構造です。 プログラミング言語でも同様にリストや配列などと言われます

何度も言いますが、ハイフンの後に半角スペースが必須です。

  • name: "Suzuka Nakamoto" metal_name: "SU-METAL"
  • name: "Yui Mizuno" metal_name: "YUI-METAL"
  • name: "kikuchi moa" metal_name: "MOA-METAL"

YAMLではインデントの位置によりデータ構造が決まります。

重要 原則として、インデントは2文字の半角スペースで記述してください。

変数

Ansibleでは変数を扱う機能があり、Playbookの一部を変数で置き換えます。

  • name: "check {{ wp_path }}/wp-config.php' if exist" stat: path: "{{ wp_path }}/wp-config.php" register: stat_wp_config

重要 利用する場合、{{と}}で変数名を記述してください。 この時、必ずダブルクォートで全体を囲む必要があります

Ansibleでは

Ansibleでは、タスク定義でよく使われるフォーマットでしょう。

  • name: apache24 installed yum: name: httpd24
  • name: httpd service started service: name: httpd state: started enabled: yes


最初のタスクでは、httpdyumでインストールする。 次のタスクでは、httpdをスタートする。

ansibleのプレイブックの構造

  • hosts: all become: yes become_user: root tasks:
    • user: name=piyo
    • copy: src=/home/foo/bar.txt dest=/home/piyo/


プレイブックは、2箇所に分けられる。


・接続設定を行う箇所

  • hosts: all インベントリファイルに記述したホスト名、グループ名を指定 become: yes プレイブックのモジュールをsudoで実行するように指定 become_user: root 実行するユーザーを指定

※:複数のホストを指定したい場合は、コロンで区切ることで複数のホストを指定可能です。

・実行モジュールを定義する箇所


tasks: - user: name=piyo ユーザー追加を行うuserモジュール - copy: src=/home/foo/bar.txt dest=/home/piyo/  管理ホストから被管理ホストへのファイルコピーを行うcopy


まとめ

ansibleではこのほかにリファレンスを読むなどして、理解をする必要があります。 次回に続きます。

Selenideを検証してみた!!

Selenide


Selenideとは

SelenideはSelenum WebDriverをラップしたブラウザテストの自動化フレームワークのこと。

エストニアにあるCodeborne社のAndrei Solntsev氏を中心に開発が行われているWebDriverのJavaラッパーの一つで、同じJavaで実装されたFluentLeniumやGroovyでのGebに相当するものです。

SeleniumはUIテストのためのツールではなく、ブラウザ操作のためのツールである。 それとは別でSelenideは初めからUIテストのために設計されたものである。

開発環境

OS:CentOS Linux release 7.4.1708 (Core)
JAVA(Junit):"1.8.0_151"
chromedrive:2.3
Crome:62.0.3202.89

ビルド製品であるMavenのインストール

Mavenとは?

「Maven」とは、Javaプログラムをビルドするためのツールです。
C言語を触ったことがある人は、makeのようなものと言えばイメージがしやすいかと思います。

似たようなツールに、AntやGradleなどありますが、使い方とかが違うだけで、本質的には同じです。
コンパイルの前後に依存するライブラリを自動で揃えたり、XMLさえ書けば、いろんなことがビルドと一緒にできるツールです。

Mavenは何が便利?

使いたいライブラリを個別に集めなくてもいい。
使いたいライブラリに関連する別のライブラリも集めなくていいい。  
他の開発者にわざわざライブラリを渡さなくてもいい。
ライブラリのバージョンが上がっても、バージョン番号をいじるだけ。
ライブラリの元のソースコードもMavenがダウンロードしてくれる。
Jenkinsを使っていたら、jenkinsはMavenとの連携は簡単。
ダウンロードされたライブラリはローカルディスクのライブラ置き場で保管され、必要に応じて使われる。
Eclipseのビルドパスに勝手に追加してくれる。共同開発者も含めてビルドパス管理不要になる。
複数のプロジェクトのライブラリの種類やバージョンを1箇所で管理できたりもする。

(参考)
2. Maven 入門
[インストール方法](http://wiki.fdiary.net/maven2/?CookBook=#l7

CentOS 7にMavenをインストールする

(参照URL) Mavenをインストールする 方法

まず、MavenにはJDKが必要になるので、以下のコマンドでOracle JDKをインストールする。

#yum install -y wget
#wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"
#http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
#rpm -ihv jdk-8u131-linux-x64.rpm

次に、以下のコマンドでMavenのインストールを行う。

#cd /opt
#sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
#sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
#sudo yum install -y apache-maven
#mvn --version

実際にMavenを利用するユーザでPATHを通しておく

vi  ~/.bash_profile

MavenJAVAプロジェクトの操作を行う

#mvn archetype:generate -DgroupId=org.selenide.examples -DartifactId=google-test
#cd google-test/

mvnコマンドから Java を実行できる便利なexec-maven-pluginをプラグインします。

初回は関係するライブラリのインストールなどもあり、少し時間がかかります。

mvn packeage

targetフォルダ配下に jarファイルやクラスファイルも確認できますね。

pom.xmlファイルの編集が必要

pom.xmlとは? mavenのプロジェクト定義ファイル。    mvnコマンドから Java を実行できる便利なプラグインexec-maven-pluginします。

  <modelVersion>4.0.0</modelVersion>

  <groupId>org.selenide.example</groupId>
  <artifactId>google-test</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>google-test</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <font color="Red">**変更**</font>4.11
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

プロジェクト実行

mvn archetype:generate -DgroupId=org.selenide.examples -DartifactId=google-test

実行すると、いろいろファイルが作られる 単体テストで利用するのは、 AppTest.javaである。

$tree .
.
└── my-app
    ├── pom.xml
    └── src
        ├── main
        │   └── java
        │       └── com
        │           └── mycompany
        │               └── app
        │                   └── App.java
        └── test
            └── java
                └── com
                    └── mycompany
                        └── app
                            └── AppTest.java

実行

ここではエラーがでなくればとりあえず問題なし。

mvn test

ユニットテスト単体テスト)との準備

デフォルトでは、以下のパターンにマッチするファイルがテストとして実行されます。
/Test*.java
/Test.java
**/
TestCase.java
また、以下のファイルはデフォルトで除外されます:
/Abstract*Test.java
/AbstractTestCase.java
**/
$*
先ほど作成したプロジェクトには、常に成功するユニットテスト(src/test/com/example/AppTest.java) が含まれているので、 それが実行されます。

JUnitが推奨される理由

一度作成すればすばやくテスト可能である。
その後はテストコードを標本とすることでバグ訂正が容易となる。
テストコードを見れば仕様が一目瞭然となる。
誰でも同じテストを行えるようになる。
独自のテストコードによるテスト作成の手間を省ける。

仮想ディスプレイのインストール  

Xvfb インストール  bash:Xvfbインストール

yum install xorg-x11-server-Xvfb

bash:Xvfbサービス作成

vim /usr/lib/systemd/system/Xvfb.service

bash:/usr/lib/systemd/system/Xvfb.service

[Unit]
Description=Virtual Framebuffer X server for X Version 11

[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/Xvfb
ExecStart=/usr/bin/Xvfb $OPTION
ExecReload=/bin/kill -HUP ${MAINPID}

[Install]
WantedBy=multi-user.target

bash:Xvfb環境変数設定ファイル作成

vim /etc/sysconfig/Xvfb

`bash:/etc/sysconfig/Xvfb

# Xvfb Enviroment File
OPTION=":1 -screen 0 1366x768x24"

bash:Xvfbサービス起動

systemctl enable Xvfb
systemctl start Xvfb

Cromeのインストール

bash:Chromeリポジトリファイル作成

vim /etc/yum.repos.d/yum.repos.d

bash:/etc/yum.repos.d/yum.repos.d

[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

bash:google-chrome-stableインストール

yum install google-chrome-stable

日本語表示のために bash:日本語フォントインストール

yum install ipa-pgothic-fonts.noarch

ChromeDriver - WebDriver for Chrome : Downloads から適切なドライバーをダウンロード。今回はバージョン2.29。 bash:ChromeDriverインストール

wget http://chromedriver.storage.googleapis.com/2.29/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
mv chromedriver /usr/local/bin
rm chromedriver_linux64.zip

AppTest.java単体テストスクリプトを設置

package org.selenide.example;


import static com.codeborne.selenide.Condition.*;
import static com.codeborne.selenide.Selenide.*;
import static com.codeborne.selenide.CollectionCondition.size;
import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Selenide.open;
import org.junit.Test;
import org.junit.BeforeClass;
import org.openqa.selenium.By;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.WebDriverRunner;
/**
 * Unit test for simple App.
 */
public class AppTest
{

@BeforeClass
public static void ClassTest() {
Configuration.browser = WebDriverRunner.CHROME;
System.setProperty("webdriver.chrome.driver", "/usr/local/bin//chromedriver");
}

 @Test
    public void selenideTest() throws Exception {
    open("http://www.google.co.jp/");
}
}

実行

mvn Test

動きました。


## まとめ

・GoogleCromeではヘッドレスモードが動作することができるが、Selenaideでは動作ができなかったことが
課題である。
・FireFoxでもヘッドレスモードに対応したとのことなので、こちらも検証をしてみたい。

忘れてしまいがちなSWAP領域/AWSのEC2で作成方法

オンプレスサーバでは当たり前に設定したことが、AWSでは設定されていない なんてことがあります。

SWAP領域の作成なんて忘れてしまうのではないでしょうか。物理メモリ容量の不足を補う仮想メモリとして利用されています。

SWAP領域がない

EC2のnanoやmicro、smallといった小さいインスタンスを使っていると、 swap領域がないため、メモリを多く必要とする処理では失敗することがあります。

スワップアウトが頻繁に発生すると、処理速度が遅くなるため、設定が必要になります

SWAP領域の目安

作成するswap領域は、物理メモリが2GB以上ある場合には物理メモリと同じ容量で作成し、 2GB以下の場合は物理メモリの2倍程度の容量を作成すると良いです。

SWAP領域の設定方法

2Gのswap領域を追加する流れとなります。

まず、swap領域のフォルダを作成します。

sudo mkdir /swap

2GBのファイル「swap」を作成

dd if=/dev/zero of=/swap/swapfile1 bs=1M count=2048 dd if=/dev/zero of=/swap/swapfile2 bs=1M count=2048

権限を600に変更します。

sudo chmod 600 /swap/swapfile1 sudo chmod 600 /swap/swapfile2

mkswapコマンドでファイルをswapファイル化します。

sudo mkswap /swap/swapfile1 sudo mkswap /swap/swapfile2

swaponコマンドでswapファイルをシステムのswap領域として有効にします。

sudo swapon /swap/swapfile1 sudo swapon /swap/swapfile2

fstabファイルをバックアップしましょう

sudo cp -ip /etc/fstab /etc/fstab.20170816

fstabにswap領域の設定を追記します。

sudo sh -c "echo '/swap/swapfile1 swap swap defaults 0 0' >> /etc/fstab" sudo sh -c "echo '/swap/swapfile2 swap swap defaults 0 0' >> /etc/fstab"

SWAP領域ができていることを確認してください。

sudo grep Mem /proc/meminfo sudo grep Swap /proc/meminfo cat /proc/swaps

まとめ

そのほかでもクラウドならではの設定がありますので、随時アップしていく予定です。

自動UIツールを比較!!

UIテスト自動化導入

1.UIテスト自動化導入のメリット・デメリット


1.メリット

・作業時間の軽減。
・キャプチャ・リプレイ機能があるので、エビデンスの偽造・加工ができないし、面倒でもない。
・サイトを追加機能した場合に、別のサイトが動かなくなることも発見できる。
・ブラウザのバージョンアップでサイトが動かなくなることがあっても、短時間で発見ができる。
・毎回ポチポチと画面テストするのは工数的にもモチベーションにもよくないし、他の作業が出来る。
・「正確さ」と「単調さ」は人間よりも機械が向いてる。

2.デメリット

・テスクスクリプトをしっかりと複数人で作らないと、属人化する恐れがある。
・機能が追加/変更されていくにつれ、テストケースも増えたり変わったり不要になるので、メンテナンスも実は大変。
JAVAの知識が必要。

自動化システム導入は、苦労を伴うが、リターンが大きいこと違いない!

2.UIテスト自動化製品について


1.共通事項

 ・複数言語に対応(JavaC#PythonRubyJavaScript(Node.js))
 ・複数Webブラウザに対応(ChromeFirefoxInternet ExplorerMicrosoft EdgeOperaAndroid標準Webブラウザ、iPhone)
 ・複数のOSに対応

2. Sleniumとは


 ・Seleniumはツールの集合体。単体のツールで無く、Selenium WebDriver、Selenium Server、Selenium IDESelenium RCとある。
 ・バージョンは最新の3で最新である。 Selenium WebDriverの知識だけでよい
 ・情報量が多い。

3. Selenideとは


 ・ Selenium WebDriver のラップラップしたブラウザテストの自動化フレームワーク

 ・初めからUIテストのために設計されていて、簡単にテストスクリプトを書いて実行

 ・Ajaxのテストが簡単らしい

 ・情報量はまだまだ少ない。

4.検証環境(Windows)

ブラウザは全てCromeで実施。


1.Selenium
・OS:Winodws 7
・開発環境: Eclipse
Python :3.5.1
JAVA:“1.8.0_151”"
・chromedrive:2.3
・Crome:62.0.3202.89

2. Selenide
・OS:Winodws 7
・開発環境: Eclipse
JAVA:"1.8.0_151“"
JUNIT
・Crome:62.0.3202.89

5.検証環境(Linux


1.Selenium

・OS:CentOS Linux release 7.4.1708 (Core)
Python :3.5.1  ・JAVA:”1.8.0_151”
・言語:JUNIT
・chromedrive:2.3
・Crome:62.0.3202.89
Selenium:3
・仮想ディスプレイ:Xvfb(仮想ディスプレイ)+ヘッドレスモード(Crome)

2.Selenide

・OS:CentOS Linux release 7.4.1708 (Core)i  ・JAVA:“1.8.0_151”"
・言語:JUNIT
・chromedrive:2.3 ・Crome:62.0.3202.8
Selenium:3
・仮想ディスプレイ:Xvfb(仮想ディスプレイ)
・ヘッドレスモード(Crome)は動作できず。今後の課題!

6.製品の比較(SleniumとSlenaide)


1.情報量: Slenium > Selenide

・まだまだ、歴史があるSleniumに比べると、Selenideは情報が少ない

2.環境構築の工数:Slenium> Selenide

・情報量の多さで、Sleniumのほうが難易度は低い。
・Selenideは、情報量が少なくPytonが利用できない。JAVAの知識(JUNITコンパイル・ビルド製品なども)
→ Pyton版とSlenaideも出てきているらしい(検証はしていない)
Javaに慣れた人なら、問題はない。

3.操作性: Selenide > Slenium

・ブラウザの閉じ方とか、タイムアウトとか、扱い方などを考える必要はなく、ソースの作成が難しくない。

4.拡張性: Selenide > Slenium

・初めからUIテストのために設計されていて、UIテストを「スラスラ」書いて実行できます。

7.所感


1.ブラウザについて

・ブラウザのデフォルトは、FireFoxであるが、主流はCromeになっていくと思われる。
・ドライバを変えることで、トラブルをそれぞれ抱えている。複数のブラウザが利用できるのが特徴ではあるが、統一したほうがよいと思う。
・ブラウザの進化のスピードとても早く、WebDriveのバージョンアップが随時適切に必要。ブラウザの仕様変更で動作しなくなることもある。
・今後はブラウザを構築している団体が、ドライバをメンテナンスすることになるので、トラブルは減るかも。

2.ソフトウェアについて

・ Slenaideを選定したい。
情報量は少ないが、テストスクリプト作成の難易度は低く、スラスラ動く。Pytonも使えるようになりそう。

Selenium IDEGUIで操作できるため、利用ユーザも多いので便利だと思ったが、ブラウザの進化にいてけず、今は利用できない。
その他のIDE製品も出ているが、突然利用できなくなる可能性があるのが欠点。

・VIでJAVAのテストスクリプトのメンテナンスをすると、テストスクリプト作成に時間とトラブル対応に時間がかかるかも。
フリーのEclipseやPyCharmの統合開発環境を用意したほうが、保守性が高く、修正時間も短い。

3.その他

・単純にツールだけあればいいということではない。設計段階でテスト業務にきっちり組み込ませる必要がある。
・テストスクリプトの作成にそれなりに時間がかかる。テストを実行するのにコストがどれだけかかるかを 検討するのが何より必要。手動で実施したものがよいものもある。
・案件毎でテスト設計を組み込まないと、ツールの導入だけのとなり、継続的に利用ができない。
必要に応じた自分たちに合った手法を考えなければいけない。また、運用のノウハウは時間をかけて作るしかない。

AWSでNATインスタンスを作成する方法

NATインスタンスの作成方法を作ってみましょう。

まず、NATの必要性は何でしょう。

NATの必要性

・インターネットから接続される必要のないインスタンスについて、 インターネットからの接続を遮断しつつ、自身はインターネット接続 を出来るようにする ・外部から接続される危険性を減らすこと

実装したいこと

EIP(グローバルアドレス)』を持たないため、通常はインターネット通信が不可能。

インターネットへの通信要件として、下記である。 ①AWS標準NTPサーバに対しての時刻同期通信 ②パッケージのセキュリティアップデート

パブリックサブネットにNATインスタンスを構築し、NATインスタンスを中継したインターネットへの通信を可能とする。

NATインスタンス構成

①プライベートサブネットの各サーバは、NATインスタンスを中継しインターネットへの通信を行う。 インターネットとは『Outバウンド』の通信のみ可能。『Inバウンド』の通信は不可能。

②パブリックサブネットのNATインスタンスは、EIP(グローバルIP)を保持させインターネットと直接通信を行う。インターネットとは『Inバウンド』、『Outバウンド』通信ともに可能。

NATインスタンスの選択

・NATインスタンスは、AWSが提供する『 Amazon Linux AMI 』を利用する。 ・NATインスタンスの『 Amazon Linux AMI 』は、EC2作成時にコミュニティAMIから文字列 "amzn-ami-vpc-nat" で検索する。  >ルートデバイスタイプ:ebs  >仮想化タイプ:hvm

NATインスタンスの仕様

(1)IPv4 転送が有効となる。 (2)ICMP リダイレクトが /etc/sysctl.d/10-nat-settings.conf で無効とする (3)/usr/sbin/configure-pat.sh にあるスクリプトが起動時に実行され、iptables IP マスカレードが設定される。

NATインスタンスの送信元/送信先チェックの『無効化』

EC2インスタンスは、『送信元/送信先チェック』(※)をデフォルトで実行する。 NATインスタンスはパケットの送信元IPアドレスや宛先IPアドレスを書き換えるため、『送信元/送信先チェック』を『無効』にする。

(※)パケットを受け取るには、そのインスタンスが送受信するトラフィックの送信元、または、送信先である」という条件が課せられている。  この条件を「送信元、送信先チェック」と言う

1 AWS マネジメントコンソール にIAMアカウントでサインイン

2 AWS マネジメントコンソールの右上隅で、[Tokyo]リージョンを選択する

3 Amazon EC2 コンソールを開く

4 ナビゲーションペインで、[EC2] を選択する

5 [インスタンスの作成] を選択する。

6 [ステップ 1: Amazon マシンイメージ (AMI)] ページで、コミュニティAMIからNATサーバAMIを選択する。

7 [ステップ 2: インスタンスタイプの選択] ページで、作成するインスタンスタイプを選択し、[次の手順:インスタンスの詳細の設定]を押下する。

項目 設定
インスタンス [1] を入力
購入のオプション 購入のオプション
ネットワーク VPCを選択
サブネット 『サブネット』を入力
自動割り当てパブリック IP be
IAM ロール 『なし』を選択
削除保護の有効化 チェックを入れる
モニタリング チェックを入れない

8.[ステップ 4: ストレージの追加] ページで、作成するインスタンスタイプを選択、入力し、[次の手順:タグの追加]を押下する。

項目 設定
サイズ(GB) [任意にを入力
ボリュームタイプ 任意に入力
合わせて削除 チェックを入れる

9.[ステップ 5: タグの追加] ページで、タグを作成し、[次の手順:セキュリティグループの設定]を押下する。

10.[ステップ 5: タグの追加] ページで、タグを作成し、[次の手順:セキュリティグループの設定]を押下する。

項目 設定
タグ 追加なし

11.[ステップ 6: セキュリティグループの設定] ページで、セキュリティグループを作成し、[確認と作成]を押下する。

セキュリティグループの割り当て 新しいセキュリティグループを作成する』を選択
セキュリティグループ名 任意
説明 任意
セキュリティグループのルール 任意

12.[インスタンス作成の確認] ページで、確認を行い[作成]を押下する。

13.作成を押下する。

Pandocにトライしてみましょう。

最近資料を作る場合は、WordやEXCELでするのが面倒でMarkdown形式のgitbookでPDFやHTML化をすることが多いです。

Markdownは慣れてしまえば、間単に書くことができ、議事録や仕様書を作成するにはもってこいです。

Markdownの書き方は下記を参考にしてください。

http://yoshilover.com/?p=74

Pandocとは

Pandocは異なる形式のドキュメントやマークアップ言語を変換することができるツールです。

gitbookは、MARKDOWNからPDFやHTMLへの一方方向へしか変換できませんでしたが、Pandocを 用いれば双方向が可能となります。

特徴

対応フォーマットが非常に多いです。

入力形式

markdown ・reStructuredText ・textile ・HTML ・DocBook ・LaTeXMediaWiki markup ・TWiki markup ・OPMLEmacs Org-Mode ・Txt2Tags ・Microsoft Word docx ・EPUBHaddock markup

出力形式

XHTMLHTML5 ・HTML slide shows using Slidy ・reveal.js ・Slideous ・S5 ・DZSlides ・Microsoft Word docx ・OpenOffice/LibreOffice ODT ・OpenDocument XMLEPUB version 2 or 3 ・FictionBook2 ・DocBook ・GNU TexInfo ・Groff man pages ・Haddock markup ・InDesign ICML ・OPMLLaTeX ・ConTeXt ・LaTeX Beamer slides ・PDF ・Markdown (including CommonMark) ・reStructuredText ・AsciiDoc ・MediaWiki markup ・DokuWiki markup ・Emacs Org-Mode ・Textile

pandocのインストール

rpmパッケージがあるので、yumで簡単にインストールできます。

yum install pandoc

操作はとても簡単です。

マークダウンからワードに変換する場合

pandoc README-JP.md -o README-JP.docx pandoc -f markdown -t html hoge.md

以下のようにも書けます

pandoc --from markdown -to html hoge.md

これで変換された文章がコマンドラインに表示されることになります。 標準出力なのでパイプ等で他のコマンドに引き渡しが可能です。

また標準出力ではなく、ファイルに保存したい場合は以下のように書けば良いです。

pandoc -f markdown -to html -o hoge.html hoge.md

-oは–outputオプションの短縮形で、出力先ファイルを指定するものです。変換したhtmlはhoge.htmlに保存されることになります。

まとめ

もうエクセルやワードが時代遅れになりつつあります。 Markdownを覚え、だめなおじさんにはならないようにしましょう。