Docker-3

前回に引き続き、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での環境構築がスタートしたのでその記録を。

※ちなみに、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とは?

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

例えば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でサヨナラの意味から…

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

その通りっす!!

図解でわかるアジャイル・プロダクトマネジメント

 

図解でわかるアジャイル・プロジェクトマネジメント (SCC Books 389)

図解でわかるアジャイル・プロジェクトマネジメント (SCC Books 389)

 

 現在作業してるPJがいわゆるアジャイル的な開発をしています。

 

今までウォーターフォール的な開発しか経験したことのなかった自分は

勝手が違い過ぎてかなり戸惑ってました笑。

これはいかんな、と思いブックオフで購入した次第です笑。

 

かなり新しい本なので、

割と最新の流れを図とかを使ってわかりやすくまとめてくれています。

アジャイルイテレーション?期間も本によって2週間だったりする

みたいですが、この本では4週間を基本とする、て書いてました。)

PJ手法の種類や、アジャイルの導入~といった感じで

多岐に渡ってアジャイルについて簡潔にまとめておりとても読みやすかったです。

 

以下感想&まとめ。

アジャイルっていうのは簡単にいうと、

ウォーターフォールの進め方でいろいろ無茶苦茶だったところを

見直して(デスマーチ的な例え)、改善しよう!という流れで

うまれたものです。

一つの作業サイクル(だいたい4週間くらい)を決めて

それをPJ終了まで繰り返します(イテレーション)。

(今のPJでいうと要件定義、設計、製造、テスト、受け入れ、振り返りを

繰り返してます!)

イテレーション期間内で終わらせられる作業を基本として

バックログとよばれるやりたいことリストみたいなところから、

エピック(要件の集まり)を決めて、それをタスクに分解して取り組みます。

イテレーション内で完了できる作業がベースになるので、

休出したりすることは基本的に認められない!喜)

で、xpとかスクラム開発とかっていうのはアジャイルの中の一つ

みたいな感じらしいです。

(パンクの中にハードコアとかエモとかあるみたいない感じ?)

 

読んでて驚いた点は以下。

アジャイルで優先されるのは、

・ドキュメントよりも動くソフトウェア

らしいです。

設計書の重要度は低い、ということですね。

今まで設計書命!でそれが正だったPJばかりだったので、

そこが面食らいましたね。(必要な要件だけがまとめられていればOKみたいです。)

 

あとメンバーに求められるのは

・対面の会話

・自主性をもつように動機づけされた個人 自己組織化

 結局チームは少ない人数だし、毎日顔合わせるし

何かあったときは直接話あいましょう!と。

それはどのPJでも同じですよね。

で、指示待ち人間だったり、向上心のない人だと

うまくいかないという。

これも大事ですが、PJ全員そういう人をそろえるのは難しいですね汗。

なので、そうじゃない人をいくら増やしても

炎上PJとかでよくあるけど何も状況は変わらないという…

 

顧客と開発チームの関係

・海外では顧客側がpmで指揮をとる。なので請負という考え方はないみたい

・丸投げでは成り立たない

・失敗事例 アジャイルへの理解不足

もともと海外で生まれた文化なので、

仕様を把握してる=完成する納品物をどうしたいか、

っていうのを一番知ってるのはお客さんなんで、

お客さんが仕切るのが一番いいっすよね。

で、その逆でこういうの欲しい~って丸投げするスタイルだと

アジャイルは無理みたいですね。

やっぱり、運用コストがウォーターフォールよりかかるみたいなので

そういうのもわかったうえでやってくれるお客さんとじゃないと

成立しないみたいです。

(このあたりがかなり細かく触れられてました。)

 

あとは

・変更を抱擁する、通常手続きの中に組み込む

・変更を定常的な事象として捉える

・変更を受け入れるプロセスを日常的に続ける

仕様変更っていうのはどんなにガチガチに設計してもあとから出てくるものなんで、

だったら最初からそれありきで作業しよう、ということですね。

そのためにアジャイルがあるみたいな。

 

だらだら書きましたが、

いろいろ気づきが多かったです。

アジャイル初体験の人、興味ある人、これからやる人、PMに興味ある人

は是非一旦読んだ方がいいかなと思いました。

本にも書いてましたが、ウォーターフォールとの違いに最初は必ず戸惑う、

って書いてたので笑。

自社でやってる作業でPMごっこをさせてもらえているので

そこにも活かせるかな、と思いました。

 

ちなみに、後書きがとてもグッときたのでそこだけでも是非。

 

名著!

忘年会3

自社の課の忘年会終わりました。

そこそこ盛り上がって楽しかったですね。

 

まぁ、

這ってでもいいから、にじり寄ってゆくよな、

今日を、明日を、明後日を〜

by bacho

youtu.be

な感じで頑張ろうと思いました。

 

やっぱbachoは最高ですね。