ウェブアクセシビリティのJIS規格対応

システム部の渡辺です。
ユーザビリティという言葉はよくききますが、
アクセシビリティについて説明するのはなかなか難しいのではないでしょうか。

アクセシビリティといえば高齢者・障がい者の方々を考慮したWEBコンテンツ、
病院サイト、介護老人施設サイトなどを多く扱う弊社では特に気を使う点です。

一般的に制作時に気にする点といえば、

「視力が悪い人が困らないように大きくてわかりやすい色の文字を使う」
「画像の alt 属性を記入する」

このぐらいかと思いますが、
日本で定められているアクセシビリティ規格を正しく守るには、

「音声読み上げを考慮したコーディング」
「キーボードだけで全ての操作を可能にする」
「CSS、Javascript をオフにした状態の対応」

など、普段あまり触れることのない対応も必要になってきます。

公的機関の公式ホームページのウェブアクセシビリティ

厳密にどのように対応すべきか、というところですが、
日本国内では JIS(日本工業規格)の中で規格が定められてます。

名称 JIS X 8341-3
正式名称 高齢者・障害者等配慮設計指針-情報通信における機器,ソフトウェア及びサービス-第3部:ウェブコンテンツ
URL http://waic.jp/docs/jis2016/understanding/201604/

公的機関ではアクセシビリティ対応を試験されています。
「公的機関におけるウェブアクセシビリティ方針策定と試験結果表示の実態調査(2014年11月)」
例えば、東京都では、「東京都公式ホームページ作成に関する統一基準」というものが決まっています。

東京都立○○の公式ホームページなどを制作する場合、上記に注意する必要があります。

JIS X 8341-3対応

JIS X 8341-3対応のサイト制作をする場合は、
サイトを作る前から充分に気をつけたいところです。
正直、JIS X 8341-3対応するつもりでつくっていなかったサイトを、
JIS X 8341-3対応するのは、かなり骨の折れる作業です。

  • デザイン時に気をつける項目
  • コーディング、特にベース部分制作時に気をつける項目
  • コーディング、各ページ固有の制作時に気をつける項目

の3つに分けて、注意したい対応項目をまとめたいと思いますが、
長くなったので次回に!

【MDの夏採用、始めました】

FB

こんにちは。病院チームのTです。
現在、3月4月のどたばたを乗り越え、1年を通して案件が落ち着く時期を迎えています。

いつもは時間を割けられず後回しになっていたところを改修するいいタイミング、ということで、
今回はリクルートページを大幅にリニューアル致しました。

img01

img02

社内の雰囲気をお伝えできれば、ということで社内の写真を多く起用しています。
また、今回の改修で応募フォームを新たに設置しました。
3ステップで簡単に応募できるようになっています。

現在はディレクター、エンジニア、デザイナーを募集中です。
採用を検討している方はこの機会にぜひ、ご覧になってみて下さい。
https://www.medical-design.co.jp/recruit/

[PHP]タイトルや本文に文字数制限して表示する場合に、出来るだけ終了地点を揃える。

タイトルのセンスがなさすぎて辛い…。

うまく伝える魅力的なタイトルが思い浮かびませんでした、システム部のヒライです。
端的に言いますと、WordPress等の記事一覧ページで、タイトルやら本文を省略して表示する場合に、それぞれの終点を揃えたいということです。

mb_substr()を使う。

文字数制限なんかで探しますとmb_substr()という関数が引っかかります。

75文字で省略し、最後に「…」を付けてみます。

mb_substr

 

・・・美しくない。

 

終わりに表示している「…」の位置がずれていてキレイじゃありません。

そんなときはmb_strimwidth()を使います。

こちらも同じく75文字で省略し、最後に「…」を付けてみます。

mb_strimwidth

 

・・・美しい。

 

終わりの「…」の位置が揃っています。大変キレイです。

mb_substr()とmb_strimwidth()の違い。

mb_substr()は全角文字列と半角文字列を判別せず、1文字としてカウントするのに対し、
mb_strimwidth()は全角なら2文字、半角なら1文字としてカウントしてくれるので、終了地点があまりズレないということですね、とても優秀です。

冒頭の話に戻り、例えばWordPress上でタイトルを省略しつつ、且つ終点を揃える場合。

[php]// 第一引数にタイトル、第二に始点(0文字目から)、第三に終点(100バイト分の文字)、第四に終点に付け加える文字列、第五に文字コード
<?php echo mb_strimwidth($post->post_title, 0, 100, "…", "UTF-8"); ?>[/php]

※mb_strimwidthについて詳しく知りたい方はこちらをご覧下さい。

一覧画面上に複数出ているタイトルや本文の終わりを揃えたいとお考えの方、ぜひお試し頂ければと思います。

プログラマのためのthree.jsでの絵作り

03

システムの渋谷です。

three.jsでのモデル描画ができないままだと何か負けた気分だったので、モデル描画サンプルを用意しました。
方言に苦しめられるFBXとかではなく、json形式でデータを書き出したので今回は描画の乱れ等は起きずに済みました。

サンプルはこちら

ステレオカメラが標準で実装されていたので、裸眼立体視にしてみましたが、標準だと画角が小さいせいか効果が弱すぎたのでソース弄って効果を10倍にしています。

サンプルを用意する中で、レンダリング画像が簡単にきれいになるいくつかの抑えておきたい項目を紹介しておきたいと思います。

1.  アンチエイリアス設定

var renderer = new THREE.WebGLRenderer({antialias: true});

レンダラーを初期化するときにantialias: trueを指定しておくと汚いジャギーが消えてくれます。
three.jsのソースを見た限り特に処理の内容が書いていなかったのでブラウザに処理が依存していると思われます。
標準のandroidブラウザでは反映されていませんでした。

2. premultiplied gamma

renderer.gammaInput = true;
renderer.gammaOutput = true;

この2つを指定しておくと光が当たってるところの白とびが抑えられたり、暗すぎるところが明るくなります。

a02

3. HemisphereLight(半球ライト)

lighting

表示したいモデルに当てる光について、屋外を考えた場合

  1. 太陽光
  2. 青空からの環境光
  3. 地面にあたった太陽光の反射

がざっくりあるので、これを用意していきます。

 var directionalLight = new THREE.DirectionalLight(0xfff1d7,0.80);
 directionalLight.position.set(-6, 11, 10);

太陽光は通常の平行光源を使っています。
青空からの青い光と合わせて白になるように若干黄色がかった白を指定しておくといい感じになります。

環境光と地面からの反射は通常はアンビエントライトで我慢するのですが、three.jsではHemisphereLightが用意されているのでこれを使います。

 var hemisphereLight = new THREE.HemisphereLight( 0xd7fbff, 0x7e94a8, 0.7 );
 scene.add( hemisphereLight );

HemisphereLightの第1引数が空の色で、第2引数が地面からの反射の色になります。

反射の色は空の色に合わせたものか、明度を抑えておくと自然な感じに落ち着きます。

a03

というわけである程度見られるレベルにはなったと思うのですが、いかがでしょうか…?

3Dで見せたい商品がある等の場合、写真から3Dモデルが作れる123D Catchmementoなどを組み合わせれば、そう難しくなく実現できそうですよね。

WordPress管理画面 カスタム投稿の記事一覧画面で絞り込み検索を追加する

システム部の鈴木です。

先日、WordPressでファイルアップロードの機能におけるセキュリティホールの対策を行った最新版
4.5.2 がリリースされました。

弊社では沢山のサイトを管理させていただいておりますが、WordPressを導入しているサイトも多く
今回のような緊急性の高いセキュリティアップデートのときは一苦労です。

そんなWordPressについての小ネタです。

 カスタム投稿(Custom Post Type)

ブログというよりもCMSとしてWPを使う場合は、通常の投稿メニューでは無く
用途ごとにメニューを設けてそれぞれに適した入力項目を持った管理画面を作ったり、という事がよくあります。

そういった独自のメニューを作るときには「カスタム投稿(Custom Post Type)」という機能を使います。

 カスタム分類(Custom Taxonomy)

通常の投稿メニューとは別にカスタム投稿でメニューを作成したら、
その中でもカテゴリを設けたくなる場合があります。

それを実現するのが「カスタム分類(Custom Taxnomy)」というものです。

 

これらは Custom Post Type UI などのプラグインを使えばどちらも簡単に管理画面からの設定だけで作ることができます。

 

以上を踏まえて今回の本題です。

投稿一覧の画面には以下のようなカテゴリで絞り込むメニューがあると思います

20160527

カスタム投稿の一覧ページだと、カスタム分類を設定しても出てこないんですよね。
でも、検索があれば非常に便利。

ということで調べたところ、以下のようなコードが散見されました。

 

[php]
function add_post_taxonomy_restrict_filter()
{
global $post_type;
if (‘music’ == $post_type) {
$menu = <<<EOH
<select name="genre">
<option value="">カテゴリー指定なし</option>
EOH;
$terms = get_terms(‘genre’);
foreach ($terms as $term) { ?>
$menu .= ‘<option value="’ . $term->slug . ‘">’ . $term->name . ‘</option>’;
}
$menu .= ‘</select>’;

echo $menu;
}
}
add_action(‘restrict_manage_posts’, ‘add_post_taxonomy_restrict_filter’);
[/php]

これを使用しているテーマの function.php に書きましょう、というもの。
この例だと “music” というカスタム投稿で “genre” というカスタムタクソノミーから絞り込みを行う、というものです。
<select>のname属性には絞り込みに使うカスタムタクソノミーを指定するとの事です。

 

しかしこれ、どうもWordPressの4.4.1くらいからはうまく動かないみたいです。
メニューは出てきますがどうも上手く絞り込みがされません。

そこで訂正したものがこちらです。

[php]
function add_post_taxonomy_restrict_filter()
{
global $post_type;
if (‘music’ == $post_type) {
echo ‘<input type="hidden" name="taxonomy" value="music">’;
echo ‘<select name="term">’;
echo ‘ <option value="">カテゴリー指定なし</option>’;

$terms = get_terms(‘music’);
foreach ($terms as $term) {
echo ‘<option value="’ . $term->slug . ‘">’ . $term->name . ‘</option>’;
}
echo ‘</select>’;
}
}
add_action(‘restrict_manage_posts’, ‘add_post_taxonomy_restrict_filter’);

[/php]

変更のポイントは主に2つ

  • カスタム分類名は hidden で渡す
  • <select>のname属性は 検索対象とするキー、つまり “term” を指定する

この修正で上手く行きました。

 

 カスタム投稿、カスタム分類は非常によく使う機能なので、今後は本体で是非サポートしてほしいですね。

それまではこの方法をお試しください。

【Mac】 Dash で開発の作業効率アップ!

作業効率をあげたい!

開発作業のスピードアップは常に課題の1つですよね。

当然、サイトは一つ一つ違うニーズがあり、違う問題を解決していく作業ですが、

やはり違うサイトといえど同じような記述を書く必要がある場面はあるもので、

書きたいと思ったものを瞬時に呼び出すことができるスニペットアプリは多いに役に立ちます。

Dash


Dashのロゴ

Dash


スニペットアプリは複数利用していますが、開発でオススメなのは「Dash」!

「登録した文字列を素早く呼び出すスニペット機能」

「言語の関数を素早く検索して調べる」

の2つを兼ね備えたソフトウェア Dash はかなり便利なのでご紹介です。


Dash は App Store からダウンロードできます。

基本機能は無料のままで利用可

https://itunes.apple.com/jp/app/dash-3-api-docs-snippets./id449589707?mt=12

すべてのアプリケーションを対象にできる

Dash を使うメリットは

  1. いつどんな場面でもショートカット1つですぐに呼び出せる
  2. どんなソフトウェアに対してもテキストの貼り付けしてくれる

です。

なので、テキストエディターが何であろうと同じように機能してくれます。

私の場合は、プログラミングに限らず個人的によくタイプすることの多いもの、

例えばメールのテンプレ文章やら、

自社の住所や、電話番号、メールアドレスなども登録しています。

具体的に私の登録しているスニペットでの操作例を書きますと、

「address # medical」と入力すると、その文字が瞬時に

「東京都港区赤坂二丁目23-1 アークヒルズフロントタワーRoP 902号」と弊社メディカルデザインの住所に変換されるようにしています。

この便利なところは、
わざわざ Dash を呼び出して操作を行うわけではなく、

Dash が起動していれば、「address # medical」とタイプするだけ、
というところです。

また、その登録しているスニペットを「タグ付け」しておけるので、

Dash の画面から「php」やら「css」「javascript」など、言語ごとに整理できるのもとても便利です。

多言語のドキュメントを検索

Dash は スニペット機能だけでなく、複数言語ドキュメントの検索を一括でおこなえる機能も兼ね備えています。

自分が使う言語のドキュメントをローカルにダウンロードでき、

それらを対象に、ドキュメント内を文字列検索してくれるので、

うろ覚えの関数のドキュメントを高速に参照することができるのがありがたいです。

私は、テキストエディターは SublimeText がメインですが、

「文字を選択してショートカット一発で、その選択文字の Dash 検索結果を一発で呼び出す」プラグインが、とんでもなく便利なのです。

うろ覚えのあの関数の、ああ、こいつの引数はどういう順番だったけ、など、

それらをいかに早く呼び出して正確に書けるか、

作業中何度もやる短いアクションをいかに素早くできるかはけっこう大きいと思います。

Dash をご存じなかった Mac ユーザーのかたはぜひお試しを!

【WordPress】テキストエディタのクイックタグをカスタマイズする。

システム部のヒライです。

WordPressを利用されている皆様、記事投稿の際にテキストエディタとビジュアルエディタ、どちらをお使いでしょうか?

慣れている方はテキストエディタを利用されているのかなと漠然とイメージしておりますが、
本記事はエディタに備わっているクイックタグの種類を増やして便利にしちゃおうという趣旨となります。

クイックタグとは

クイックタグはテキストエディタ上部に配置されているボタンです。
クリックすることで対応したhtmlタグが挿入されます。

テキストエディタ1

複数名で記事投稿をしている場合でも、似たようなhtmlタグ構成(記事の構成)に出来ますし、
htmlに慣れていない方でもボタンをポチっとするだけで淡々とhtmlタグを使える代物です。

自前のクイックタグを追加する

せっかくなのでhtmlの要素にclassを付けたタグを表示したいと思います。
まずはWordPress上で使っているcssファイル(style.css等)にスタイルを書き込みます。

[php]
/*太字*/
.area_gray{
background: #eeeeee;
}

/*赤色*/
.red{
color: #ff0000;
}
[/php]

次に、functions.phpに以下を記入します。
[php]
<?php
function addMyQuicktags(){
?>
<script type="text/javascript">
QTags.addButton(‘back_gray’,’背景(グレー)’,'<div class="area_gray">’,'</div>’);
QTags.addButton(‘text_red’,’文字色(赤)’,'<span class="text_red">’,'</span>’);
</script>
<?php
}
add_action(‘admin_print_footer_scripts’,’addMyQuicktags’);
?>
[/php]

QTags.addButton()内にいろいろと引数を設定するのですが、大切なのは以下です。
[php]
// 左から順に任意のID、ラベル(表示される名前)、開始タグ、終了タグ
QTags.addButton(‘back_gray’,’背景(グレー)’,'<div class="area_bray">’,'</div>’);
[/php]
※他の引数も設定すると表示順を変更したりも出来ます。
※詳細→クイックタグAPI
これだけ設定しておけばOKなので、保存して投稿画面を表示してみましょう。

投稿画面を表示してみる。

テキストエディタ2

追加されたクイックタグとポチポチしてみます。

テキストエディタ3

設定したタグがバッチリ表示されていますね。これで完了です。
これで記事投稿をすれば、最初に設定したcssの通りに表示がなされるという寸法です。

この様によく使うhtmlタグや、場合によっては文字列等をクイックタグ化しておけば、
記事投稿をよりスムーズに行うことが出来るのではないでしょうか。

【WordPress】管理画面だけHTTPS接続にする方法

システム部の鈴木です。

前回の投稿からかなり間が空いてしまいましたが、その間も色々とWordPressを活用した案件を担当させていただきました。
その中で対応したものの一つになりますが、管理画面だけHTTPS接続にする方法をご紹介したいと思います。

最近、特に昨年辺りからは常時SSL接続がデファクトになるなどと言われていますが
レンタルサーバを使っている場合などは特に、その対応が難しい場合があります。

例えば

  1. 共用のSSLが使えるけどドメインが変わってしまう
  2. HTTP接続とHTTPS接続でweb公開領域(ドキュメントルート)が分かれている

など、管理画面ではSSLを使いたいけど使えないケースがあると思います。

そこで調べたところ、日本語の情報はあまり無かったのですが
やはり海外には同じ問題を抱えている人がいたようでした。

HTTPS Domain Alias

[browser-shot url=”https://ja.wordpress.org/plugins/https-domain-alias/” width=”600″ height=”450″ href=”https://ja.wordpress.org/plugins/https-domain-alias/”]

使い方は非常に簡単です。

  1. 他のプラグインと同様にプラグインディレクトリに設置
  2. wp-config.php に以下の2行を追加します

[php]
define(‘FORCE_SSL_ADMIN’, true);
define(‘HTTPS_DOMAIN_ALIAS’, ‘example.org’);
[/php]

2行目のドメイン部分は、SSL接続時のドメインを指定します。
httpのときとドメインが変わってもOKです。

たったこれだけ。非常にシンプルで便利です。
今のところWP 4.4系でのみ試していますがバッチリ機能しています。

 

HTTPS接続だけweb公開領域が別になっていて、管理画面だけHTTPSにしたいという場合は
WordPressのインストールディレクトリのエイリアスかシンボリックリンクでも設定してあげればフロント画面はHTTP接続、管理画面側だけはHTTPS接続にする、といった事も可能です。

 

WebGLの時代が来てる(?)

Flash?まぁ…あいつはいいやつだったよ

よくゲーム系の案件をやらせてもらえることの多い渋谷です。

先日、以前Flashで作成した3Dのすごろく(http://ja-dosanko.jp/agri/sugoroku/index.php)をスマホに対応できませんか?という質問をいただいて、ハタと気づいてみればFlashが完全に死んでしまったのでブラウザで3Dをするなら、もうWebGLでやるしかない時代になっていました。

時代が来たと言っても、IE9が未対応でIE11では動作が重いということもあって、最低でもIE9が退場してくれないと「WebGLおすすめです!」と言い出しにくい状況ではありますが。

Internet Explorer 10まで ×
Internet Explorer 11
Microsoft Edge
Google Chrome
Mozilla Firefox
Safari

WebGLで何ができるのか

OpenGL ES 2.0の機能を使ってブラウザに3DCGを描画することができます。
簡単に言うとスマホ用CGとだいたい同じ程度のものを表示できる感じです。

どうやって表示させる?

直でWebGLを叩いてもいいのですが、面倒なコードを山ほど書かなくてはいけないので、そういった作業を簡略化して簡単に3Dを表示してくれるライブラリを使うのが一般的なようです。
有名どころはthree.jsでしょうか?

ちょっとthree.js触って手持ちのモデルを表示させてみます。

three

……ファイルが読み込めないなどのトラブルが多発して、ようやく表示できたのがこれだよ!
法線のフォーマットがおかしくなっているのか正常にライティングが行われてません!

メジャーなファイルフォーマットだと、逆にソフトごとに方言が発生したり、開発元が毎年フォーマットを改定するという所業のせいで、よほど頻繁に更新されるライブラリでないかぎり避けられない問題だったりします。

サンプルプログラムを書き換えるなり、古いフォーマットで書き出し直したりすればうまくいくのかもしれませんが、プログラマは車輪の再開発が大好きなのでパーサーあたりから作りたくなってしまって危険なので泣く泣く諦めます!くやしい!

別の(もっと簡単そうな)方法

最近はやりのゲームを作るためのソフトのいくつかがWebGLに書き出す機能を持っているのでそれに頼りましょう…

代表的なところではUnityUnrealEngineが挙げられますが、渋谷がUnity派のため、ここではUnityでのWebGL制作事例を取り上げたいと思います。

(次回UnityでWebGL編に続く)

2017年度から全国の大病院に実績の開示義務が求められます。

2016年2月4日の日本経済新聞の朝刊一面トップに気になる報道がありました。

厚生労働省は2017年度から全国の大病院に治療実績の公表を求めたようです。
年齢や進行度別の患者数の他、診療科や病院ごとの平均入院日数をホームページで発表しなければ病院が受け取る診療報酬を減らすとのこと。

 

PC

 

目的は?

  • 患者が病院の得意分野を比べて受診先を選びやすくするため
  • 病院の競争を促すことで医療の質の向上と効率化を促すため

対象病院は?

  • 公的医療保険から定額の報酬を受け取る病院(DPC病院)で大半は大学病院など重症患者が多い大病院。
  • 全国に約1,600箇所。

公表項目は?

  • 年代別の入院患者数
  • 5大がんのステージ別患者数
  • 診療科別・手術別の入院日数(術前・術後)
  • 診療科別の症例数
  • 脳梗塞のタイプ別患者数
  • 肺炎の重度別患者数
  • その他(血液せい肝臓機能障害など)

患者の誤解を回避する措置は?

  • 重症患者を積極的に受け入れる病院は入院日数が長くなりがちなため、実績に対する解説をつける。
  • 7項目の基準を統一し、透明性を出す。

厚生労働省は今年8月にも公表制度の枠組みを決めて、10月をめどに各病院に15年度分を発表してもらうようです。

そして公表しない病院の診療報酬は17年度から減らし、公表する病院の報酬増額に回すそうです。

新聞を読んで

日頃、病院のホームページを運営していて、患者は以外とホームページを見ていることを感じます。
保守を行っている病院のアクセス数を見ると、多いところで月に閲覧ページ数…約20万ページ、訪問数…約7万回という非常に大きな結果も残っています。(2015年8月)

現状でも患者が病院を選ぶ際にホームページを参考にしていることが伺えるので、実績を開示し、患者に病院の選択を促すようになれば、さらにホームページへの注目度が増すのではないでしょうか。