プログラマーが着てそうだけど、実は絶対に着ない変なTシャツ

ドリンクカップ

アマゾンで変なTシャツを見つけました。テレビドラマとや映画じゃあるまいし、こんなTシャツを着るやつはいませんよ。

これは皮肉です。例えばあるプログラムで計算結果を整数(0,1,2,3..)で出すように作ったとします。計算結果の少数の部分は切り捨てられるので検算すると答えが合いません。つまり3を2で割ると答えば1.5なのに、そのプログラムでは答えば1(少数なし)になります。それを「バグだ」と指摘された時に、計算結果は整数しか想定しないなのだからこれは「仕様通りです」となるわけです。

初めてプログラム言語を使うときに画面に”Hello World”と表示させるのは初学時の通過儀礼ではあるけど、やっているのは教科書の丸写しであって、法則や真実があるわけじゃない。そこが数式とは違う。なんとなく頭が良さそう見えるかもしれないけど、英語を話さない人たちの前で、”This is a pen.”っとやって自慢してるような気がしませんか。

Print paime numbers from 1 to 10000.
たしかにC言語のソースコードだしアルゴリズムも正しい。けどコーディングのスタイルが古い。ネットで拾ったANSI-C(C98)の頃のコードをパクっただけなんでしょう。細かいことをいうと冒頭のvoid main(){}のところが目障り。せめてはint main(){}に変更しないと今時のコンパイラーは通らないじゃないのか。これこそがC言語だとばかりにデカく「C」って書いてあるけど、そんなのは一目でわかるのだから書くことなかった。

Calculate pi one thousand decimal places.
シャツに書くコードの量じゃない。円周率を計算すると書いてあるが、ただの模様にしか見えない。これではシマムラで売ってるヘンテコ英語の服と変わらない気がする。それに数値計算するのにわざわざC言語は使わない。

WordPress 4.4 alphaの自動バックグランド更新をオンのまま放置

ローカル環境にセットアップしただけでは飽きたずレンタルサーバーにも構築。4種類の自動更新機能がデフォルトでオン設定。更新が実行されたタイミングでメールが飛んでくる。起動したままにしておくとどうなるか。

UPDATE LOGは以下の通り。
– WordPress 4.4-alpha-35308 Wed, 21 Oct 2015 13:25:23
– WordPress 4.4-alpha-35265 Mon, 19 Oct 2015 14:38:50
– WordPress 4.4-alpha-35213 Fri, 16 Oct 2015 08:22:53

この調子でベータ1がリリースされれば更新される見込み。その後は続けてベータ2、3、4と更新されて12月に4.4の正式版になるのかどうかは、このまま放置しておけばわかるでしょう。何もせずメールで知らせが来るまで放置しておいていい。

もし問題が起きたら自動バックグラウンド更新の設定ですぐにwp-config.phpで更新機能を停止する設定をしてしまう。

COBOLが消えたらIT業界が変わるそうです

仕事部屋のドアに掛けてある「外出中」のプレートが落ちまくる。ITProにも荒れ模様の記事があったのその感想を書きます。

ITPro 2015/10/15
損保ジャパンがCOBOL一掃を決断 金融機関が変われば、IT業界も変わる

記事としては面白いですが、COBOLをやっている人たちの声が聞こえない。実際はどうなんでしょうね。
記事にはプログラミング言語をJAVAに置き換える計画だとありますが、COBOLとJAVAは考え方が違いすぎるので機械的な翻訳はできません。そもそも継ぎ接ぎだらけて誰にも解析できなくなったプログラムコードを放置したのが問題なわけで、JAVAに置き換えて道具がモダンで開発効率が良くなっても、根本的に仕事のやり方を変えないと元の木網だと思います。

システムの老朽化はどこにもある問題なので、今後どう対応していくのか気になるとですが、情報が公開されないので想像するしかありません。既存のシステムの解析にCOBOLのプログラマは必要でしょうし、JAVAの開発スキルを身につけたプログラマーはCOBOLのプログラムコードを解析する気はないでしょう。プログラマーが同じプログラミング言語をずっと使い続けていると、だんだんそのプログラム言語に合わせた考え方をするようになります。きっとCOBOLをやると”頭が腐る”と言って嫌がります。斜陽な分野をこれから極めようなんて人もいない。影響の少ないサブシステム程度の入れ替えならとっくに終わってるでしょうから、残っているのはコアな部分でしょう。時間が経つほど事態は深刻になる。実に難しい問題です。

もっとオープンにして風通しを良くすれば、解決方法も見えてくると思うんですがね。きっと秘密がいっぱいあるから、そうはいかないんでしょうけど。

追記:
ちょっとCOBOLerをキーワードに拾ってみたら面白い記事があったので貼っておきます。
@IT 2014/07【8】コボラー(COBOLER)に関する都市伝説について

プログラミング言語より業務仕様の理解のほうが圧倒的に難しいです。顧客に聞かないと機能や存在理由、使われた方、頻度とかはわかりません。下手すれば顧客もわからないものもあったります。

実装の仕様が誰もわからないのにシステムは稼働しているということですか。こう言う状況はWeb系のプロジェクトでもありますが、勘定系はトラブルの程度によってはテレビで報道されることもあるのでエンジニアの負担の桁が違います。

WordPress 4.4 alphaの環境を作ってみた

積み上げた技術書

WordCamp Tokyo 2015まで半月。参加する予定なので、自分のWordpressの知識を棚卸しのためにWordpress4.4 alpha版を構築。単純で退屈な作業かと思ったら割と面白かった。

WordPress.orgのsvnかなんかで管理してあるのをダウンロードしてくるものかと思って探索しても、それらしいのものが探してもみつからない。フォーラムを読むと4.4で提供される機能だけならplug-inで試すことができるが、どうせやるならコアをバージョン4.4にしてthemesもTwentySixteenで動かしてみたい(TwentySixteenはコアが4.4でないと動かない)。正式リリースまで2ヶ月。仕事に影響しないローカル開発環境に構築して、正式なリリースまでアップデートされていく様子をワッチしておくのはいい勉強になる。

How to Get WordPress 4.4 alpha and Beta (1 post)にalpha版の取得方法がポストされていた。誰かに質問しようかと思っていた時だったので、締めくくりの”Hope that helps.”が心に響いた。alpha版のtar玉をダウンロードして新規に構築するわけではなく、WordPress Beta Tester プラグインからリポジトリ(?)をalpha版に向けてコアを更新する流れでした。つまり先に既存の実装が必要になる。なかなか運用者に優しい仕組みではあるけど、なんかいつもと勝手が違うので慣れるまで時間がかかりそう。考えてないでやると決めた以上は作業をやってしまう。

まずはWordPress4.3.1の構築。ローカル開発環境なので慣れた手順でさくっと構築する。

次にalpha版に取得に向けた作業。
WordPress Beta Tester プラグイン Version 1.0をインストール。”お使いのバージョンのWordPressではテストされてません”と不安な文言が表示されていたが作業に問題はなかった。

ダッシュボート、ツール、ベータテストを選ぶ

スクリーンショット 2015-10-15 09.46.10

最新版ナイトリービルドをチェック、設定を保存し、ベータ版にアップグレードをクリック。
スクリーンショット 2015-10-14 23.46.41

せっかくなのでthemesもTwentySixteenにする。ダッシュボートの表示もこの通りです。

スクリーンショット 2015-10-15 09.56.44

これで新機能が試せるようになりました。まずは、

    REST API
    oEmbed cards

などのあたりですかね。

このサイトではthemesにTwentennSixteenを使ってるので、見た目だけalpha版っぽく見えますが、コアは4.3.1のままです。

Twenty Sixteen requires at least WordPress version 4.4. が発生(0.1.20151013)した

朝イチでびっくりぽん。Wordpressに投稿しよとするとエラーになる。目が覚めました。

Twenty Sixteen requires at least WordPress version 4.4. You are running version 4.3.1. Please upgrade and try again.

確かにversion 4.3.1でTwenty Sixteenを使ってます。Twenty Sixteenを使うにはversion 4.4が要るって言うけど今の最新版は4.3だから4.4はまだリリースされてない。

null
Twenty Sixteen By WordPress.org

こういう時は悩んでいるとどんどん時間が過ぎてしまうので、原因の調査は後にして環境を元に戻す。昨日から変更箇所はThemesだけ。
Themes:Twenty Sixteenを前バージョン(0.1.20151002)に戻したらエラーは出なくなった。

いつかまた同じ事象にでくわしたときのために以下に手順を残しておく。

サーバにログイン。wp-content/themes/twentysixteen配下のstyle.cssで使用中の詳細なバージョンが確認する。
$ grep Version style.css
Version: 0.1.20151013

twentysixteenのRevisionを確認する。
Themesを変更してから問題が発生しているので、とりあえずあ以前の”0.1.20151002″(前週バージョン)に戻すことにする。

適当な場所にThemesを丸ごとダウンロードする。
$ wget -r -np https://themes.svn.wordpress.org/twentysixteen/0.1.20151002/
Themesフォルダにコピーする。ダッシュボードでどっちのThemesなのか区別できるようにstyle.cssファイルの内容を書き換えておく。
Theme Name: Twenty Sixteen
  -> Theme Name: Twenty Sixteen 0.1.20151002

themes配下にディクトリを作ってコピーする
wp-content/themes/twentysixteen_0.1.20151002

ダッシュボードにtwentysixteen_0.1.20151002というThrmesが追加されているので切り替えて完了。

追記:
本件はメタスキーマウェブサイトの記事に詳しく説明されてるのでそちらを参照のこと。ようはTwenty Sixteen内に4.4-alphaなのかバージョンのチェックしてます。履歴を調べたら0.1.20151003版からずっとこの処理が入ってます。自分がブログの更新してなかったので気がつかなかっただけ。この変更でTwenty SixteenはWordpress4.3には適用できなくなったので、この問題にはまるのは適用したTwenty Sixteenをアップデートし続けてきた人だけ。とりあえず暫定対処して0.1.20151002版で運用はできてます。

Elecom WDC-150SU2MをUbuntu 14.04 LTS に挿す

また古いWinddowsXPパソコンのUbuntu化のお話です。普段なら旨い酒が呑めるなんて程度のオファーじゃ引き受けないんですが、今回は会社の役員でもある叔父の依頼なので点数を稼いでおくことにしました。今回、相手にするブツはこれです。

fmv

対象 富士通 FMV LX50M(TV内蔵17型液晶一体型 CeleronD2.93GHz RAM1GB HDD250GB DVDマルチ)
UbuntuOS Ubuntu 14.04 LTS 日本語 Remix
無線LAN子機

あらら、TVチューナーが付いてて、キーボードが無線接続。カードBUSポートが2つある。パソコンと家電が融合した製品。私に言わせてばゲテモノです。2005年はまだこういうのが売ってたんですね。

パソコンの置き場所にはLANケーブルが届かない。インターネットに繋ぐときにはスマホでテザリングすればいいのだけど、パソコン本体に無線LANインターフェースがない。いつものことです。まぁ、この程度のことでは驚きません。近所の電気屋でUSBタイプの無線LAN子機(WDC-150SU2MBK)を購入。しかし叔父はこれが無線LANの子機だと言うことが信じれれないらしい。たしかに他の製品に比べて見かけもアンテナっぽくない。予想していた値段よりも安価すぎることも不安らしい。値段の違いは通信速度と電波の飛距離だし、パソコン本体に処理能力が低いから、WDC-150で十分だと説明したのだけど、私が適当なことを言ってようみえるらしく納得できてない感じ。せめて1ランク上の製品を買おうとするのを制して買い物は終了。別に私もいい加減に選んだ訳じゃありません。電気屋の売り場についてからスマホで型番をググったら成功したっぽいこと書いてるブログの記事があったので、やればできるはずだという見込みがあった。セットアップは私がやるのだから手順の中にコマンド操作があっても問題じゃない。自分の経験から言ってNICの相性に製品の価格は関係ないですから。

部屋に戻るとすぐにFMV LX50MのドライブにUbuntuのCD(DVDだけど)を入れて起動。BIOSを弄ってないのにブートストラップを読み込みを始めた。そのまま放置。
しばらくすると起動音と共にUbuntuが起動した。パソコンのデータバックアップはなし(本当にいいんですかねぇ)。HDDを初期化、Ubuntuをインストールを開始。

型番をキーにしてググるといくつも情報がヒットした。Raspberry Piでやった人もいるのか。ドライバーを入手する必要がある。自分のMacbookでダウンロード、USBメモリにコピーする。
$ git clone https://github.com/lwfinger/rtl8188eu
gitからソースが持ってこれるのはいいね。cloneしたrtl8188euフォルダを丸ごとUSBメモリにコピーする。

FMV LX50Mに戻り、タイムゾーンやパスワードの設定をしてUbuntuのインストールを終わらせてしまう。
インストールが終わるまで30分はかかるはずなので、箱から丁寧にWDC-150を出してUSBポートに挿す。箱と付属品は無くさないように取っておく(ヤフオクで売るときに要る)。
注意:WDC-150はでっぱり部分が小さく形状も丸い。一度USBポートに挿してしまうと手では抜きにずらい。

Ubuntuのインストールが終わったら、USBメモリのrtl8188euフォルダをホームディレクトリーにコピー。このあとはパソコンのtermで作業する。

$ pwd
/home/ubuntu
$ cd rtl8188eu/
$ make all
$ sudo make install
$ ls -l 8188eu.ko(makeが成功したことを確認する)
$ sudo insmod 8188eu.ko
$ lsmod | grep 8188(モジュールの追加が成功したことを確認する)
8188eu 671710 0
$ iwconfig
wlan0 unassociated Nickname:”<WIFI@REALTEK>”
Mode:Managed Frequency=2.412 GHz Access Point: Not-

これでウィンドウマネージャで受信範囲にあるWifiスポットのSIDが表示されるようになる。
あとはSIDを選んでパスワードを入力。Wifi接続ができた。

インターネットに繋がったら何はともあれシステムを最新化する。
$ sudo apt-get update

また、しばらく放置。ダウンロードに時間がかかったが無地に終了。
簡単にUbuntu Unityの操作の説明。とは言ってもWebブラウザとシステム終了のアイコン、IMEのオン/オフのキーだけ教えて終わり。

lan_port

なんかGUI操作の反応も悪い。叔父はもともとインストールされていたWindows XPで使っていたときより早くなったと言いますが、新規でUbuntuをインストールしてシステム環境が処理がキレイになったのでそう感じるだけ。買ってきた無線LANの子機は最初に何もせずにUSBポートに挿しただけではlsmodコマンドでも認識してなかったのだが、実際に手順通りに設定をして通信するところを見た瞬間に不安があったことんなて忘れてしまってましたよ、二人ともね。

Ubuntu CDがプライベートでも役にたった

連休でUbuntu CDが大いに役に立ちました。 Lunixを使える人は、お出かけのときに、荷物にUbuntu CDを忍ばせておくとヒーローになれるかもよ、ってお話です。

Ubuntu Desktop 日本語 Remix
https://www.ubuntulinux.jp/
注意:Ubuntu CDといいながら、UbuntuのサイズはCDの容量(700MB)を超えてます。記録媒体にはDVDが必要です。

家庭で使われているパソコンはたいていノート型パソコンです。DVDドライブ、USBと無線LANアダプタが内蔵されてるので、Ubuntu CDが適応できる範囲は広い。Ubuntu CDの起動は簡単でパソコンのDVDドライブにUbuntu CDを入れて電源を入れて待つだけ。スマホでテザリングしてWiFiでインターネット接続。標準搭載のWebブラウザ(FireFox)から各種Webサービスが使えた。DVDドライブから起動しているのでパソコンのハードディスクのファイルが壊れてても、ハードディスクそのものが故障していてもUbuntu CDの使用に影響はない。UbuntuはFAT32やNTFSなどのWindows系のファイルフォーマットをマウントすることもできるので、起動しなくなってしまったパソコンからCD起動し、ハードディスクのデータをUSBメモリにサルベージするという使い方に利用できる。

Ubuntu CD起動が便利だった点
USBブートなら携帯性は抜群、音は静かになります。しかし起動と動作は数倍遅い。とてもじゃないですが実用に耐えません。ポータブルハードディスクから起動させれば、騒音と反応遅さは解消されます。しかし、これにも問題があって、CDやUSBに比べると媒体として堅牢さに欠けるし衝撃に弱いの雑に扱えない。いざという時に壊れているかもしれないし、出番があるかのかどうかわからない物に投資するには価格が高すぎる。Ubuntu CD起動なら媒体1枚あたりのコストが安価。ハードケースに入れておけば引き出しやカバンに入れっぱなしにしてても壊れません。いつもTDKの「超硬」シリーズを使ってますが、この連休に使ったUbuntu12の媒体も2年前に焼いたものだけどサルベージ作業できました。

やっとデータをサルベージした話です。パソコンの型番は控えてないですが、富士通のFMVでした。新しいパソコンも買ってある(割と頻繁に買い換える人です)。データの引っ越し用にUSBメモリを買ったのに、元側のパソコンでWindowsが起動しないのでコピーができないでいた。販売店の修理にだすとハードディスクのデータは消えてしまう。今までデジカメで撮った旅行の写真があるので諦めきれない様子。電源を入れみたら、起動してデスクトップが表示されたあたりで固まってしまってました。実は裏側でノロノロと起動処理は動いていたのですが、あまりに時間がかかっていたのでフリーズしたと思って電源プッチンしていた。
そこで私が物は試しにとDVDドライブにUbuntu CDを入れて再起動。国産のノートパソコンだと未対応だろうとあまり期待はしていなかったんですが、数分で起動音が鳴って、いつものX Windowsマネージャーが表示された。これはいけるかもしれない。内臓ハードディスクとUSBメモリをマウントさせる。ここから先は持ち主に自分でオペレーションしてもらう。ハードディスクから写真らしきファイルを見つけてはUSBメモリにコピーをしていく。もともとマシンのパワーは十分あるのでUbuntuで起動してからサクサクと動く。最後にUSBメモリをアンマウントして、新しい方のパソコンへ移したら完了です。

媒体ラベルにギークなアートワーク素材を印刷しておくと、いざという時に見つけやすいです。
ubuntu dvd Cover

ちなみに私はパソコンの修理、セットアップのオーダーはお受けしておりません。Ubuntu CDが欲しい方はこちらまで取りに来ていただければ実費でお作りします。

まさかCOBOLとPL/Iの案件がくるなんて

ある日「あなたの希望する条件にあったお仕事が見つかりました」という見出しのメールが届いた。1年前からメルマガを購読してるが、いつもスルーしてる。しかし、今回は勤務地ヨシ、稼働時間も期間もヨシ。これはと思った案件の時は直に電話してしまうに限る。メールは受信してからすでに2日が過ぎていた。今からメールしても返事がこない可能性もある。ややあったが掲載案件のことがわかる担当者に電話がつながった。

「どちらも経験者であることが条件の案件です」

どんなプロジェクトなのかと話してみて驚いた。プログラミング言語はCOBOLかPL/Iでメインフレームでの開発でした。話の途中で吹き出してしまった。COBOL?知ってるよ。学校で実習をやったよ。ソースコードにディビジョンってので分かれてさ、環境部、入力出力部、データ構造部を書いてさ、処理部にようやく制御命令が出てきてプログラムらしくなる、あのプログラミング言語でしょ。私はサラリーマン時代に「もうすぐダウンサイジング、オープソースの時代がくるからメインフレームに未来はない、すぐに撤退するべきだ」と言い続けて社内の8割を占めてたメインフレマーを敵に回してしまったという過去がある。PL/Iでしょ。知ってるよ。ピーエルワンって読むんだよ。ミニコンの開発プロジェクトの制御プログラムの開発言語で使ってた。ほとんど覚えてないがソースコードはC言語っぽい構文なのに配列の添え字にSTR[-1]みたいにマイナス値が使ってあって頭が腐りそうだった。COBOLにしてもPL/1にしても30年前の話。開発環境も言語仕様もすっかり変わっている。

千葉県の印西市でIT企業の仕事となればあのデータセンタービル絡みの募集にたどり着いたのは想定の範囲内だけども、まさか電話してみてメインフレームとかCOBOL、PL/Iの話がでたのは驚いた。

学校の授業で教科書に使っていたのコレでした。

WordPressのダッシュボードのメニュー表示が崩れる

管理画面メニュー

管理画面メニュー
Wordpressの管理画面でメニューがズレて表示される。操作ができないこともなし。しばらく更新もせずに放置していたがやはり使いにずらいので対処しました。

実行環境

OS X yosemite 10.10.5
Google chrome バージョン 45.0.2454.93 (64-bit)
wp_version = ‘4.2.5’

困った時は詳しい人たちに聞いてみる

https://ja.forums.wordpress.org/
「ダッシュボード 崩れる」で検索。情報を追っていくと原因はslimming-paint(スリミング ペイント)でした。

chromeでの対処方法

chrome://flags/#disable-slimming-pain にアクセス。
スリミング ペイントを無効に設定でchromeを再起動。テキストではわかりにくいので結果の画像を貼っておく。
スリミング ペイント設定画面

WordPressはまだ理解のたりない部分ばかり。例えば探すとおしゃれなテーマが沢山あるが、ダウンロードしてインストールしただけでは同じサンプルと同じ画面レイアウトにはならない。設定画面があればそこから変更し指定されたサイズの画像部品も置く。カスタマイズの手探りなのでやり過ぎて画面が真っ白になって何も表示されなくなるので慌てます。他にもダウンロードしてきたプラグインを変更してたら画面にソースコードが表示されたりクリックに反応しないとか。レンタルサーバーでは動いていたのにローカル開発環境では動きがちがうとか。おかげてリモートでもローカルでもインストール作業は超速できるようになりましたけど。

しばらく遠のいていたあいだにWordpress本体もPHPものバージョンが上がってます(Ver4.3.1になってた)。ただいま知識の差分を棚卸してます。やはり体系的な学習するなら書籍が入りやすい。以下の有名どころ本をチョイス。ちなみに紙版です。電子版はサンプルをダウンロードしましたがいけません。どうして技術書の電子書籍って紙版をスキャンしたみたいなやつばかりなんでしょう。たまにまともなのあってもソースコードもコピペできない。オライリーみたいなPDF版でコンピュータの画面で読むのが一番使い易いんですが、大手の出版社があんな自炊本みたいな商品を売ることに抵抗ないんでしょうか。

速攻で開発環境をiOS9に切り替えてみた

iPhone4s

前夜の準備作業

  • 開発機iMacのバックアップ(time machine):10分くらい
  • Xcode7へバージョンアップ:15分くらい
  • 最後にiOS9にアップデートするiPhoneを充電器につないまま放置。

朝から作業開始

使用するのは機種はiPhone4s。今回のiOS9のアップデートの対象機種です。この前までiOS9 bate版を入れて使ったやつ。正式リリースなので何も考えずに設定画面からソフトウェアアップデートをクリックしたらあとは待つだけ。途中でiCloudの容量が足りなくてやり直しはあったが、昼前には無事にアップデート完了。

アップデート後に最初に求められる設定がSiriのチューニングでした。短いテキストを読み上げて自分の声を覚え込ませる。賢いことに日本語で口語的な表現が通じる。面白くてひたすら遊んでみた。

  • 「いま、何時?」(時刻を読み上げてくれる)
  • 「5分たったら起こして」(アラームをセットします)
  • 「クラシック音楽をかけて」(わかりました。そして再生)
  • 「XXの試合の結果を教えて」(結果を表示し、読み上げもしてくれる)

ようこそぉぉぉ!未来へ!

他にも機能が変わったところがある。beta版を触っていたし、AppleTVのニュースが大きすぎてかすんでしまった。iOS9で不具合も出てるらしい。OSの入れ替えには常に危険が伴います。バックアップとリストアの練習しておきましょう。

iPhone6+の大画面に慣れてしまった私には3.5インチサイズの操作が辛くなってきた。iMacに向かってXcodeを立ち上げて、オンラインマニュアルを流し読み。すぐに諦めてWebを探してまわる。良記事を発見。

shu223氏のブログ:「iOS 9 の新機能のサンプルコード集『iOS-9-Sampler』を公開しました」より引用

http://d.hatena.ne.jp/shu223/20150917/1442440780

githubからcloneしてbuild。さっきまでおもちゃにしてたiPhoneをケーブルでつなげてアプリを転送。実に簡単に実機できた。再びxcodeのオンラインマニュアルに戻りコードを変更しては実行を繰り返す。あとから気がついたらコードはSwiftだった。Appleのサイトを見てもそれは同じ。しかし既にリリース中のアプリはまだまだObjective-Cで開発されたものが大多数のはず。iOSのバージョンアップのたびに改修の必要に迫られる状況が続くのは頭が痛いとこでしょうね。