読者です 読者をやめる 読者になる 読者になる

webアプリケーション環境構築

現在、自社の報告業務をweb化しよう、という取り組みを

やっておりましてどんな感じか書こうと思います。(ざっくりです笑)

 

■言語

javaを採用。verは1.8系でやっています。

採用理由としては、

単純に自社にjavaの技術者が多いのでなんかあった時に対応しやすい!

上記に伴って学習コストを削減できる!といったところです。

 

フレームワーク

springの4.3系を採用。

理由は、javaでwebアプリケーションやるならspringしょ!みたいな軽い理由です汗。

strutsは1.x系がEOLを迎えていたり、脆弱性があったり(最近もありましたね)

www.ipa.go.jp

まぁ新しくこれから何か始める時にstrutsは選択肢にないかな…

ていうのはありますね。

 

■DB

MySQLの5.6系にしました。

ここはあまり強い主張があって採用したわけではないんですが、

OSSで馴染みがあったのがMySQLだった、っていうだけですかね(しょーもない)。

業務系のサービスの場合にはポスグレが多いとか多くないとか聞いたことありますが、

あんまり馴染みなかったんで採用には至らず。

 

■サーバ

AWSLinuxインスタンスの一番サイズちっちゃいやつを採用。

AWSの理由は、

クラウドでサーバつったらAWSっしょ!ていうしょーもない理由もありますが

弊社で知見のある技術者がいるということもありすんなり決まりました。

インスタンスのサイズはテスト運用を実施した中で最小サイズで

全然問題なさそうだったのでそのまま一番ちっちゃいやつでやることに。

まぁ社員しか使わないので…(社員数の少なさが功を奏しました)。

 

■ソース管理、PJ管理

こちらはBitBucketを採用。

ja.atlassian.com

無料で非公開リポジトリが使えるという点で採用を決めました。

(ただし5ユーザまで)

かなりいけてると思います。さすがAtlassian!

課題やチケットはgoogleスプレッドシートで管理していたのですが、

issueも当然のごとくBitBucketは使えるので、スプレッドシートから移行予定。

 

こうやって並べて書くと、

説得力のあるものがあんまりないですね汗。

まぁ使ったことある、知見がある→スピード出るだと思うので

ど定番なチョイスばかりですが、問題はなさそうです。 

 

Docker-4

引き続き、Dockerで開発環境構築。

また眠くなる感じですがお付き合いください汗。

 

翌日起動したら謎のエラーが出たのでググって解決。

Going My Linux Way - りなっくすいろいろ


どうやら、vnc接続終了時にうまくログアウトできてないために発生していた模様。

消すのは怖いので該当ファイルをリネームで対応。

とりあえず動くようにして、javaをいれます。

 

普通にapt-getしようとすると、openjdkしかないみたいです…

oraclejdkはapp-apt-repositoryというのが必要らしく、以下でインストール

#sudo apt-get install apt-file
#sudo apt-file update
#sudo apt-file search add-apt-repository
#apt-get -y install software-properties-common

で、javaをいれる。

#add-apt-repository -y ppa:webupd8team/java
#apt-get install oracle-javaX-installer

(Xはバージョン)


でも、なんかうまくいかないんで前回の記事と同様にwgetjavaをいれる。

(ちなみに上記手順だと、環境変数の設定とかも勝手にやってくれるパッケージも

あるらしいです。)

 

続いて、eclipseをいれる。

 

デスクトップでブラウザ開いてeclipse公式に移動し、

最新のneonインストーラをダウンロード。

で圧縮ファイルを展開するも、インストーラが入ってない…

ん?ってなりwinでlinux版を落とすとちゃんとインストーラがいる。

謎すぎる。

 

色々ググると、pleiadesがあるらしいのでそれで行くことに。

#apt-get -y install pleiades

楽チンやー!と思いきやまさかのver3.8…

しかもopenjdk1.8とかも入ってきて勝手に環境変数とか書き換わります汗。

 

余談ですが、Docker上デスクトップにはrootじゃないユーザで入っております。

で、デスクトップにもコマンドラインツールがあるので

いろいろできるのですがsudo権限がないためうまくできません。

ので、以下で追加しました。

#gpasswd -a cent sudo

 

続いてtomcatは公式からダウンロードして普通に展開。

mavenは過去バージョンが欲しいためwgetで取得。

#wget https://archive.apache.org/dist/maven/maven-2/2.2.1/binaries/apache-maven-2.2.1-bin.tar.gz

vi etc/profile.d/maven.sh でパス追加。

export M2_HOME=/home/cent/work/apache-maven-2.2.1
export PATH=${M2_HOME}/bin:${PATH}

 

で、eclipseを起動しいろいろプラグインとかいれてくか、と思っていたら

UIが古いし、eclipseマーケットプレイスもないのでかなりストレスなので

やっぱあかんはとなり

もうちょい新しいeclipseを再インストールすることに。

#apt-get autoremove

上記で消すと依存関係も見つつ削除してくれます。便利。

 

eclipseのバージョンはkeplerをチョイス。

公式でダウンロードして解凍すると中にインストーラーがいた!

JAVA EEeclipseを選択)

 

インストール後、実行するも。動かない…。

javaのパスも通っているが動かない。

エラーメッセージを見ると、

eclipse置いてあるディレクトリにjdkeがない!

みたいなことを英語で言われたので

事前にインストールしたjdkの中からjreのみコピってeclipse内に移動したところ

動きました汗。

 

実行後プラグインを追加していきます。

maven,svn関連のプラグインがほしい。

m2eはすでに入っていたので、subversiveをインストール

インストールして再起動後、

SVN kit(コネクター)のインストールが促されるはずだが出ない…。

マーケットプレイスも新規ソフトウェアのインストールからも見つからず…。

 

色いろいじっていたら設定にいました。

team>svn>SVNクライアントでGet Connectorsで任意のバージョン取得します。

で、いよいよソースをチェックアウトしようと思ったら

現場のsvnサーバに繋がらない…。

コンテナ内からpingコマンドでsvnサーバのipアドレスを指定し

疎通確認をすると、unreachable…となっていました。

 

色いろ調べると、

別プロジェクトでも同様のところでつまずいていたっぽいことが判明!

どうやらdocker0というブリッジがdockerの起動時に自動的に立ち上がり、

外部とのネット接続を制御しているようです。

 

そのアドレスがsvnサーバipアドレスと被っており、

内部を探しに行ってしまっていたため接続できていない模様。

一度削除して、再度自前でを設定するとつながるらしい。

 

さらに調べるとDockerforMacになってからは、

ホストのデスクトップに常駐しているdockerアイコンからGUIで設定を行うらしい!

preferences>Daemon>Advanced

設定はJSON(というかキー:値)形式で指定するらしいです。

 

以下を設定するといいとのことで設定を追加。

fixed-cidr:"xxx.xxx.x.x/xx"

 

Dockerを再起動すると立ち上がらない…。
めっちゃ焦ってググるもそうなったらリセットするしかない、

と書かれておりました。


諸々初期化されると思いビビってたのですが、

時間ももったいないと思い思い切って

reset your daemon

結果、大丈夫でした。何事もなく再起動汗。

 

さらにググると、下記の設定をさっきバグらせたところに設定で行けるとのこと。

"bip":"xxx.xxx.x.x/xx"


参考

http://qiita.com.chroju/items/5bff99d1c2c792575d32

Cannot configure daemon's bip/bridge IP range · Issue #218 · docker/for-mac · GitHub

見事接続完了!!

 

ちなみに、SVNからのソースはホストとの共有部分に落とすことにしました。

 

理由としてはdockerの仕組み上、

差分管理でイメージを構成しているためそこに大量のファイル入れていくと

動きが遅くなるらしいので。

ホストマシンと共有フォルダを作成 

こちらもホストのデスクトップ常駐のDockerGUIから

docker>preferences>file>sharing 

より任意のホストの領域を選択。

起動時は-vオプションでマウント。

$docker run -v /Applications/Projects:/home/cent/Projects -p 5901:5901 ubuntu5.4.7:6 /root/start.sh

 

残りの課題としては、

DockerFileという形式にするとDockerさえマシンに入っていれば

ここまでの手順を自動化できるみたいなのでそこまでやるところでしょうか。

 

結局Dockerというよりはlinuxのことばかり書いてましたが汗。

かなりアクロバティックな使い方をしてしまったので、

普通の使い方をどこかでもう一度勉強したいですね笑。

 

あと、Dockerに限らずvagrant,ansibleあたりも時間見つけてやりたいですね。

 

一旦Docker日記は今回で終わりにします(予定)。

Docker-3

Docker

前回に引き続き、Dockerで開発環境構築。

GUIセットアップ編。

(かなり長いし、画像もそんなにないのできついと思いますので

おヒマな時にでも笑。)

 

docker上でデスクトップ、という運用がそもそも普通はやらないので笑、

参考文献がネット上にあまりなかったです。

で、前回LinuxtでGUIといえばubuntuだ!と思い、

docker ubuntu でググるとそれっぽい記事がいくつか出てきましたので

それを参考に進めます。

 

DockerでUbuntuデスクトップを使おう - さくらのナレッジ

まずは上記を参考に実施。

ホストのブラウザでdocker起動のサーバをデスクトップ環境で見る方法。

上記記事で指定のイメージをローカルに取得。

$docker pull dorowu/ubuntu-desktop-lxde-vnc

参考URLだと、ターミナル上でpwとか入れるけど聞かれませんでした。

PWはubuntu、でChromeから

http://localhost:6080/vnc.htmlでアクセス。

一瞬で終了!笑

Dockerではすでにいろいろな人が作ったイメージが配布されているので、

こういうのないかな、

と思ったやつはすでに誰かが作って公開していることが多いです。

ただ冷静に考えて、ブラウザで開発は無理すぎる...となり別の方法を検討。

 

続いて、以下記事を参考に。

blog.flect.co.jp


とりあえずubuntuの最新を落として起動します。

$docker pull ubuntu:latest

$docker run -it *コンテナID* /bin/bash

記事によると、デスクトップはlxdeという軽量なやつを使用し、

ホストとの接続にはtigerVNCと呼ばれるものを使用します。

今回はWinでいうところのリモートデスクトップ的な感じで

dockerコンテナに接続します。

一つ目はブラウザだったのでそこが違っております。

 

ubuntuなどのdebianディストリビューションではapt-getで取得。

yumじゃないっす)

#apt-gete update

#apt-get install lxde

#apt-get install openssh-surver

#apt-get install mozc-surver

#apt-get install uim

#apt-get install vim

vimはもろもろ編集のためにいれました。(mozc,uimは日本語入力用)

で、1度でうまくいかないので#apt-gete update、cleanを繰り返します。

lxdeが完了すると、キーボードの初期設定的なのがいきなり出てきますが

よくわからなかったのでそれっぽいものを選択しました汗。

#locale-gen en_US.UTF.8

ロケールを設定。

#wget -np https://bintray.com/artifact/download/tigervnc/stable/tigervnc-Linux-x86_64-1.4.0.tar.gz

#tar zvxf tigervnc-Linux-x86_64-1.4.0.tar.gz 

tigervncをwgetで取得します。

vncにログインするためにユーザーが必要であるため、centというユーザを作成。

#su cent

rootからcentに切り替え、

#vncserver

で初回起動。vncserverのパスワードの設定を行えるので設定。

ここで要注意ですが、パスワードは8文字らしいです。

これを知らず、適当に設定したパスワードが8文字以上で

後の工程で全然ログインできず、苦労しました。

(設定時になにもチェックがないので注意!!)

#vncserver -kill :1

vncサーバを一旦終了。

起動すると起動スクリプトが生成されるのでそちらを参考サイトにあわせて

編集しました。以下にあります。

#cd /home/xxxx/.vnc/xstartup

設定が終わったら、参考サイトにあわせてstart.shを作成します。

参考サイトのhogeは初回起動時に作成したuserに併せて書き換えます。

ロケールもja_JP.utf8に書き換え。

start.shのパーミッションも念のため誰でも実行できるように実行権限付与。

 

終わったら一旦exitで抜け、いよいよ接続。

$docker run -p 5901:5901 編集してるイメージ名 /root/start.sh

-pでポートフォワードし、末尾で先ほど作成したシェルを指定しています。

が、全然つながらない…。

どうやら、ホストのセキュリティソフトのファイヤーウォールが

邪魔をしていたようなので一旦解除。(回避方法は調査中。)

で、さらに自分は先ほどのPWの件で入れなかったので

一度/bin/bashで同じコンテナに入って以下でvncserverのPWを再設定しました。

#vncpasswd

うまくいかないときは、以下のファイルがない?かも

/usr/bin/vncpasswd

/home/cent/.vnc/passwd

tigervncはtigerviewerで見る、みたいに思っていたのでtigerviewer起動。

ip:port を指定。

なんか画面が粗い…macには標準でvncクライアントが入ってるので

以降はそっちでやります。

finder>移動>サーバに接続

vnc//ip:port

 

ログイン完了。

まだ日本語関連のものが足りなかったので、以下を実行。

#apt-get install language-pack-ja language-pack-ja-base

#export LANG=ja_JP.utf8

#export LC_ALL="ja_JP.utf8"

#update-locale LANG=ja_JP.utf8

しかし、なんかデスクトップが文字化けしている。(文字が四角形に…)

ググって以下を取得。

#apt-get upgrade

#apt-get install synaptic

home/cent/.config/ibus/busに権限がないと怒られ起動できないので、

ibus以下の権限を変更。(ibusがキーボード入力とかを制御しているらしいです。)

うまくいかず…

以下サイト参考に日本語化。

軽量Linuxを試す/wattOS R8 LXDEの日本語化 | 仙台メディアデザイン

#apt-get install ibus-mozc fonts-horai-umefont

ibusのアイコンが画面に出ないので、以下参考に対応。

LubuntuでIBusアイコンを表示する - 白烏のチラ裏

すでにインストール済みのもあったので以下2つだけ。

# apt-get install python-gconf

# apt-get install python-pexpect

ちなみに、インストール済みかの確認は以下で。

#dpkg -l | grep hoge

まだ出ない…。

 

デスクトップからibusの設定を色いろ変更してみる。

カスタムフォントを使うという項目があるので、

そこに先ほどインストールした梅フォントを設定。

さらにインプットメソッドという項目があり、

ここで切り替えのキーバインドを変更できる!

(ちなみに、使用しているMacはUS配列のため半角/全角キーがありません。)

ホストと同様のCtrl + spaceを設定しました。

すると、切り替えの表示が画面に出る!

うまくいった!と思ったらホストのみ入力が切り替わっていました…。

(ちなみに、右クリックに当たるのは二本指タップ。ホストのMacと同様。)

 

再ログイン後、文字化けが治っているのを確認!

f:id:ikeda1990ikeda:20170218000141p:plain

ただ、ダラダラと書いたものの日本語入力はいまだできず。

一旦保留。

 

ちょっと長すぎるので、javaの導入は次回!

Docker-2

Docker

前回に続きDocker。

今週半ばから現場で実際にDockerでの環境構築がスタートしたのでその記録を。

※ちなみに、linux環境設定についてほぼ素人なのでそんなんも知らんのんかい!

っていうのがあるかもしれませんがご了承ください笑

 

要件としては以下。

  • Javaの開発を行う。
  • 開発はeclipseで行う。
  • できればソースとかもDocker内で管理。
  • Macでやる。

特にコンテナのOSについては指定がなかったので、

とりあえず開発環境のサーバとOS合わせとくか的な感じでCentOSの5系をチョイス。 

Dockerではイメージと呼ばれるものからコンテナを生成して色々やります。

イメージはDockerHubと呼ばれるGitHub的なもので管理・公開されており、

Dockerが公式で公開しているものと、有志の人が自作したイメージがあります。

(searchコマンドで検索できます。)

今回は公式のものを以下コマンドでローカルに取得。

($はターミナル、#〜は起動したlinux内のコマンド)

ちなみに:のあとはタグを指定してます(バージョン的な感じ)。

$docker pull centos:5

上記コマンドでイメージをローカルに取得。

続いて以下コマンドで起動。

$docker run -it centos:5 /bin/bash

-iでターミナルからの入力をコンテナへ、

-tでコンテナの出力をターミナルへ出力することをオプションで指定。

起動後にbashが起動するように末尾に指定。

 

起動後、viやらwgetやら最初は入ってないみたいなので、

必要なものをyumでインストールしました。

ちなみに、ぽんぽんインストール出来ましたが特に外部ネットワークとの接続とか

設定はしてないです。

 

で、こまめに保存しながら進めました。

基本的にDockerはコンテナの起動を終了すると、

内部で作業した内容は全て消えます。

イメージの状態を保存するには

#exit or Ctrl+p

でコンテナを抜け、

$docker ps -a

でコンテナの起動履歴を確認します。

起動IDも表示されるので、それを確認し以下commitコマンドで保存。

起動ID 任意のイメージ名 を指定。

$sudo docker commit e69534fd0a04 ikeda/centos5

で以降はこれをこまめに繰り返します。

commit時に設定した名前で再び起動。

$docker run -i -t ikeda/centos5 /bin/bash

jdkwgetで取得。

#yum list | grep jdk

で確認するとopenjdkしか出てこず、openjdkでeclipseが動くか不安だったので

公式のものを取得。

古いバージョンのものはダウンロード時に認証が

あるため、クッキーを偽装して取得。

#wget --no-check-certificate --no-cookies - --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin

落としたやつを/usr/locale/srcに移動、ファイル名をリネームし

環境変数を設定しjavaが動くのを確認。

 

ここで、eclipseを動かすためにはGUI環境が必要なことに気づき

色々ググっているとlinux環境では割とポピュラーな

X Window Systemというのがあるらしく、中でもgnomeというのがいい感じらしので

入れてみることに。

#yum -y groupinstall "X Winodw System"
#yum -y groupinstall "GNOME Desktop Environment"
#yum -y groupinstall "Japanese Support"

最後のやつは日本語入力用のパッケージらしいです。

ちなみに、ーyはダウンロード確認の対話を省略するオプションらしい。

で、途中でNo more mirrors to try的なエラーが出るので

yum clean all して再トライするといけました。

 

で、必要なものが揃ったので下記コマンドでGUIを実行。

#startx

う、動かない…

rootで実行すると、tty0がないと怒られる。確認すると確かにない…

で、ルートユーザー以外で実行しても同様のエラーが…

調べるとlinuxにはランレベルと呼ばれるものがあり、

GUIで起動する場合には5に設定する必要があるそうな。

で設定ファイルをいじりました。

設定いじったら再起動が必要なのでrebootしてみると

さ、再起動できない…

Dokcerで動かしてるコンテナは基本的に再起動はできないらしい…

んで、さらにググるとXWinods系やらgnomeはライセンスの関係上

Docker上では動作しないらしい…

目の前が真っ暗になった…

 

で、リーダーの人に相談したら別にcentosじゃなくてもいいっす的な言われたので

linux系でデスクトップがあるといえばubuntuや!と思いubuntu

再トライをしてみることに。

 

続く笑

Docker-1

Docker

現場でDockerを使って開発環境を作ろう!というのを来月やるみたいで、

是非ヤらしてください!と立候補したものの全然勉強できてなかったので、

重い腰を上げて始めました笑。

 

Dockerとは?

いわゆる仮想化技術の一つで、コンテナ型仮想化技術と呼ばれています。

例えばVM Wareとかはハードウェアレベル仮想化と呼ばれており、

仮想化ソフトがサーバーハードウェアを再現した

仮想マシンを提供し、そこにゲストOSをいれて使用します(エミュレート)。

ハード再現やゲストOSが必要になるのでマシンのリソース使いまくりで、

性能がでにくいです。

一方、DockerはOSレベル仮想化と呼ばれる技術の一つで、

ホストOSに隔離環境をつくり、独立して各環境を実行できます。

その隔離環境をコンテナと呼びます。直接OSの上で動くため軽量です。

Dockerの動作にはLinuxカーネルが必要です。

(ちなみに、カーネルはOSの中核を担う部分のことで、

カーネル+諸々のソフト= OS

OS+もろもろのソフト=Linuxディストリビューション

みたいなイメージです笑。)

 

んで、現場ではMac上で環境作る予定なので

自宅のMacで環境作ってみようとスタート

 

買った参考書は割と新しいやつだったのですが、

そのすぐ後くらいにやり方が変わったみたいで笑、

Docker for Macでやってみます。

(参考書だとDocker Toolboxっていうのでやってました。

違いはVirtual Boxを使ってやるか、とか色々あるみたいです。

参考→Docker for Mac プライベートベータを早速使ってみた! - paiza開発日誌

 

公式でインストール!

docs.docker.com

 

そしたら、自分のMacのOSが古くて動かないと怒られたので、仕方なくアップデート。

(アプデすると古いファイルが動かなくなるとか聞いてたので、

今までビビってしてなかったのです…)

 

アプデしてぽちぽち進めていくと、鯨のマークが出てきて成功しましたー

f:id:ikeda1990ikeda:20170122210427p:plain

ターミナルで、docker run hello-worldを実行。

f:id:ikeda1990ikeda:20170122212343p:plain

とりあえずDockerが動いているのを確認。

次あたりでJava入れたりしてみようと思います!

 

続く

モバイルファーストインデックス(MFI)について

あけましておめでとうございます。

昨年末から現場の案件でやってるものがありまして、

自分の中でもよくわかってなかったところがあったので

復習もこめてまとめます。

 

近年、スマートフォン(以下SP)の普及があり

webサイトを閲覧する際にPCからよりもSPからの閲覧が増えてきています。

今後ますますSPからのサイト訪問が増えると予想されてます。

 

で、例えば検索するときにいろいろな検索エンジンがあると

思いますが、PC・SPともにシェア1位のgoogle

昨年発表した施策が標題のMobile First Index(以下MFI)です。

https://webmaster-ja.googleblog.com/2016/11/mobile-first-indexing.html

 

ざっくりまとめると、

検索結果の並び順を決める際のルールをSPのサイトをもとに

決めよう!という感じですかね笑。

今までgoogleはPC向けサイトを評価して検索結果の並び順を決めていたのですが、

近年SPからの閲覧が増えていることをふまえて上記を始めるらしいです。

 

もう少し踏み込むと、

検索一覧の並び順を決めるときは以下の流れでやっているようです。

(今更感満載ですがお付き合いください笑)

検索エンジンと呼ばれるものが

公開されている世界中のwebサイトを巡回(クロール)し、情報を集めます。

その情報を検索エンジンデータベースに設定(インデックス)します。

 

このインデックスされるというのが重要で、

適切な施策を講じないとそもそもインデックスしてくれません。

よりよい施策を行い検索一覧の上位にくれば、いろんな人がサイトに訪問する可能性が

高くなりますね!(SEO対策ってやつですね)

 

MFIについて、

具体的な開始時期は未定のようですが今年の上半期には始まる?

的な流れみたいですね。

なので、世界中のいろんなwebサイトは対応を進めていると思われます!

 

MFIに対応するために何をすればいいか?というと

いろいろあるみたいですが、おっきいところでいうと

①PC用とSP用で表示を分けている場合には、サイトの構成、内容を

なるべくあわせる(差をなくす)

→インデックスされる情報をなるべく多くするための対策だと思われます。

PCとSPだと画面の大きさも異なるためPCサイトの方が情報量が

多くなると思いますが、なるべくSPでもPCにあわせて情報を

乗せる必要が出てくると思われます。

 

②適切なマークアップ(タグ付け)

→webページを表現するhtmlはマークアップランゲージの略でもあるように、

htmlタグを使用して文章に意味を持たせていくのが本来の意図ですよね。

もともとSEO対策でも言われているようですが、

見出しタグ(<h1>~<h6>)を適切にページ内に配置すると、

いいページ!と評価してくれるみたいですね。

特に<h1>タグについてはかなり重要らしく、

検索時にキーワードで設定されそうなものを<h1>に絡めて設定しておくと

いいみたいですね。

 

ちなみにあなたのwebサイトはMFI対応できてる?は

以下URLで確認できるみたいですね!

https://search.google.com/search-console/mobile-friendly?utm_source=mft&utm_medium=redirect&utm_campaign=mft-redirect

ある程度の指標になりそうですね。

 

自分もよくわかってなかったので勉強になりました。

 

参考

http://seolaboratory.jp/other/2016080440264.php

忘年会6

前の前の現場の人と忘年会終わりましたー

 

やっぱり色々皆さん状況が変わったりして、

もちろん幸せなお知らせもありましたけど、

うおーってなりましたね。

 

その時のお客様の課長が未だに

ウチ来ないか?って誘ってくれてて、

ほんとに頑張ってよかったなー!ってエモ入りました。

 

選択肢がやっぱ色々あるとは思うんですが、

そっち選択してたらどんな人生なんだろう?って最近考えてます。

 

ではここで、乃木坂46でサヨナラの意味から…

♪サヨナラに強くなれ〜この出会いに意味がある〜♪

その通りっす!!