卒研メモ:GNU MPで素数日を調べる

 GMP(GNU MP)の機能として,整数が素数であるかどうかを確認する機能があります(数論関数のmpz_probab_prime_p関数)。詳細はマニュアルかソースプログラムを読んでいただくとして,本日(20170627)も素数日でした。

 ということで,本日が素数日かどうか,次の素数日(mpz_nextprime関数)がいつになるのかを教えてくれる機能をGMPサンプルプログラムに追加しました。

 ということで,この応用問題として「素数日でない時にはその数を素因数分解せよ」を出題しておきます。結構面倒なので,効率的な素因数分解方法を探求して下さい。

卒研メモ:Tensorflowの話題

 DeepLearning界隈の進化のスピードはとても速く,悠長に査読の結果を待つ余裕はないので,arXiv等のプレプリント投稿サイトにガンガン新しい成果が放り込まれていきます。これもその一つですね。

 この論文はちゃんと読む必要がありますが,単純に複素数化するのではなくて,計算量が節約できるユニタリ行列(実行列だと直交行列)を使うあたりが工夫なのかなと。いずれ遠からず実装されて公開されるんでしょうね。

 もう一つ,GoogleがTensorflow用のツールTensor2Tensorを公開しました(Blog記事)。機械翻訳で利用されているSequence2sequenceの改良がやりやすくなるようです。

 この界隈の進化は本当に速いですが,成果をすぐにプログラムで確認できるのはありがたいですね。

卒研メモ:XamarinとC#

クロスプラットフォームでネイティブアプリが開発できるApache Cordovaについての記事を以前書きましたが,オープンソース・マルチプラットフォーム戦略を展開するようになったMicrosoftもXamarinという.NET環境下における開発が可能なツールを出してきました。日本語の翻訳本も出版されているようです。

 .NETでの開発にはC#, C++/CLI, VBScript等が使われますが,現在ではどうやらC#が多いように見受けられます。LAMPスタック的には,PHP + JavaScriptに相当する機能を持つ広範な開発環境です。個人的な研究ではC, C++でガシガシ機械語コードを直接吐き出すプログラミングをやることが多いので,.NETだと遅くなりそうでなるべく避けていたのですが,node.jsの利用が盛んになった昨今ではもう毛嫌いする理由はなくなったように感じます。たまに古手のオープンソース主義者にはM$の利己主義的クローズド戦略姿勢を毛嫌いする向きもいますが,CEOが代替わりした今のMicrosoftは過去とは決別した別会社のようです。

 ということで,Cordovaの勉強が終わってから,.NETとC#,そしてXamarinも触ってみたいところですが,ロートルゆえに着手は早くても次年度以降ですね。急ぎ取り掛かりたい人はWebの情報を入手して,さっさと取り組んでみて下さい。

卒研メモ:WebサーバスタックとRDBMS

 Webアプリケーション開発も年数を経るにつれ,環境が固定化しつつあります。サーバ側では,WebサーバソフトとしてApacheの代わりにnginxが台頭してくるといった動きはありますが,RDBMSは定番の御三家(Oracle, MySQL, SQLServer)のシェアがほぼ不動状態になっています。(参考サイト: DB-Engines Ranking)

 時系列的に眺めても,Oracleに買収されたMySQLの代わりに完全互換のMariaDBのシェアが上がっているという動きはありますが,やはり定番の御三家の変化は殆どありません。

 この調査はWeb経由で行われているものなので,現在のWebサーバスタック,即ち,Webサーバ,RDBMS等のソフトウェア構成を反映しているものと言ってよいでしょう。本研究室では,開発環境としてはXAMPP for Windows(Apache, MariaDB, PHP)を使用しており,このサーバでもOSがLinuxであることを除けば同一の環境で稼働していますが,世界的にはOracleやSQLServerを利用しているWebアプリケーション動作環境の方が約2/3近く占めていることになる訳ですね。OracleはJava(JavaScriptに非ず)との組み合わせが多いように思えます。
 これらをまとめたWebサーバ側のソフトウェアスタックを図にしたものが下記になります。

 昨年にはMicrosoftがLinux環境向けのSQLServerのプレビューバージョンを公開し,C#を動かすための.NET core環境もLinux上に構築できるようになりました(こちらの記事が詳しいです)。こうなると,Linux上でもWindowsと同じ.NET環境で稼働するWebアプリケーションが実用になるかもしれません。

 近い将来は既存の教材をASP.NET MVCを使ったバージョンに展開していく必要が出てくるかもしれません。とはいえ,PHPとMySQLの牙城もWordPressやXoops等の有力CMSが存在するおかげで結構堅牢なので,そう簡単に乗り換える必要はないでしょうが,同じWebアプリの機能を違う環境で動作させるテクニックを知っておくのは悪いことではないでしょう。当方も一応心に留め置いております。

卒研メモ:加速度センサーとスマホ調査

 本日(2017-06-07)の情報学概論で,情報学部1年生に手伝ってもらい,JavaScriptによる加速度センサー(歩数計として使用予定)の動作確認をスマートフォンで行ってもらいました。ほぼ全員参加(140名)の同時アクセスでも問題ないことが確認でき,加速度センサーの動きも問題ないことが分かりました。

 ついでに,スマホのキャリアと機種を質問してみたところ,NTT DocomoとiPhoneのシェアが飛びぬけて高いことが分かりました。

 iPhoneは分かるとして,シェアを落とし続けていると思っていたDocomoが若者に強いのは意外でした。年と共にだんだん離れていくのかしら?

 今後も,この手の「スマホで調査」を継続していきたいところです。

情報学概論:高性能計算研究室の紹介

幸谷 智紀(こうや とものり)

  1. 概要
  2. [研究1] 多倍長数値計算の応用
  3. [研究2] GPU Computingの応用
  4. [研究3] Webアプリケーション開発
  5. [実験] スマートフォンによる歩数計
  6. 今後の展開

1. 概要

多倍長計算のサンプルアプリ: Try! MPFR





[研究2] GPU Computingの応用





5. [研究3] Webアプリケーション開発

Webアプリケーション開発入門

MPFRgraph(jqPlot)


6. [実験] スマートフォンによる歩数計


7. 今後の展開

卒研メモ:日本語形態素解析ツール

 日本語は英語とは異なり,単語の分かち書き(単語間にスペースを入れる書き方)をしないため,文章を解析して単語を分割する必要があります。分解する際には単語の品詞を区別するため,形態素解析(Morphological Analysis)と呼ばれるツールが,日本語のテキスト解析には不可欠のものになります。

 フリーで使える形態素解析ツールとして有名なのはMeCabです。このサーバにも入っていますので,試してみて下さい。但し,辞書の更新を行っていないため,最近の固有名詞には対応していません。適宜アップデートしてくれる機構もあるのですが,辞書が一方的に馬鹿でかくなるので,そろそろストレージに余裕のなくなってきた本サーバには組み込んでいません(多分,本学クラウドに用意することになる筈)。

 インストールしなくても使えるものとしては,Yahoo! Japanが用意しているWeb APIがあります。ここにサンプルプログラムを突っ込んでみましたので,試してみて下さい。辞書のメンテナンスがどの程度行われているのかは良く分かりませんので,調べてみる価値はあるかと思います。

 適宜,良さげなものを使ってみて下さい。