PhpStorm で Update Project 時に Merge するか Rebase するか

以下の説明は、PhpStorm に限らず、JetBrains の IDE なら同様のはずです。

PhpStorm で Git プロジェクトを扱っていると、リモートの変更を取得するために、Update Project ボタンを押しますよね。以下のように、Merge incoming changes into the current branchRebase the current branch on top of incoming changes のどちらかを選択しなければなりませんが、意味を知った上で選んでいますか?

Update Project

CLI から Git を使わず、IDE からのみ Git を操作していると、Rebase を知らない人もいるかもしれません。そういった初心者向けに説明します。

前提

コミットログが以下のような状態になっているとします。

ローカル master で一つコミット(一番上)したタイミングです。origin/master からはコミット一つ分進んでいます。

変更を Push する前に、Update Project したい。しかし実は、別の開発者が一つコミットをリモートに Push 済みだったとします。

Update Project 時に Merge ... を選んだ場合

Update Project 時に Merge ... を選んで OK を押しました。コミットツリーは以下のようになります。

Merge

別開発者が行ったリモートのコミットが最後にマージされ、マージコミットが作成されています。

Update Project 時に Rebase ... を選んだ場合

Update Project 時に Rebase ... を選んで OK を押しました。コミットツリーは以下のようになります。

Rebase

自分が最後に行ったコミットが一番後ろに付け足される形になりました。この時、マージコミットは作成されません。Rebase の方がコミットログがシンプルになることが分かると思います。

Merge と Rebase どちらを選ぶか?

コミットログのシンプルさが保たれるのは Rebase です。基本的に Rebase を選んでいいと思っています。

ただ、上記で説明した違いについては知っておくべきです。何か起こった時に対処するには、コミットログから過去を正確に知る必要があります。また、Git 自体の理解も重要です。全ての Git 操作を PhpStorm 上から行うことはできません。特にこの記事に書いてあることを知らなかった方は git rebase コマンドについて知らないことが多いかと思われます。よく使うことになるはずですので、是非調べてみてください。

アップロードするファイルの事前チェックと、Chrome+Android+GoogleDrive の問題

こんにちは。福岡です。

ファイルをアップロードする時、制限されているファイルをアップロードしようとするのはシステムとして負荷もかかるので、できる限り「正しく」使って欲しいところです。一方で、「正しい」とはどんな条件をいうのかユーザが必ずしも認識できていないことはあり得るし、細かく注意書きを書けば書くほど読まれなくなります。そこで、Javascriptを使ってアップロードする前にファイルを検査する方法を探っています。

これは、今日では Javascript から Fie API を使って簡単にできるようになっています。制限サイズを超えていないか、拡張子のレベルで形式が合っているか、くらいはすぐにできます。

例えば以下の資料があります。
https://developer.mozilla.org/ja/docs/Web/API/File/Using_files_from_web_applications

WebClassでも、レポートファイルのアップロードでこれらを使ったチェックをやろうと思ったのがv11.8.2でした。が、問題が見つかって急遽キャンセルしたのがv11.8.2−2でした。

ほとんどの環境で動作していたのですが、Chrome + Android の環境で、Google Drive のファイルを指定してアップロードしようとする際に問題がありました。なぜか、アップロード前にJavascriptでファイルのチェックをすると、アップロードができなくなってしまいます。最近は学生もクラウドドライブ経由でレポート提出することも多いので、余計な混乱の元になりそうだったために元に戻してあります。

この問題は Chromium に報告してあり、現在、再現可能な問題として認識され、より詳細な調査をしよう、というステータスです。

https://bugs.chromium.org/p/chromium/issues/detail?id=1102021

早く治るといいなぁ。

Cisco Webex Meeting

こんにちは。福岡です。

遠隔会議ツールの Cisco Webex Meeting を少し試したので報告です。

Zoom.us はこちら。
https://webclass.jp/blog/2020/04/07/zoom-us-教育機関アカウントとのlti連携/

Cisco Webex

Cisco のコミュニケーションツールのシリーズが Webex です。いくつかラインナップがあります。

https://www.webex.com/ja/index.html

小さなチームでの会議であれば Webex Teams が向きます。無償版では3人までのテレビ会議参加に加えてファイル共有ができます。有償版では200名まで対応できます。

一方、よりたくさんの参加者で会議できるのが Webex Meetings です。Webex Meetings は無償で100人まで、有償だと1000人まで参加できます。

さらに大規模になる場合は Webex Events があり3000人までいけますが、授業用途ではここまでは必要ないでしょう。

Cisco Webex Meeting

こちらからアカウント登録できます。

https://www.webex.com/ja/video-conferencing.html

無料でアカウントを作ることができますが、アカウントが必要なのは会議の開催です。会議を視聴しにくるゲストは、必ずしもアカウントは必要ありません。ソフトをインストールし、その都度名前とメールアドレスを入力してゲスト参加することができます。

3月末のころはアカウント申請が集中したのに対して発行処理が追いついていない感じでしたが、4月7日に発行申請したところ、すんなり発行できました。

また、COVID-19対応として、90日間無償のプランもあるようです。

https://blog.webex.com/video-conferencing/cisco-webex-supporting-customers-during-this-unprecedented-time/

会議の開始

個人アカウントが発行されると、そのアカウントに対応するURLがもらえます。このURLは自分のアカウントの会議室を開くためのURLになります。このURLを、きて欲しい人に案内することで人を集めることができます。

私のURLをブラウザで開くと、次のような画面になりました。

もしアプリがインストールされていなければ、ここでダウンロードしてインストールできます。また、アカウントを持っていなくても、ゲスト参加ができます。

LTI 連携について

Webex Meeting も LTI 1.1 に対応しているようです。

https://apphub.webex.com/meetings/applications/cisco-webex-education-connector-for-learning-management-systems

他のLMSとの連携方法は以下の資料があります。

https://help.webex.com/en-us/n77zrcq/Control-Hub-Site-Administration-Install-the-Cisco-Webex-Education-Connector-in-Your-Learning-Management-System

ですが、Webex Meeting については全く実験できていません。個人アカウントでは試せそうなところがないです。

Ref

Transition to virtual learning
https://www.webex.com/webexremoteedu.html

Cisco Webex Education Connector for Learning Management System - Cisco Webex App Hub
https://apphub.webex.com/meetings/applications/cisco-webex-education-connector-for-learning-management-systems

Controll Hub Site Administration - Webex Help Center
https://help.webex.com/en-us/n77zrcq/Control-Hub-Site-Administration-Install-the-Cisco-Webex-Education-Connector-in-Your-Learning-Management-System

How to Start Your First Live Stream on Webex Events
https://www.linkedin.com/pulse/how-start-your-first-live-stream-webex-events-joshua-reola

Zoom.us 教育機関アカウントとのLTI連携

ZoomのLMS機能について、以前個人アカウントでのWebClassとの連携について調べました。

https://webclass.jp/blog/2020/03/18/lti-integration-with-zoom-us/

今回、教育機関アカウントを使ってWebClassとのLTI連携したケースについて東京薬科大学様より報告をいただきましたので、共有いたします。

検証の手順

教育機関のライセンスについて

今、教育機関に向けてZoom.us では制限を解除しているようです。これは「マナトメプログラム」といいます。ただし、こちらの大学では契約に至るまでがけっこう時間がかかったそうで、契約対応件数が多いなど今の事情もあるかもしれません。

教育アカウントとして契約して、その管理者の配下でユーザを「基本」権限と「Licensed」権限のユーザを振り分けて利用します。「基本」権限だと個人契約と同じ利用制限で、「Licensed」権限だと制限が外れるとの理解です。グループ分けができますので、こちらでは学部等でグループを作成し、それぞれ代表者と設定して管理する予定です。

WebClassにLTI Keyの登録

Zoom.us から LTI 連携キーを発行してWebClassに登録する流れは基本的に事前の報告内容と同じです。契約アカウントより LTI キーを1つ発行して登録しました。

Zoom Marketplace LTI Pro
https://marketplace.zoom.us/apps/f8JUB3eeQv2lXsjKq5B2FA

・システム管理者として、「システム管理」>「LTIツール設定」を登録(基本は初期設定のまま)ツールの表示ON コース管理者によるURL設定OFF

コースでZoom.usに接続する教材の追加

・コース管理者Aが、「教材」>「LTIツール」で教材「Zoom接続テスト」を作成
  送信制限: 氏名OFF メールアドレスOFF (メールアドレスの送信は必須です)
・「Zoom接続テスト」で「Schedule a New Meeting」で会議を作成、その詳細を設定(基本は初期設定のまま)>「SAVE」
  Topic名:WebClass運用マニュアル(→コース名が入る)
  Registration OFF Video OFF Audio BOTH
  require meeting password ON Enable Waiting room ON

※ アカデミックで契約すると、管理者は機関メールアドレスをもつユーザに「基本」か「Licensed」の権限を与えることができますが今回の検証では「Licensed」のユーザで試しました。

教材を作成いただくと、このように1教材としてコースの教材一覧に加わります。

教材の実行

用意した教材を開くと、Zoom.us が提供する画面を表示できます。先生も学生も同じような画面ですが、先生の場合は会議を作成・編集するボタン等が追加で表示されます。

この画面では、コースに紐づいて複数のミーティングを作成できます。授業回ごとに作成するなどできます。

上記のように、会議の作成画面では日時もスケジュールできます。

検証によりわかったこと

会議の作成者ができる先生について

DP 社内で個人アカウントでLTIキーを生成して実験したときは、キーを生成したZoomアカウントのメールアドレスを持った先生でないと、会議の作成ができませんでした。しかし今回確認いただいたように、教育アカウントでLTIキーを登録していると、Licensed に設定されているアカウントの先生であれば先生の単位でLTIキーの発行などをしなくてもこうして会議の作成ができるようです。

コースに複数の先生がいるとき

コース管理者が複数いる場合いずれのコース管理者も会議を作成することができます。基本的には会議のホストは作成者のみであり、会議のStartとDeleteができるのも作成者のみです。作成の段階で他のコース管理者をAlternativeホストに指定することもできますが、AlternativeホストはStartの権限しかなく設定を変えたりDeleteすることはできないようです。またAlternativeホストには招待メールが送られます。(検証を通してその他のメールが送られることはありませんでした。)

先ほどの検証コースでは、それぞれの先生方は以下のようになります。

・WebClassコース管理者Aは「Start」「Delete」、ユーザーは「Join」が表示される。
・教材作成者が指定したメールアドレスをもつユーザBは「Start]のみが表示される。
・教材作成者が指定しなかったコース管理者Cでは「Join」のみが表示される。

複数の会議を作りたい場合

Zoomの管理者画面では教材名ではなくTopic名がリストされます。コース内にLTI教材を複数作っても意味がなく、同じミーティングリストが表示されるため、コース内でアクセスする学生を制限したい場合には別途URLを記載した教材を作る必要がありそうです。

課題

WebClassから会議に参加する際に、もともと別人のアカウントでZoomにログインしていた場合そちらの設定で会議に参加してしまうようです。この不具合はログアウトしてブラウザを再起動すれば解決されましたが、参加履歴を出席代わりにしたい時には問題になる可能性があります。

また、あるマシンでWindows10/IEで試したところ401エラーが出てZoomを開けませんでした。Edgeではアクセスできたのですが原因は不明です。

LTI integration with Zoom.us

こんにちは。福岡です

コロナウイルスの対応のため、日本の大学でも4月の授業スタートについて検討が進められていると思います。もし学生を集めて授業ができなくなったとき、遠隔の授業で対応できないか検討されているところもあると思います。

ここではテレビ会議等のためのサービスをWebClassと連携させて使う方法として、まずは Zoom.us Meeting について今調べてわかっていることを書きます。

ここ数年の間にノートパソコンやスマホでテレビ会議をすることも多くなりました。少人数での会議だけでなく、3月の国内の学会ではこのようなテレビ会議を利用して数十人で実施したケースもあったようです。テレビ会議ソフトはツールとして比較的手軽に使えるようになっているだけでなく、「あとで見直せるように動画で保存しなきゃ」と構えることなく会議だけして保存せずに終了するあたり、気持ちの上でも楽だと思います。

ほかに Cisco Webex Meetings などもありますが、調査が進み次第投稿します。

Zoom.us Meeting

License
https://zoom.nissho-ele.co.jp/lineup/zoom_meeting/

Zooms for Education
https://zoom.us/education

Basic(無料)プランでは配信時間40分の制限と参加人数100人の制限があります。今は4/30までのあいだ、教育機関向けに制限を開放しているようです。

ここでは、急ぎ調査した都合上、教育機関アカウントではなく個人のアカウントで Basicプランで試してみました。設定操作方法の基本的なところは同じと思いますが、実際に教育機関でアカウント取得して設定される際には、差異があると思います。

連携せずに使う

先生と学生がそれぞれ個人のZoomアカウントを持っていれば、先生が会議をホストし、案内用のURLをWebClassのコースで学生に伝えることで会議できます。

例えば講義回ごとに資料教材として会議URLを案内すると、整理もできると思います。
もしくは、教材が多い場合は「タイムライン」を使っていただくと、今見て欲しい教材・URLが学生に伝わりやすいと思います。

WebClass上では出席機能や、その他資料を配布する機能、掲示板等があります。説明をZoomでしつつ、これらWebClassのコーツツールで補ってもらうことができると思います。

LMS との連携

Zoom.usのLMS連携機能を使うとどういうことができるかを調べています。

Zooms.us で LTI Key の発行

Zoom.us は LTI に対応しています。LTI連携を使用するには、Zoomsの Web でサインインし、マーケットプレイスからLTIモジュールを有効化します。

マーケットプレイス
https://marketplace.zoom.us

マーケットプレイス - LTI pro
https://marketplace.zoom.us/apps/f8JUB3eeQv2lXsjKq5B2FA

LTI pro の画面右上に「Pre-approve」というチェックボックスがあります。これをONにするとインストールボタンを押せるようになります。

「Manage」タブの「Configuration」セクションで「Configure」ボタンを押すと、現在設定しているアカウントに対してLTIで接続するための LTI Key を管理する画面が表示されます。

「+Create a new credential」ボタンを押してキーを生成すると、以下の3つの値が生成されます。

  • LTI URL
  • OAuth Redirect URL
  • LTI Key
  • LTI Secret

WebClass に LTI Key の登録

WebClass は LTI 1.1 に対応しています。LTI 連携オプションが有効になっていると、WebClass のシステム管理者のメニュー「システム管理」の中に「LTIツール設定」があります。

この画面を開きて、先ほど確認した Zooms.us のLTI キーを追加します。

  • ツール名:Zooms.us LTI pro
  • ツールURL :LTI URL
  • コンシューマ鍵:LTI Key
  • 秘密鍵:LTI Secret

コースで Zoom.us に接続する教材の追加

コース管理者でログインします。教材作成の画面を開くと、「LTIツール」という項目があります。

LTIツールを選び、教材作成画面で「利用可能ツール」からZoomを選択します。

この教材を保存して開くと、教材を開いた画面の中でZoomの会議一覧画面が表示されます。

「Schedule a New Meeting」ボタンで会議を追加します。また、会議を作成すると案内用のURLも取得できます。

このURLを控えておき、例えばコースのタイムラインに書き込んでおくと良いと思います。

学生がこの教材を開くと、ミーティングの作成はできませんが、用意してあるミーティングに参加することができます。

学生がZoomを開く

WebClass上に用意したZoom連携教材を学生が開くと、Web画面経由でZoomのアプリケーションが開きます。実際に参加するためには、学生がアプリをインストールしてアカウントを持っている必要があります。

この様子は、こちらの動画で確認できます。
https://www.youtube.com/watch?v=vFhAEoCF7jg&list=PLKpRxBfeD1kEM_I1lId3N_Xl77fKDzSXe&index=23

調査段階での不明事項

ここでは個人のBasicアカウントでLTI連携設定をしましたので、LTI連携教材を作成する時、LTIキーを生成したメールアドレスが設定された教員ユーザでなければ、Zoomsの会議一覧画面を開くことができません。簡易の検証のため、教員ユーザになる複数のZoomsアカウントでそれぞれLTIキーを生成し、個別にシステム管理者画面で設定しました。

ただし、学生はメールアドレスの設定がなかったとしても、Zoomsの会議の一覧を開いて、会議に参加しようとするところまで進めます。

組織アカウントや教育アカウントで設定したときの細かな違いはまだ検証できていません。

Ref

Getting Started with LTI Pro - Zoomappdocs
https://zoomappdocs.docs.stoplight.io/lti-pro-v2/welcome/getting-started

LTI Pro is now available in the Zoom Marketplace
https://support.zoom.us/hc/en-us/articles/201363333-Getting-Started-with-LTI

Zoom for education
https://zoom.us/education

LTI/LMS Systems - Zoom Help Center
https://support.zoom.us/hc/en-us/sections/200305523-LTI-LMS-Systems

Zoom - Youtube
https://www.youtube.com/channel/UC2SxmE4C-KAQuHaEfHVymgQ