mochikoAsTechのdig日記

当方好きなコマンドはdigです!お友達から!!よろしくお願いします!!!

Dockerを使ってRe:VIEWで本が書きたい!~ステップ2:TechBoosterのテンプレートで原稿リポジトリを作ろう~

これは何をやりたい人向けのエントリ?

前提

「ステップ2:TechBoosterのテンプレートで原稿リポジトリを作ろう」の手順

1. 自分の原稿リポジトリを作ろう

TechBoosterのRe:VIEWテンプレートからリポジトリを作る

  • https://github.com/TechBooster/ReVIEW-TemplateUse this template をクリックする f:id:mochikoAsTech:20190804225804p:plain
  • Repository name に好きなリポジトリ名(自分が書く本のタイトルとか)を入れて Create repository from template をクリックする
    • 公開リポジトリでよければPublic、非公開にしたければPrivateを選ぶ
    • 無料プランでもPrivateは使えるけど、共同編集者が3人までなどの制限があるので、色んな人にレビューを頼むときは有料プランにするかPublicの方がいいかも f:id:mochikoAsTech:20190804230413p:plain
  • 自分の原稿リポジトリができた!ときゃっきゃっよろこぶ

脆弱性のアラートが出ていたら対応する

  • もし「脆弱性あるぞ」と表示されていたら See security alert をクリック f:id:mochikoAsTech:20190804230822p:plain
  • 対象のセキュリティアラート( lodash )を選んで、Create automated security fix をクリック f:id:mochikoAsTech:20190804231231p:plain f:id:mochikoAsTech:20190804231248p:plain
  • Generating an automated security fix と表示されたらそのまま少し待つ f:id:mochikoAsTech:20190804231514p:plain
  • 10分くらいでPull requestが生まれるので確認してマージする f:id:mochikoAsTech:20190804233211p:plain f:id:mochikoAsTech:20190804233318p:plain

Descriptionを書いておく

2. 原稿リポジトリをパソコンにクローンしてこよう

リポジトリのURLをコピーしておく

SourceTreeで原稿リポジトリをクローンする

3. 先ずはREADMEを直してプッシュしてみよう

原稿を書くエディタはVisual Studio Codeがお勧め

README.mdを直そう

  • 先ずはVisual Studio CodeC:\Users\%USERPROFILE%\Documents\原稿リポジトリ名 の直下にある README.md を開いて、中身を直しましょう
    • 私だったら C:\Users\mochikoAsTech\Documents\startDNS\README.md f:id:mochikoAsTech:20190805123932p:plain
  • こんな感じで今から書く原稿の説明にしておきます f:id:mochikoAsTech:20190805124439p:plain

変更したREADME.mdをプッシュしよう

  • README.mdを修正したらSourceTreeでコミット&プッシュしましょう
    • 原稿を複数名で書くならブランチを切ってプルリクを出して…というルールにしてもいいですが、一人で書くならmasterブランチに直接コミットでよいと思います f:id:mochikoAsTech:20190805124605p:plain
  • コミット?プッシュ??ブランチ???という人はわかばちゃんと学ぶ Git使い方入門を読もう

READMEが更新されたことをブラウザで確認

原稿リポジトリができた!

WindowsのSourceTreeでGitHubからソースを取ってくるときは改行の自動処理に注意!

これは誰に向けたどんな内容のエントリ?

  • WindowsのSourceTreeを使ってGitのソースを管理する人のためのエントリ
    • 具体的に言うと技術書典に向けてRe:VIEWで本を書くぞー!原稿はGitHubで管理するぞー!という人に見て欲しい
    • 落とし穴があるのでSourcetreeのインストール前に伝えておきたい

前提

  • OSがWindowsであること
  • GitのクライアントソフトはSourcetreeを使うつもりであること

伝えたいこと

  • Sourcetreeをインストールする際、改行の自動処理を設定する にはチェックを入れないこと f:id:mochikoAsTech:20190804183558p:plain

チェックを入れてしまうとどうなるか?

  • autocrlftrue になって、GitHubからソースをclone(=まるごと取ってきた)してきた際にソースの改行コードが全部 LF から CRLF になります
    • Windows内でDockerを動かしてあれこれするとき、DockerイメージがLinuxだと、ソースの改行コードが CRLF になっていることでつまづくのです

既にインストール済みのSourceTreeでautocrlfがtrueになっていないか確認するには?

  • Sourcetreeのターミナルを開いて git config --global --get core.autocrlf を叩いて確認してみよう
    • true なら autocrlf が有効になっているのでアウト、falseinputならセーフです。

どうすればautoctlfの設定を変更できる?

  • Sourcetreeのターミナルを開き、次のようにgit config をたたいて false もしくは input にすればOKです。
    • false にするとgit cloneする時も、git pushする時も何もしません(改行コードを勝手に変換しない)
    • input にするとgit cloneする時は何もせず、git pushする時だけ crlflf にしてくれます
      • ローカルで新たに作ったファイルも、git pushする時には改行コードを lf に統一しておこうと思ったら input の方がよいでしょう
git config --global core.autocrlf false
または
git config --global core.autocrlf input
  • あるいは直接 C:\Users\%USERPROFILE%\.gitconfig というGitの設定ファイルを書き換えてもOKです。
    • エクスプローラーで C:\Users\%USERPROFILE%\ を開くと、たとえばユーザ名が mochikoAsTech なら C:\Users\mochikoAsTech\ が表示されます
[core]
        autocrlf = input

EC2インスタンスに紐付いたIPアドレスはOSを再起動したら変わるか?

AWSEC2インスタンスに紐付くIPアドレスが変わるタイミングについて、ちょっと勘違いして覚えてたので備忘録としてメモ。

EC2インスタンスIPアドレスについて

プライベート IPv4 アドレスは、インスタンスが停止して再起動するとネットワークインターフェイスに関連付けられたままになり、インスタンスが終了すると解放されます。
インスタンスのパブリック IP アドレスが停止または終了すると、インスタンスのパブリック IP アドレスが解放されます。停止していたインスタンスが再起動されると、そのインスタンスには新しいパブリック IP アドレスが送信されます。

ということなので、まとめると以下の通り。

プライベートIPv4アドレスは

  • reboot →変わらない
  • shutdownの後、マネジメントコンソールから起動 →変わらない
  • shutdownの後、インスタンスを削除(terminate)して新しく作り直す →変わる

パブリックIPv4アドレスは

  • reboot →変わらない
  • shutdownの後、マネジメントコンソールから起動 →変わる
  • shutdownの後、インスタンスを削除(terminate)して新しく作り直す →変わる

どっちもshutdownして起動しなおしたら変わるものだと思い込んでたー。

Dockerを使ってRe:VIEWで本が書きたい!~ステップ1:Docker for Windowsを入れよう~

これは何をやりたい人向けのエントリ?

  • 次をすべて満たす人向けのエントリです
    • 技術書典に向けてRe:VIEWで本が書きたい!
    • Dockerを使えば手軽に環境作れるらしいと聞いたので手順が知りたい!
    • 私はWindowsユーザだ!
      • Macは「Dockerの入れ方?・・・ふつーに入れたら入るでしょ?」くらいラクだと聞いたので、ここでは解説しないよ!

前提

  • パソコンのOSがWindows 10 Pro 64bitであること
    • Windows 10 Homeだと、Docker for Windowsを動かすために必要なHyper-Vが使えないので、このエントリで説明する方法は使えないのです
    • Windows 10 Homeの皆さんはWSL(Windows Subsystem for Linux)を使えばDocker使えるようになるので、ここでは解説しないけどそっちの方法で頑張ってください。ごめんね。

自分のWindowsがProかHomeか分からなかったら?

  • タスクバーで「バージョン」を検索して「32ビットと64ビットのどちらのバージョンのWindowsかを確かめる」を開く f:id:mochikoAsTech:20190613231901p:plain

  • バージョン情報の下の方にある「Windowsの仕様」の「エディション」に書いてあります f:id:mochikoAsTech:20190613232114p:plain

「ステップ1:Windows for Dockerを入れよう」の手順

1. Hyper-Vを有効化する

  • タスクバーで「Windowsの機能」を検索して、「Windowsの機能の有効化または無効化」を開く f:id:mochikoAsTech:20190613231511p:plain

  • Hyper-V」にチェックを入れてOK

    • Hyper-V」にチェックを入れると、その下は自動的にチェックが入る f:id:mochikoAsTech:20190613231706p:plain
    • 変更の適用に少し時間がかかる
    • 変更完了したらそのままパソコンを再起動

2. Docker for Windowsをダウンロード

Docker Desktop for Windows is the Community Edition (CE) of Docker for Microsoft Windows.
To download Docker Desktop for Windows, head to Docker Hub.
  • 意訳すると 「Docker Desktop for Windows」は「Docker for Microsoft Windows」のコミュニティエディションだよ。Docker Hubからダウンロードしてね という感じ
  • という訳で言われたとおり素直にDocker Hubからダウンロードする
    • https://hub.docker.com/editions/community/docker-ce-desktop-windows
      • ちなみにダウンロードするには、事前にDocker IDを作ってDocker Hubにログインしておく必要があるよ
      • 未ログインの人は「Please Login To Download」をクリックする f:id:mochikoAsTech:20190613232732p:plain
      • Docker IDには大文字使えないので要注意(mochikoAsTechだとだめでmochikoastechにするしかなかった)
  • ログインしたら「Get Docker」を押してダウンロードしよう f:id:mochikoAsTech:20190613232900p:plain
  • 「Docker for Windows Installer.exe」を落とせたら完了

3. Docker for Windowsをインストール

  • ダウンロードしてきた「Docker for Windows Installer.exe」を実行
    • 「Use Windows containers instead of Linux containers(Linuxコンテナの代わりにWindowsコンテナを使う)」にはチェック不要
    • 「Installation succeeded」と表示されたら完了
      • ボタンを押すと自動でWindowsからログアウトされるので、再びログイン

4. Docker for Windowsを試してみよう

> docker -v
Docker version 18.09.2, build 6247962

f:id:mochikoAsTech:20190613233132p:plain

5. Docker for Windowsの起動確認

  • インストール後はWindows起動時にDocker for Windowsも一緒に起動してくるので、特に何もしなくても起動しているはず
  • タスクバーにDocker for Windowsのアイコンがいて、カーソルを載せると Docker Desktop is Running と表示されたらOK f:id:mochikoAsTech:20190613233709p:plain

6. Shared Drivesの設定

  • タスクバーからDocker for Windowsのアイコンを右クリックしてSettingsを開く f:id:mochikoAsTech:20190613234552p:plain
  • SettingsにあるShared Drivesで「C」(Cドライブのこと)をSharedにしておく f:id:mochikoAsTech:20190613235302p:plain
  • ドライブを共有しておかないと、今後原稿が入っているWindowsのフォルダを、ゲストのDockerコンテナで読み込もうとしたときに失敗してしまうので共有しておきます

注意点

  • もし今後、Shared Drivesをオンにしたのに「Windowsのフォルダをコンテナにマウントできない!」もしくは「マウントしても中身が空だった!」ということがあったら、カスペルスキーなどセキュリティソフトのファイアウォールで止められている可能性を疑いましょう
  • VirtualBoxやVargrantを使うときにはHyper-Vを無効化する必要があるため、これらはDocker for Windowsと同時には使えません

Docker for Windowsが入った!

オミカレに入社して1ヶ月が経ちました!

あなただれ?

@mochikoAsTech です。もちこさんと呼ばれることが多いです。インフラエンジニアをしています。

DNSをはじめよう」や「AWSをはじめよう」、「技術をつたえるテクニック」、「技術同人誌を書いたあなたへ」などの本を書いて技術書典で頒布したりしています。

どこからどこに転職したの?

なんで前の会社を辞めたの?

会社の資本が変わった関係で段々と不自由に感じる点が増えてきたので「世の中には色んな会社があるし、他の会社も見てみようかな!」と転職活動はじめますエントリを書いてみました。

そしてお声がけくださったあちこちの会社さんへ遊びに行ったところ「どこもたーのしー!」となったので、「次が決まろうが決まるまいが辞めよう。よっしゃ、辞めよう!」と年末で職を辞して、しばらくニート生活を送っていました。

note.mu

オミカレ入社の経緯

転職活動はじめますエントリを見たそーだいさんからTwitterでDMが届いたので、「DBでなんか困って検索すると出てくるブログの人だー!」とランチがてらオフィスへ遊びに行きました。

その後、再びランチをしたり、うちに遊びに来てもらったりして、5月からオミカレ入社となりました!

オミカレに決めた理由は?

  • 早々にオファーシートを提示してくれて、かつこちらの状況を汲んで急かさず待っていてくれた姿勢を誠実だなと感じたこと
  • 仕事の話でも仕事以外の話でもそーだいさんの「大丈夫ですよ!」で謎の安心感が生まれて「安定感あっていい人だなー」「この人と働きたいなー」と思ったこと
  • 私の得意なこと、苦手なこと、今は出来ないけど出来るようになりたいと思ってることなどを正直に明かした上で一緒に働きたいと言ってもらえたこと

などが理由です。

あとは結婚されている人、お子さんのいる人も割と多い職場だったので、その辺りの感覚を全部説明しなくても、ある程度認識が共有できるのもありがたいなーと思いました。

入社してみてどうだった?

入社して約1ヶ月経ちましたが、こんな感じで楽しくやっています。

Slackに各自の分報チャンネルがあったり、朝会で日々会社の状況が把握できたり、1on1してたりで色んな意味で社内の見通し・風通しがいいなと感じています。

これは単に会社が小規模であることが理由ではなく、風通しよくあろうと考えて打っている対策がそれぞれ功を奏しているんだなと思います。

小回りよく、でもしっかりと

少人数なこともあって面倒な社内申請や手続きは排除されており、たとえば必要な本などは社内Slackの #payment というチャンネルにURLを貼るとすぐ購入してもらえます。

その一方、リクルートで人事部長をしていた西村さんが社長ということもあって、就業規則や福利厚生は驚くくらいきちんとしています。

椅子やパソコン、モニタは好きなものを

そーだいさんのツイートにもありましたが、エンジニアとして「ありがたい!」と思う福利厚生がばっちりです。

  • 椅子は好きなものが選べる
  • パソコンも好きなものが選べる
    • 「選択肢の中から好きなもの」ではなく、本当に自分が好きなパソコンにできる
    • 「金額に上限は…」と切り出されたので「○○円以下で」と言われるのかと思いきや、「金額に上限はないんですけど、スペックは最低でもSSDの512GB以上、メモリは16GB以上にしてください」とまさかの下限を指定される
  • モニタはダブルでもトリプルでも
    • ほとんどの人がトリプルモニタ
    • 「特にこだわりないです」と言ったら4Kモニタが用意されてた
  • デスク広くて好きなもの飾れる
  • IDEはJetBrainsのライセンス支給でPhpStormやPyCharmが使える
  • ウォーターサーバーデロンギの挽き立てコーヒー、炭酸水はご自由に
  • オフィスは高円寺なので周囲に安くておいしいランチがいっぱい

一方でスタートアップにありがちな「よく分からないところに金をかける」みたいなところはありません。ダーツが置いてあるバーカウンターとか、無駄におしゃれなエントランスとかもないです。その分、しっかり給料に還元されてるなと感じます。

みんなほんとに仕事早くて驚く

現在はオミカレのサイトリニューアルに向けて絶賛開発中なのですが、定期的に「割れ窓デー」が開催されて、「後で直そうと思ってそのままになってたチケット」がガーーーっと片付けられていきます。みんな仕事早くてびびる。

あとは話の方向性を見失ってしまったり、議論はしたものの結論がはっきりしないままになってしまいそうなときに、きちんと軌道修正して短時間で話を着地させられるメンバーが多いので、地味なストレスがなくていい感じです。

直近だとこんなニュースも!

ただみんなが「デキる」分、そこまでドキュメントは整備されていなかったり、そーだいさんがシュバババっと解決したことを後から詳しく共有はしていなかったりするので、その辺りが私の役立てるポイントかなーと思っているところです。

オミカレよいとこ、一度はおいで

私自身、今まで全然使ってなかった技術に囲まれて、日々「わかんない!」とバタバタしていますが、「わかんない」が言える心理的安全性はがっつりあります。

オープンマインドな場所で働きたいな、自分でどんどん考えて役に立ちたいな、という人には向いていると思います。

という訳で…オミカレよいとこ、一度はおいで!

エンジニアは勿論、デザイナーもマーケも積極的に募集中です。そーだいさんもちこさんや、オミカレの仲間たちと一緒に働きたいなーという方はぜひDMお待ちしてます。高円寺でランチしましょー♪

Terraformを0.12にしたらterraform initが通らなくなった話

こんなことで困った

Terraformの 0.11 で動いてた main.tf を使って、0.12の環境で terraform init 流したら、モジュールのアドレス(pathのこと)が解決(resolv)出来ないようっておこらりた。

Error: Module not found

The module address "neko/kawaii" could not be resolved.

If you intended this as a path relative to the current module, use "./neko/kawaii" instead.
The "./" prefix indicates that the address is a relative filesystem path.

エラーメッセージをざっくり訳すと「モジュールのアドレスだけど、 今居るところからの相対パス を意図して書いてるんだったら、 neko/kawaii じゃなくて ./ つけた ./neko/kawaii って書いてね」って言われてる模様。

こうやって解決した

なのでエラーメッセージの言うとおり、モジュールの source = "neko/kawaii"source = "./neko/kawaii" にしたら 0.12 でも terraform init が通るようになったー。

Windows10でTerraformをインストールする方法

試した環境

インストール手順

>terraform version
Terraform v0.12.0

古いバージョンをインストールしたいときは?