ChemRxivのデザイン変わった?2026/01/30(金)
卒研生たちの発表スライドをチェックしていて、修論を引用するところを ChemRxiv のプレプリントの引用に差し替えてもらおうとサイトを確認したところ、ページのデザインが変わっていてびっくりしました。いつから?
えらくすっきりしたモダンなデザインになりました。以前の、ちょっと無骨なデザインがわりと好きだったんですけどねえ。
少し見づらくなった気がします。"Published" の情報が雑誌名しかなくて、年・巻・ページを見ようとするとリンクを辿らないといけない。デザイン優先で機能が犠牲になってるんじゃないかなあ。最近のウェブサイトって、そういうデザインが増えてますよね。オシャレを優先すんなよ、と思うんですけど、考え方が古いんかなあ??
なお、この記事の最初に引用したのは、去年の11月に出した新作です。査読を通すことを考えなくてよければ、論文書くのって楽しいんですよね……でも査読通さないと研究を完成させたことにならないので、まあ今年は頑張ります(毎年言ってる)。
デジタルサイネージを作る2025/11/27(木)
ある事情で、デジタルサイネージ(っぽいもの)を作ることになりました。複数の画像を準備しておいて、自動で切り替えながら表示します。こんな感じです。(何を表示しているかは、ご想像にお任せします)
さくっと作れるだろう、と思っていたのですが、ファイルの内容を表示するところでつまづきました。掲示内容は PDF で用意してあるのですが、PDF の表示がどうも微妙です。ブラウザの中でいろいろ複雑なことをやっているようで、周りに枠がついたり、表示が少し遅れたりします。
今回の目的には、PDFの「文書」としての機能は不要です。そうすると、画像に変換して表示する方がよさそうです。そこで、ImageMagick を使って、288 dpi の PNG ファイルに変換しました。1個 150 KB ぐらいのサイズになってしまいますが、まあ今どきこの程度のサイズは許容範囲でしょう。ついでに、PDF ファイルの周りの空白も削除しました。
$ for i in *.pdf; do magick -density 288 $i -trim ${i/pdf/png}; done
表示の自動切り替えは、JavaScript の setTimeout 関数を使って実装します。このとき、CSS の transition 属性を使うと、「フェードアウト→フェードイン」という機能も実現できます。<html> の背景色を黒、<body> の背景色を白に設定して、通常は <body> が見えるようにしておきます。切り替えの時は、<body> の opacity を 0 にすると、<body> が消えて <html> の真っ黒な背景に変わりますが、このとき <body> に transition: 0.5s を指定しているため、0.5 秒かけて徐々に変化します。その後、表示内容を切り替えて、opacity を元に戻すと、また 0.5 秒かけて <body> の表示が復活します。
/* JavaScript */
/* スライドショー */
function onTimer() {
/* 次の画像 */
let v = nextImage();
/* body を徐々に消す */
body.classList.add("hide");
timerID = setTimeout(() => { /* 1.5秒後に呼び出す */
/* 表示する画像を切り替える */
let img = document.getElementById("img");
img.src = "images/" + encodeURIComponent(v) + ".png";
/* body を徐々に表示する */
body.classList.remove("hide");
timerID = setTimeout(onTimer, 30000);
}, 1500);
}
/* CSS */
html {
background-color:black;
}
body {
background-color:white;
margin:0;
padding:0;
transition: 0.5s;
}
body.hide {
opacity:0%;
}
今どきの学生さんなら、AI を使ったら一発でできるのかもしれません。私はAIコーディングを全く使えないので、すべて手書きです。AIコーディング覚えた方がいいのかなあ……それを勉強している間に手書きで書けてしまう気がするので、なかなか意欲が湧かないんですよね。本業とはまったく関係ないし(苦笑)
電気化学のシミュレーション:Python/ElectroKitty 2025/10/28(火)
だいぶ前に「電気化学のシミュレーション:Pythonを使ってみる」という記事を書きました。そこで紹介したコードは、シミュレーションの雰囲気をつかむには十分ですが、研究現場で使うとなると、コードの正当性が査読論文の形で公開されているパッケージを使いたいところです。探してみたら、見つかりました! 今年の4月に公開された論文です。"ElectroKitty: A Python Tool for Modeling Electrochemical Data Including Non-Langmuir Adsorption", O. Vodeb, P. F. B. D. Martins, D. Strmčnik, N. Hodnik, M. Gaberšček, ACS Electrochemistry 2025, 1, 1540-1544. https://doi.org/10.1021/acselectrochem.4c00218
ソースコードは GitHub にあります。https://github.com/RedrumKid/ElectroKitty/tree/master ……えーっと、Kitty ってもうちょっと可愛いイメージなんですが、まあいいか。
Python がインストール済みであれば、pip install electrokitty でインストールできます。使い方は下のようになります。(いちいち self がついているのは、Tkinter を使ったコードの一部を切り出したためです。気にしないでください。)
from electrokitty import ElectroKitty
...
# 初期化
self.mechanism = "E(1): a = b \n E(1): b = c"
# 電極反応の定義 [alpha, k0 [m/s], E0 [V]]
self.kinetic_constants = [[0.5, self.k0 * 1e-2, -0.99],
[0.5, self.k0 * 1e-2, -1.15]]
# 拡散係数 [m^2/s]
self.diffusion_constants = [self.diff * 1e-4, self.diff * 1e-4, self.diff * 1e-4]
# 初期濃度 [[吸着種 [mol/m^2]], [溶液種 [mol/m^3]]
self.initial_concentrations = [[], [self.bulk * 1e6, 0, 0]]
# 空間情報
# [格子点の間隔, 格子の全長, 溶媒の動粘度 [m^2/s], RDEの回転数 [Hz]]
# アセトニトリルの動粘度:粘度 (0.343 mPa•s)/密度 (0.786 g/cm^3) = 4.36e-7 m^2/s
self.spatial_information = [0.001, 20, 4.36e-7, 0]
# セル定数 [温度[K], 抵抗[ohm], 二重層容量[F/m^2], 電極面積[m^2]]
self.cell_constants = [293, 0, 0, 5e-4*5e-4*3.1416]
# 吸着
self.iso = []
# 電位
self.Ei = -0.2
self.E_switch = -1.5
self.rate = 0.1
self.nt = 1000
# シミュレーションオブジェクトを作成
self.ec = ElectroKitty(self.mechanism)
self.ec.V_potential(self.Ei, self.E_switch, self.rate, 0, 0, self.nt)
self.ec.create_simulation(self.kinetic_constants, self.cell_constants, self.diffusion_constants, self.iso, self.spatial_information, self.initial_concentrations, kinetic_model = "BV")
# シミュレーションを実行、描画
self.potential, self.current, _ = self.ec.simulate()
self.ax.plot(self.potential, self.current*1e6, "b")
単位系がすべて SI 単位なので、cm や L からの変換が必要なのと、溶媒の粘度を動粘度で指定するあたりが要注意です。上の設定で、計算は数秒で終了します。なかなかいい感じです。
化学・物質学科 体験実験講習会やります!2025/10/02(木)
オープンキャンパスの時にもご案内した通り、来年度から、応用化学科は材料機能工学科とともに「化学・物質学科」を立ち上げます。応用化学科は「化学・物質学科 応用化学専攻」になります。新学科スタートに伴う新企画として、体験実験講習会をやることになりました! 絶賛申込受付中です!(うわ、明日までやん……もっと早く書くべきだった……)
現在、鋭意準備を進めております。こういうイベントって、「最初にやる時」の準備が一番大変なんですよね。化学実験をほとんどやったことがない人もきっといるはずなので、そういう人でも一応の結果が出せる、という内容を考えています。準備中の様子をチラ見せします。
業界の中の人だと、この写真と企画のタイトルを見て、「ああ、なるほど、アレね」とにやついているかもしれません。いやあ、悪いけどさ、ソレじゃないんだな。もう一つチラ見せしようか。ほら、違うだろ?(業界の人しかわからない)
というわけで、他ではたぶんできない実験体験ができると思います。参加される方は、楽しみにお待ちください。
有機化学基礎・有機化学2の成績2025/09/02(火)
前期の成績が確定しました。1年生配当の「有機化学基礎」と2年生配当の「有機化学2」の成績分布を公開します。前回はこちらです。
まず、1年生配当の有機化学基礎の成績分布です。
合格率は、3年連続で 83% となりました。しかし、去年と比べると平均点が4.1点下がり、60点台の人の割合が急増しました。今後に不安を感じさせる結果です。
「順位則(の誤解)」について取り上げたときにも思っていたことですが、1つ1つの事柄に、もっと丁寧に向き合ってほしいなと思います。「ちょっとわかった気になった」段階で、考えることを止めてしまっているように感じるのです。「問題が解ける」「テストで点を取る」ことを目標にしていると、そのレベルで止まります。「解けた」時点で目標達成だと思ってしまうからです。
大学の勉強というのは、そういうものではないのです。「有機化学のプロフェッショナル」としての、ものの考え方を身につけないといけない。有機化学は経験的な学問ですから、「どういう実験事実が存在するのか」と「それをどのように解釈するのか」が考え方の根元にあります。自分で「実験事実」を体験していなくても、講義内容や教科書を丁寧に読み解けば、「先人が到達した実験事実」と「その解釈」の関連が想像できるようになるはずなのです。それが大学で有機化学を学ぶということです。
また、有機化学はすべての単元がつながっていますから、「わからないところ」が1つでもあると、それが他の単元に大きく影響します。合格レベルに到達するには、すべての単元を捨てずに勉強することは必須だと思っておいてください。
次に、有機化学2の成績分布です。
なんとぴったり 50% です。不合格者の得点は、去年は40点台前半がやたら多かったのですが、今年はなだらかに分布しています。逆に、合格者の一部が突出して高得点になっています。高いレベルで理解している人と、そうでもない人との差が開いてきた、ということですね。
不合格だった人の試験答案を見ていると、勉強のやり方にムラがあるな、と感じることが多いです。多段階の反応を最後まで追いきれないとか、特定の反応について全く何も書けないとか、持久力がないんだろうな、と思います。これには簡単な対策はないので、とにかく「頭の体力」をつけてもらうしかないですね。
私はスポーツには全く縁のない者なのですが、大学生の勉強はアスリートのトレーニングに通じるものがあるんじゃないか、と最近感じることがあります。一時、「体幹トレーニング」というのが流行しました。難解な議論を自己流に曲げて解釈する人(順位則(の誤解)のときに書きました)を見ると、体幹が弱いために当たり負けするプレイヤーと似ているな、と思います。多段階の反応を最後まで追いきれないのも、基礎体力が足りなくて最後の壁を越えられないプレイヤーを想像してしまうのです。今の学生は「コスパ・タイパを重視」しますが、そんな調子では「知の体力」はつきません。浅い知識だけ身につけたひ弱な姿で社会に出たところで、満足な結果が出せるわけないじゃないですか?
大学に来た以上は、プロの知識人を目指してください。もちろん、本当のプロは博士号を取るのがスタートラインですから、学部・修士レベルでは「それなり」ではあるのですが、志は高くもっていただきたいと思います。



