古いコードとの闘い

こんにちは。福岡です。

WebClass の画面は一昨年にデザインを改めましたが、まだまだ古いままの画面も残っています。利用者からは統一感のなさを指摘いただく機会も多々あり、至らなさを感じるところです。

ここでは画面の置き換え、もしくは機能の入れ替えについて、開発チームで共有しておきたい全体的な方向性についてまとめておきます。一番に想定している読者は開発チームです。また新機能の開発についてはここでは扱いません。

直すつもりはあるのか?

もちろんです。使いやすい・わかりやすい画面、もしくはより便利な機能に改めていきたいと考えています。

ただし、小さなチームでの開発ですのでリソースの問題は常に付きまといます。また、いざ取り掛かるにあたり、どう直したらいいのかというのが次にぶつかる問題です。

残念ながらやみくもに手当たり次第に取りかかれるわけではない中で、どう切り崩していこうかと常に考えたり、情報収集しています。

改善の方向性

WebClass の開発で常に意識している点は以下です。

  1. できる限り多様な環境で利用できること
  2. わかりやすく汎用性の高い、シンプルな画面・機能であること
  3. 素早く変化し続けること
  4. 安くあること
  5. 連携

コース画面のデザインを改めた際に目指した、主に利用者目線の点は以下です。

  1. スマホ・タブレット・PCといった現在の利用環境へ対応
  2. あっさり使う利用者がすんなり使えるように単純化

画面を直すにあたり、コードの設計も改めていっています。開発目線の点は以下です。

  1. 画面・機能とURLのマッピングの整理
  2. パラメータチェックやセキュリティ対応の詳細化

2000年代のころは大学で LMS を使っていただく方は、eラーニングや LMS の活用に積極的な方が多くありました。このような利用者から多数のご意見・ご要望を頂きながら WebClass も様々な機能をそろえることができました。

2010年代にはいって大学での LMS 利用が浸透し、先生方に教育でのシステム利用に興味があるなしに関わらず、学校設備の1つとして広く授業で使われるようになってきています。また、学生の方もとりあえずスマホでアクセスするのが当たり前になってきています。また、普段から利用する先生が増えるに従い、システムの不具合があった時に与える影響も大きくなっています。こうした変化に伴い、WebClass が先に取り組んでいたのは学生のスマホ利用への対応、ソフトウェア開発工程とソフトウェアテストの改善、セキュリティ実装でした。

そこからさらに一歩進める改善が、一昨年からの新画面の取り組みです。今ではあまり高度な機能がありすぎても、普段ちょっと使うにはかえって扱いづらいと感じられるケースが増えています。また、利用端末もスマホだけでなくタブレットが加わり、学生が使うかと思いきや先生もタブレットで利用するケースがあり、とても多様化しています。セキュリティについても、ますます重大なテーマとなっています。

コードベースの改善

先月、松川さんが「ソフトウェア設計 勉強の手引き」という記事をちょうど書いてくれました。

例えばある機能の画面をきれいに直すにあたり、見た目だけ直せればいいやと考えて HTML と CSS + Javascript だけの書き直しでうまくいくかというと、経験的にはそう簡単に行きません。見た目の整理は取り扱う情報の整理になるので、結果的にはプレゼンテーション以前のデータ構造やデータの受け渡し経路を見直す必要が出てきます。特に Ajax を使った SPA にしたい場合、JSONデータインタフェースの実装が必要になるので、当然ながらインタフェースの拡張が必要になります。これらはセキュリティ実装でも同じことが言えます。したがって多かれ少なかれリファクタリングをすることになります。

利用者から見えないリファクタリングに時間を食われるのをもどかしく思うこともありますが、私は画面の改善でリファクタリングが必要になるのは好機と見ています。素早く確実にソフトウェアを改善し続けるためには、コードの保守性は重要です。これまで画面を変えられなかったのは、その様なコードの体制がなかったのも原因の1つです。ですがコードの問題は画面の改善だけでなく、テスト可能性やテストのコストにも反映されます。

幸いなことに、コードの設計は手本になる本やオープンソースのライブラリやプロダクトが多数あります。したがって、何を実現するかがはっきりしていれば解は比較的見つけやすいです。また、基本的には良いパターンを使いまわしていきます。なので、一か所で何とかすれば、同じような個所を一気に片付けることができます。そして、その後は維持しやすくなると期待できます。

見た目・機能の改善

コードベースの問題を乗り越えて実質的な機能修正に取り組むにあたり、一番問題になるのは「本当に使いやすいのか?」という点です。

コードの良さは計測しやすく、開発チーム内でコンセンサスが得られればOKという意味で、評価しやすいです。一方、画面や機能について利用者がどう思うかは計測・確認がしにくく、いろんな利用者がいてコメントの方向性が定まらないケースもあります。また、仮にいい画面になったとしても、慣れの問題が付きまといます。この点について個人的に印象深いのは Microsoft Office 2007 のリボンUIです。出た当時はいろいろ言われていましたし、私も「なんで?」と思いました。従来のメニューでは一通りの機能を本当に扱いきれなかったのかどうか私には評価できませんが、今では慣れて特に問題なく使っていますし、スタイルの適用などはUI表示域の広さと表示される情報とが程よく、便利だなと思っています。

真似しやすいコード設計に対して、UIや機能の設計は基本は考えてひねり出すのが良いと思います。利用者のコメントはありがたい参考資料になりますが、そのまま受け入れるだけだとブレます。特定の利用シナリオにぴたりと寄り添うほど汎用性を失って、オプションを必要としてしまいます。オプションも加えれば加えるほど動きがわかりにくくなり、テストやマニュアルの周辺作業が積みあがってしまい、機能を洗練させる時間を取れなくなります。

ではどうしたら良い機能や画面をひねり出せるか、これは私もいつも悩む問題です。やはりここは、いろいろ聞いたり試したりするしかないと思っています。特に、先生がどんな状況でどんなことをしようとしているか、というあたりでしょうか。WebClass のあるなしに関わらない、もう少し根本的なシーンやシナリオが見えてくると、考えやすいです。でも、特定のケースに固執しすぎては汎用性を失います。ここが難しいといつも思います。

取り組み続ける

利用者がいてくれる限り、WebClass の開発は終わりません。その時ごとにテーマや課題があり、常に変化・対応し続けていきます。今いいものも、2年後には利用環境と乖離して使い物にならなくなっている可能性もあります。それどころか、後になって昔の機能の価値を再発見してしまうこともあります。そういう意味で、コードベースの改善も画面・機能の改善も果てがなく、あまり考えすぎてしまってもしょうがないところがあります。

なので私たちはアジャイルなソフトウェア開発の仕方を取り入れています。小さく手堅い修正を素早く重ねて行く作戦です。画面の置き換えも、表には見えないリファクタリングだけ先に進めたところもあります。その中で、試したけど捨てたコードも多数あります。いいと思って採用したけど、思ったようには行かなかったコードも多数あります。ですが、これらは「うまくいかない」ことがわかった成果として無駄ではなかったと思っています。

いずれにせよ、多くの利用者が使うシステムでは「パパッと作って何とかなる」とは行きにくくなります。タイムリーに新機能や改善を提供し続けるためにも、普段からリファクタリングや試行錯誤を常にやり続け、そして学び続け、堅実なコミットを積み重ねていきます。

新元号「令和」

こんにちは。福岡です。

さきほど、新元号が発表されました。「令和(れいわ)」だそうです。エイプリルフールネタじゃなくて、本物ですよ。日本経済新聞社の記事のURLを張っておきます。

https://www.nikkei.com/article/DGXLASFL29HLH_Z20C19A3000000/

このブログ記事を書き始めたのが11時50分頃でしたが、「令和」でググると早速発表のWeb記事が上がってきたり、wikipedia.jp にもページが追加されたりと、皆さんとても素早いんですね。

さて、WebClass での新元号の対応・影響について念のため説明いたします。WebClass ではシステムとして和暦は使用していないので、元号の変更に伴う改修等は一切ありません。3月29日に v11.6.1 をリリースしましたが、その修正内容も再提出機能に関する不具合の修正など早めに適用いただきたい修正はありますが、和暦に関するものはありません。

ただし、コンテンツ等で先生や管理者の方が和暦を使用していた場合は、先生や管理者の方が用意した部分でもしかしたら調整したほうがいい点があるかもしれません。アンケートで和暦回答をさせるとか、でしょうか。

JaSakai/AXIES/IMS 合同カンファレンス 2019

こんにちは。福岡です。

しばらく間が空いてしまいました。年度末のこの時期は、あちこちでメンテナンス作業などがあって忙しい時期になります。

さて、今日は法政大で開催された「JaSakai/AXIES/IMS 合同カンファレンス 2019 (http://www.media.hosei.ac.jp/jasakai2019/)」にお邪魔してきました。オープンソースの Sakai、大学ICT推進協議会 (Axies) および標準規格のIMSの方々が集まってのカンファレンスで、ノートルダム大学の Learning Analytics についても紹介いただきました。私は聞いていただけですが、WebClass も学習の記録を分析活用するのには興味があり、規格実装や分析の実例について勉強させていただきました。

分析のソフトや動作速度の話など具体的なところも話に上がって面白かったのですが、やっぱりこういうのは、やってみないことにはわからないですね。行けるところから手を動かして試行錯誤してみたいと思います。

またオープンソースシステムの良し悪しについても議論がありました。

  • 実装が公開されていて自分たちで直せることは強みではありますが、あまり触ってしまうとアップデート等での保守が難しくなってしまう。
  • オープンソースといえども、影響力の強いコミュニティの方向性が機能に反映されやすい面はある
  • 研究室で開発したツールは、学生が卒業するとノウハウの多くが失われやすい

ということでした。大学である程度の規模で運用しているところは、やはり外部の運用会社とタッグを組んでいるケースは多そうです。Moodleもそんな話をよく聞きます。

WebClassはオープンソースではありませんが、運用するサーバのミドルウェアにはLinux, PostgresやApacheといったオープンソースツールを利用しています。また、連携では標準規格もいくつか対応しています。オープンコミュニティのいい面と、企業の製品・サービスの形でサポートした方がいい面とは、うまく組み合わせたり、刺激しあったりして共存していけたらいいなと思います。

植物

こんにちは。福岡です。

開発チームの事務所では、3つの植物を育てています。1つは種類の名前がわからなくなってしまいました。

ペペロミア
種類がわからない
アイビー

ツルのアイビーが強いかと思いきや、去年にいちど枯らしてしまいました。土にカビがつく「うどんこ病」というのにかかったみたいで、水の管理が悪かったと思っています。お世話をしてくれているスタッフの希望で、再チャレンジのため鉢を買いなおしました。

緑があるのは気持ちがいいです。また、様子を見ながらお世話をして育てるのは開発やサーバの保守とある意味似ているところもあり、難しくも楽しくもあります。

WebClassログイン画面のHTTP Status

こんにちは。福岡です。

WebClassはクラウドサービスも行っています。そこで弊社でも稼働ステータスを監視しています。オンプレミスのサーバでご利用いただいている学校でも、学校でWebClassサーバの監視を何かしら行っているケースは多く、監視に関する質問を頂くこともあります。 OSのメトリクスは一般的なツールで取りやすいと思いますが、WebClass のアプリケーションに関するステータスはどう取ったらいいか、あまり情報を提供したことがなかったかもしれません。そこで、稼働状況を確認するのに使えそうな、 v11.6.0 のログイン画面の表示とHTTPステータスについてご案内します。

ログイン画面の表示のパターン

ここでは前提として、特にSSOの設定がないケースを想定しています。何かしらのSSOを設定していて、未認証の状態でログイン画面を開くと別のページに転送される環境は当てはまりません。

ログイン画面は以下の2つのパラメータで4つの表示のパターンを持っています。

  • システムオプションのMAINTENANCE_MODE ON/OFF
  • DB への正常な接続 Yes/No

正常時

通常は、次のようなログイン画面が表示されます。HTTP Status は200です。

メンテナンス中

メンテナンスモードに切り替えている間は、下図のようにメンテナンスモードのメッセージが表示されます。HTTP Status は 200 です。通常のユーザはログインできませんが、すでにログインしている人はまだ操作を続けることができます。

メンテナンス中でDB停止時

メンテナンスモードに切り替えていて、かつ DB に接続できない状態の場合は、表示が変わります。この状態では仮にログインしたままのユーザがいても、操作はできません。メンテナンスメッセージは1つしか設定できないのでそのまま表示されますが、ログインフォームは表示されなくなります。HTTP Statusは503 になります。

予定外のDBアクセス不可

もしメンテナンスモードでないときに DB にアクセスできないときは、以下の表示となります。HTTP Statusは500になります。

応答時間

上記はHTTPレスポンスが帰ってくるケースになりますので、Webサーバがリクエストを受け取って応答可能な状態です。

ログイン画面の応答時間で負荷状況もだいたいはわかるかもしれませんが、サービスが実質利用可能かどうかはコースの教材一覧やテストの画面の速度が問題になります。