ゼロ除算発生時にデフォルトの値を返すようにしたら、深刻な問題が発生する? 199
除算 部門より
話としては、ゼロ除算のチェックに疲れ果てたベテランプログラマーが、ゼロ除算発生時に「0」を返すなどの処理をシステム全体のデフォルトとして設定することを夢見るというもの。0以外ではどのような値がゼロ除算の結果として適切か、とも尋ねている。皆さんのご意見はいかがだろうか。
アナウンス:スラドとOSDNは受け入れ先を募集中です。
ニンテンドー3DS上で動作するBASIC風開発環境「プチコン3号」のプログラムを多数収録した「プチコンマガジン 創刊号」が近日配信される。予価300円(プレスリリース、 告知ページ)。
昨年11月から今年1月にかけて行われたプログラムコンテスト「第三回 プチコン大喜利」の入賞作品などからユーザー作品36点、オリジナル作品1点が収録されており、プチコン3号本体がなくても収録作品のゲームを遊ぶことができるとのこと。プチコン大喜利の応募要項から優秀作品を何らかの形で配信する計画があるということはわかっていたが、それが正式に発表された形になる。
ちなみに、受賞作の中にはプレイ中にゲーム実行停止してプログラムを修正して話を進めていくというメタな内容の作品もあり、再生専用と思われるプチコンマガジンがどこまでの機能を持つのかも注目されるところ。
37作品収録されて300円とミニゲーム集と考えてもお得な価格設定となっており、単品でも結構遊べるはず。プチコンマガジンを通じてプログラミングに興味を持つ子供が出てくる可能性もあるのではないだろうか。
先日著名ゲームエンジン「Unreal Engine」のソースコードが公開された。ライセンスはオープンソースライセンスではないが、第三者がソースコードを閲覧できるようになったということでこのコードをC/C++向けのコード解析ツールを開発するPVS-Studioが解析したところ、多くの問題が見つかったそうだ(公表されている解析結果)。
これを受けて、Unreal Engineの開発物であるEpic GamesはPVS-Studioとパ-トナーシップを結び、問題を解決する方針を示したという(Epic Gamesの発表)。
プログラミングやCUIのサンプルとしてよく使われる「hoge」という単語を知らない若者が増えているそうだ。
元ネタはTogetterまとめだが、ITmediaが社内や情報科の高校生にヒアリングを行ったところ、高校生や20代は「hoge」という言葉を知らない傾向が明らかになったという。
これはグローバル化によって日本独自のhogeではなくfooやbarが多く使われるようになったためだろうか。日本独自文化であるhogeを守るためのキャンペーンが必要かもしれない。ちなみにタレコミ子的にはhogeと同列の言葉に「moge」があるのだが、最近これがあまりポピュラーではないことを知って驚いた。
WWDC 2015で年内のオープンソース化が発表され、さらなる開発者増が見込まれるSwiftだが、すでにObjective-Cのシェアを奪いつつある傾向があるという(ITworldの記事)。
6月のTIOBE IndexでSwiftは14位。1月は25位、5月は18位と順調に順位を上げており、レーティングも1月から約0.7ポイント増で1.44%となっている。一方のObjective-Cは5位だが、1月には3位、5月には4位だった。レーティングも1月から2.614ポイント減の4.339%で、ピークだった昨年4月と比較すると約8.5ポイント減少している。このペースで減少していくと、年末には20位以内に入らない可能性もあるという。
6月のPYPL(PopularitY of Programming Language)でも、Swiftは1月から1ランク上昇して11位となり、シェアは0.2ポイント増の2.7%。これに対し、Objective-Cは昨年以来8位を保っているものの、シェアは1月から0.6ポイント減の5.5%となっている。
GitHubでのフォークを除いた新規リポジトリ作成数に対するシェアをみると、昨年7月から12月までの期間ではSwiftが0.65%、Objective-Cが1.6%だったのに対し、今年1月から5月までの期間ではSwiftが0.8%に増加、Objective-Cは1.4%に減少している。
ITworldの記事によるとSwiftに対する開発者の興味は増しているが、経験を積んだiOS/OS Xアプリ開発者はObjective-Cからの移行に慎重な傾向もみられるとのこと。皆さんの場合はいかがだろうか。
文部科学省生涯学習政策局情報教育課は「諸外国におけるプログラミング教育に関する調査研究」報告書を6月10日にWebサイトで公開したが、12日から非公開になっている。同報告書は「はじめに」などの内容がかなりアレゲであり、内容について確認後、改めて掲載する予定とのこと。
ちなみに、公開時の「はじめに」の第一文は、以下のとおり。1942年、今日の電子計算機の原型の一つが、ペンシルバニア大学ムーアースクールのJ.P.エッカート、J.W.モークリーによって論文としてACM(Association for Computing Machinery)に発表され、1945年には弾道計算用の実用機ENIAC(Electronic Numerical Integrator and Computer)が開発された。
一瞥して間違いだらけであり、こういう文章の間違いに気づく人材を増やすことこそが、情報科学や人文科学での教育なのだ、と私(安岡孝一)個人は考えている。文部科学省は、ぜひ今後も、情報科学教育ならびに人文科学教育に邁進してほしい。
最近注目されているGoやSwiftといった言語は、それぞれGoogleおよびAppleが開発したプログラミング言語だ。Red HatもCeylonというプログラミング言語を開発しているし、すでにWindows環境で広く使われるようになっているC#はMicrosoft発の言語だ。FacebookもHackという言語を公開している。このようにIT大手企業が独自のプログラミング言語を作る理由について、Business Insiderが理由を考察している。
これによると、これらの企業はこれら言語から直接利益を得ているわけではない。しかし、人材を集める際に独自の言語を持っていることがメリットになるという。たとえばGoogleは同社サービスの実装にGoを使っているため、Goを理解している開発者を雇うことでトレーニングの手間を減らすことができる。言語やライブラリをオープンソース化することで、社外の開発者がそれらの問題を解決してくれることも期待できる。
また、AppleのSwiftでは、より迅速に安定したアプリケーションを実装できるようになるという。これによってアプリケーションの品質が向上し、それによってプラットフォームの価値が向上するというメリットもあるそうだ。
昨年3月31日にリリースされたMySQL 5.7.4で新たに導入された「default_password_lifetime」システム変数について、その挙動に注意が必要という話が話題になっている(はてなブックマーク)。
このシステム変数は、「パスワードの有効期限」を日単位で設定するもの。Changes in MySQL 5.7.4ドキュメントによると、パスワードを変更してからこの変数で指定された日数が経過すると、そのパスワードが失効するというものだ。デフォルト値は360、つまり約1年で、ドキュメントには「パスワードは年一回更新すべきである」と記されている。
ユーザーのパスワードを変更した日付はmysql.userテーブルのpassword_last_changedカラムに記録されており、ログイン処理を行う際にこの値を参照する仕組みのようだ。また、password_lifetimeカラムでユーザー毎の有効期限を設定することも可能だ。より詳しい情報はドキュメントのPassword Expiration Policy項にまとめられているが、パスワードの有効期限が切れていた場合、ログインはできるもののパスワードを変更するまでそれ以外のデータベース操作が一切行えなくなるという。
定期的にパスワードを変更することに意味があるのか、という議論はおいておいて、大きな問題点としては、この設定がデフォルトで有効になっているということだ。そのため、知らぬ間に突然アプリケーションが動かなくなる、といった現象が発生する可能性がある。さらに凶悪なことにログインはできるのにクエリは行えないという状況になるため、パスワードに有効期限が設定されているという知識がない場合、原因不明で特定のアカウントからのみクエリが行えない、という状況に見えてしまう。
MySQL 5.7.4がリリースされてから1年と2か月ほどが経過し、そろそろアカウントを作成してから360日が経過するシステムが登場してくるところだ。なにか大きなトラブルにならなければ良いのだが……
GitHubの日本法人「ギットハブ・ジャパン」が設立されるそうだ(TechCrunch、GitHubのアナウンス)。
日本は歴史的にもGitHub上で最も活動的な国の1つである、というのがギットハブ・ジャパン設立の理由の1つのようだが、商用サービスであるGitHub Enterpriseを日本でもっと売るため、というのがメインの目的のような気もする。
また、GitHubがマクニカネットワークスと国内総代理店契約を結んだことも発表された(マクニカの発表)。マクニカがGitHub Enterpriseの日本での総代理店になり、サポートを提供するという。
スクリーンショット画像をスーパーマリオブラザーズ風の画面に変換するOS Xアプリ「Screentendo」を作った人がいるそうだ(VentureBeat、BBC)。
ScreentendoはCocoaとSprite Kitを使用して作られている。画面上の任意の場所にScreentendoのウィンドウを重ねてリサイズし、ウィンドウ内をクリックするとスクリーンショットが撮影される。白黒の2値画像に変換したスクリーンショットから黒の部分を1、白の部分を0とした配列を生成し、1の部分にスーパーマリオブラザーズ風のレンガを配置する。あとは空と雲、プレイヤーのスプライトが追加され、プレイが可能となるようだ。
ただし、このアプリは概念実証のために作られたもので、画像の変換は非常に遅く、ある程度はっきりしたコントラストのある画像が必要になるとのこと。スーパーマリオブラザーズのエミュレーターを作るつもりではなく、ある程度動作すれば十分という感じのようだ。ソースコードはGitHubからダウンロードできる。
開発者の皆さんの中には統合開発環境(IDE)を使用している人もいれば、テキストエディターでコードを書き、コンパイルにはコマンドラインツールを使用する人もいるだろう。Diceが複数の開発者の意見を聞き、目的に適したIDEを選択するためのチェックポイントにまとめて解説している(Dice Insights、 Slashdot)。
記事で取り上げられているチェックポイントは以下の通り。
- 複数言語でコードを書く必要があるか
- 構文強調は必要か
- ツール内でコンパイルできる必要があるか
- 拡張性は必要か
- ビルトインのデバッグ機能は必要か
- ドラッグ&ドロップでGUIをレイアウトできる機能は必要か
- クラスブラウザーは必要か
- オートコンプリート機能は必要か
皆さんはIDEの選択に当たってどのような点を重視するだろうか。それともIDEは不要と考えるだろうか。
犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー