Slide 1

Slide 1 text

#ゆるWeb札幌 Amazon WorkspacesとZoomで
 リモートモブプログラミング環境作成 山川広人 (@gishi_yama) 1

Slide 2

Slide 2 text

#ゆるWeb札幌 2 公立千歳科学技術大学 情報システム工学科 専任講師
 R&D: Experimental Development of ICT Systems (ex: City-Bus Tacking System) 
 Computer in Education, Programming and Programmer's Learning 
 
 Communities: YAMAKAWA, Hiroto : @gishi_yama 2

Slide 3

Slide 3 text

#ゆるWeb札幌 3

Slide 4

Slide 4 text

#ゆるWeb札幌 4

Slide 5

Slide 5 text

#ゆるWeb札幌 モブプログラミングとは? 5 近所で買える日本酒(1) 青木酒造 鶴齢 純米吟醸 300ml
 久世福商店で発見。 飲み口しっかり、口に風味が華やか に広がって美味しい。
 最近の300ml瓶で一番好み。
 税込み 700〜800円ぐらい。

Slide 6

Slide 6 text

#ゆるWeb札幌 モブプログラミング(モブワーク, モビング) とは 6 マーク・パール (著)、長尾高弘(訳)、
 及部敬雄(解説):
 モブプログラミング・ベストプラクティス ? モブプログラミング: 
  複数人の質疑や議論の結果で進み、
  フロー効率の向上やチームの成長に
  寄与する ○ 難しい課題に複数人の知識、
    スキル、ノウハウを総動員し取り組める
 ○ 相互に知識・スキルを共有・継承できる
 ○ 開発と改善(レビュー・リファクタリング)
    を兼ねられる ! ひとつのプログラミング課題に、複数人のチームメンバーが、
 同じ場所で、ひとつのパソコンを使って、解決方法を議論しながら
 開発を進める手法 参考文献:

Slide 7

Slide 7 text

#ゆるWeb札幌 1. 3名以上で一カ所に集まる 2. タイピスト(1名)とモブ(そのほか)に分かれる。タイピストは、パソコンの前に座る。 3. 活動する時間と、時間内に到達を目指すゴール、タイピストの交代のタイミング(5〜15分ごと)を決める
 〈モブ〉
 ・ ディスプレイに表示される画面を全員で見ながら、
   解決すべき課題や問題点に集中し、問題解決のための方法を考え・推測・提案する
 ・ わからないことはわかるまで質問して、学ぶ
 〈タイピスト〉
 ・モブ全員の合意がとれた操作やコードの入力をする 4. タイミングがきたら、タイピストを交代する。 5. ゴールが達成できたら、みんなで喜ぶ(ハイタッチ!) 6. モブ終了の時間がきたら、次回のモブにむけてふりかえりを行う モブプログラミングの流れ 7 モブ タイピスト モブ モブ モブ モブ

Slide 8

Slide 8 text

#ゆるWeb札幌 8 難点:
 3密!!

Slide 9

Slide 9 text

#ゆるWeb札幌 (先行事例)及部敬雄, リモートモブプログラミング 9 出典: https://speakerdeck.com/takaking22/remote-mobprogramming-stay-home-with-team

Slide 10

Slide 10 text

#ゆるWeb札幌 Zoomミーティング AWS Workspaces 遠隔タイピストPC Zoomで画面共有 Workspaceクライアントで
 接続・タイピスト操作 タイピスト役 音声・カメラ
 共有 音声・カメラ共有 モブ役たち IntelliJ IDEA,
 Slack, Zoom を起動 10分程度で交代
 モブ役→タイピスト役は
  Workspacesクライアントを起動
 タイピスト役→モブ役は
 Workspacesクライアントを終了 Zoomを起動 遠隔タイピストPCの画面を
 Zoom画面共有で確認しながら
 モブ役達でディスカッションし、
 タイピストへ操作依頼 モブトレーナー
 (※慣れないうちは) 進め方の助言 10 こんな感じでいけそう?

Slide 11

Slide 11 text

#ゆるWeb札幌 Amazon Workspacesで
 仮想マシンを作成 11 近所で買える日本酒(2)
 沢の鶴 生酛造り 純米 300ml
 ホクレンショップで発見。 しっかりした味わい・香りだけど
 口に含んだ後の抜け感が良い。
 食中酒にもGood。
 お値段もワンコインで収まってうれしい。

Slide 12

Slide 12 text

#ゆるWeb札幌 Linux(Amazon Linux 2)、Windows(Server 2016 Datacenter)の仮想マシンを利用可能
 手元からは Workspace Client で接続して、リモートデスクトップとして使用する
 (PC、iPad, Android/ChromeBook, FireTablet、Webブラウザ) Amazon Workspaces 12 Directory(認証・認可情報を管理) 1ユーザーに
 1ワークスペースを
 わりあて クライアントで接続 User1 User2 User3

Slide 13

Slide 13 text

#ゆるWeb札幌 ユーザー(群)の認証・認可を管理するディレクトリサービスを選ぶ
 無ければ新規作成(初めての時など:とりあえずSimpleADのスモール無料枠で) Workspaces 準備のステップ1:ディレクトリを選択 13 組織名やドメイン名を求められるが、
 個人利用なら、まずは架空のものや
 デフォルト値などでもOK

Slide 14

Slide 14 text

#ゆるWeb札幌 Workspaceを使うユーザーをディレクトリに新規追加するか、
 すでに追加されているユーザーから選ぶ Workspaces 準備のステップ2:ディレクトリを選択 14

Slide 15

Slide 15 text

#ゆるWeb札幌 仮想マシンのバンドル:OSやスペックを選ぶ(1ユーザー1つずつ)。
 勿論バンドルによって価格は違うので、必要最低限からが良い。 Workspaces 準備のステップ3:仮想マシンのバンドルを選択する 15

Slide 16

Slide 16 text

#ゆるWeb札幌 仮想マシンの実行モードや、ストレージの暗号化の有無を選ぶ。
 短い時間の利用ならAutoStop。 Workspaces 準備のステップ4:細かい設定 16

Slide 17

Slide 17 text

#ゆるWeb札幌 ※ここまで30分ぐらいで
  完了できる 
 メールでは、 ディレクトリを指定する
 登録コード 割当て仮想マシンの
 ログイン名 が送られてくる。 (パスワード, メアドは
  ステップ2で指定済み)
   Workspaces 準備のステップ5:メールが来る 17

Slide 18

Slide 18 text

#ゆるWeb札幌 登録コード でディレクトリを特定し、ログイン名/パスワード で割当の仮想マシンにログイン
 ※ブラウザ版もあるが、操作感やレスポンスからアプリ版の方が良い Workspaces Client からログイン 18

Slide 19

Slide 19 text

#ゆるWeb札幌 ログイン完了(linuxの例) 19

Slide 20

Slide 20 text

#ゆるWeb札幌 仮想マシンを
 タイピスト端末にして利用する 20 近所で買える日本酒?(3) 高砂酒造 国士無双 梅酒
 イオンのお酒コーナーで発見。
 
 日本酒「国士無双」を使った梅酒。
 甘みとキレのバランスがとても良い。
 冷やしてストレートでも楽しめます。 箱なし版(税込1,400ぐらい)が
 安くてオススメです。

Slide 21

Slide 21 text

#ゆるWeb札幌 • JDK(Amazon Linux 2 ならAmazon Correto 11でいいかも)
  ⇒ 最新のJavaを使いたいならSDKMAN!いれてお好きなディストリビューションで • JetBrains IntelliJ IDEA
  ⇒ 言わずと知れた神IDE。学生も無料で使える神IDE。
  ⇒ プラグインとして:
  Mob Programming Timer(https://plugins.jetbrains.com/plugin/13585-mob-programming-timer/) 
  ⇒ 他は開発に必要なものをお好みで
 ※VSCodeにしなかった理由は後述 • Slack
  ⇒ 主にタイピスト端末への情報送り込み用途 • Zoom
  ⇒ 画面共有用、コンピュータオーディオには参加させない(ハウリング防止) とりあえずJavaを想定した開発環境をインストール(※linux編) 21

Slide 22

Slide 22 text

#ゆるWeb札幌 タイピストPCからZoomで画面共有される画面のイメージ 22 Mob Programming timer Plugin 分かりづらい指示やファイルはSlackで US/JPキーボード切り替え 調べものも
 タイピストPC上で 基本はIDEの画面を表示

Slide 23

Slide 23 text

#ゆるWeb札幌 モブプログラミングのメンバー間でID/パスワードを共有して、
 自分の番が来たらクライアントでタイピストPCのWorkspaceに接続する タイピストの切り替え(クライアントの接続が後勝ちな事を利用) 23 直前までのタイピスト役 次のタイピスト役 × 後からのログインが、
 既存のログインセッションをカットして そのまま移り変わる 席を替わるような気軽さで、タイピスト役を
 さくさく交代できる(慣れてくると数十秒)

Slide 24

Slide 24 text

#ゆるWeb札幌 ほぼ同様の環境での実演イメージ
  ※Slackや調べ物をうまくやっている例は入ってないです
  ※タイマーは、プラグインを導入前の違うツールを使ってます
 「JavaDoオンラインモブプログラミング試行(1分半で流れの解説)」 https://youtu.be/of0RjNjr8tA モブの実演中のイメージ 24

Slide 25

Slide 25 text

#ゆるWeb札幌 実践してみて出てきたTips 25 近所で買える日本酒(4):レア
 
 清水清三郎商店 「作」 恵乃智
 ごく一部のツルハドラッグで発見。 香りも味もふくよか、それでいてすっきり。
 日本酒こだわる系の居酒屋にも
 割とある、ある意味定番処。
 冷やしたのを用意して、手のひらの熱で
 少しずつ変わる印象を楽しむのもよし。
 
 4合瓶だしちょっとお高い(2,000円台)。

Slide 26

Slide 26 text

#ゆるWeb札幌 実行モードはいつまでAutoStop(時間単位課金)にする? ⇒ 最小設定で切断後、1時間経つと自動的にWorkspaceはスリープする
   さらに、Workspace Clientを起動してログインすれば自動起動する
   始めようと思ったタイミングで誰でも起動できる ⇒ 散発的なモブであれば、時間単位課金で十分(?)
   ネットで調べると、80時間ぐらいが時間単位・月額固定の判断点 
 よっしゃ!モブをやりたいチームの数だけ環境作ったろ! ⇒ デフォルト設定だと、仮想マシンは2台までしか作れない
   共用するなら終了時のお掃除ルールなどを決めておかないと、次のチームが萎える ⇒ フォームから制限緩和リクエストを申請する必要あり
 https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase
 &limitType=service-code-workspaces AWS Workspacesの使い方 26

Slide 27

Slide 27 text

#ゆるWeb札幌 事例発表すると「なんでZoomの画面共有?VSCodeのLiveShareは?」という質問が毎回くる
 ⇒ 普段の開発環境を大きく変えたくなかった(現状、IntelliJ IDEAで統一)
 ⇒ LiveShareだと機能的すぎて「うまくハマらない」事例がある by @kappe1982 さん調べ
    https://www.remotemobprogramming.org/ より
 
 
 
 
 
 かといって、リモートだとタイピストへの指示が伝わりにくいときもある
 (ジェスチャーや指さしなどで指示していたことが抜けた事の大きさ)
 ⇒ モブ側から、Zoomの画面コメント機能で 図形やマークを書き込むようにした
     伝わらない!そこじゃない!というストレスは大分軽減した ツールの使い方 27 We tried collaboration IDEs. Surprisingly, this led to worse collaboration. 
 Impatient members of the rest of the mob circumvent both, the discussion and the typist,
 by just hacking their ideas. せっかちな一部のモブが,自分達のアイディアで(画面を)
  ハックして、議論やタイピストを避けてしまう なんだかんだ言って、Zoomの画面共有は優秀...

Slide 28

Slide 28 text

#ゆるWeb札幌 価格も大きく変わらないし、開発環境が作れればぶっちゃけどっちでもよい...が、
 以下のような点から今回はLinuxにした
 (※些細な点なので、Linuxが絶対良い、ということはない) 1. USキーボードとJPキーボードユーザーの混在
 ⇒入力機器の違いが円滑なタイピスト操作の大きなハードルになる
 ⇒キーボードの切り替えが、Windowsだとめんどくさそう(だと思ってた)
  LinuxだとIBUSで設定できる(が、IBUS自体が...って事はある...)
 ⇒後日、Windowsも言語設定から割と楽に設定できることを知る 2. ターミナル&パッケージングツール
 ⇒ Bash vs PowerShell (WSLもWorkspaces使えるのかな?まだ試してない)
 ⇒ Yum vs Chocolatey, 他
 ⇒モブメンバーの熟れ感で選んだ タイピスト端末、Windowsで使うか、Linuxで使うか 28

Slide 29

Slide 29 text

#ゆるWeb札幌 (多分)Linux版Zoomがちょっとトラブルことがある
 ⇒ クライアントを切り替えると画面共有のサイズも替わる(再度共有で解決)
 ⇒ 画面共有をすると画面に謎の暗転フィルタがかかる(再々度共有で解決)
 ⇒ IDEの一部のダイアログやウィンドウが共有されてこない
 (今○○やってます!と声で解決) (多分)突然IBUSが応答不能になる   ⇒ ローカル PCで書いた文章をWorkspaces経由でコピペする (多分)Workspaces クライアントのポートが空いてないと辛い
   ⇒ ポート 443 (TCP)
   ⇒ ポート 4172 (UDP と TCP)
   ※駄目な場合はVPNで回避?(未検証)
     画面共有のバグとか仕様を踏むと辛い(現状解決できてない問題点) 29 キーボード問題解決したので
 もうWindowsでいいかな...
 という気持ち そもそもAWSよわよわ人材なのでちゃんと試せてない

Slide 30

Slide 30 text

#ゆるWeb札幌 おしまい 30 近所で買える日本酒(5):レア 旭酒造 獺祭 お試し3本セット 180ml×3
 まれにコープさっぽろで発見。 磨き45, 39, 23が一本ずつ入ってる。
 大きい獺祭一本より、このセットの方が
 個人的には満足度高い。
 日本酒入門の人もオススメ。
 
 ちょっとお高い(3,000円前後)。
 大型連休の前にコープさっぽろ行くと
 なんか売ってる確率高い気がする。