アルファサードでも共催しています アクセシビリティやるぞ!夏祭り2 ~俺たちにテストさせろスペシャル~ の開催中で、紀尾井町の Yahoo! Japanさんにお伺いしています。夏祭りってのにもう9月も末で、どういうセンスなんだろうって思わなくもないですが、秋風が吹いて無くてとりあえずよかったです。

ちなみに「俺たちにテストさせろスペシャル」ってイベントのサブタイトルは私のアイデアなんですぜ!

受付で「インターネットの歴史(History of the Internet)」の巻物いただきました!

インターネットの歴史 巻物の写真

今日は、パネルディスカッションに出させてもらうほか、関連会社のラボさんと一緒に進めている僕のブログ(つまりこのブログ)のリーダーアプリを実際に触ってもらうという企画もあります。

アプリ「Junnama Online」は Movable Type の Data APIを活用したブログのリーダーアプリ(iOS版)で、現在 Test Fright中です。

以下、アプリのキャプチャを数点

メイン画面 - 記事の一覧 記事詳細画面 シェア画面 検索画面


さて、結果は如何に?

1年半ぶりくらいなので、結構忘れている。メモ大切。

Apple Developer サイト

  1. キーチェーンアクセス.appを起動 > キーチェーンアクセスメニュー > 証明書アシスタント > 認証局に証明書を要求 (証明書は「ディスクに保存」)
  2. Apple の Developerサイトから「Account」へ進む
  3. 「Certificates, Identifiers & Profiles」(真ん中のアイコン) へ進む
  4. 「Mac App Distribution」 を選択
  5. 1.で作成したファイルをアップロードすると証明書が生成されるので、ダウンロードして保存
  6. 続いてMac Installer Distribution を選択し、5.を繰り返す
  7. ダウンロードした証明書を開いてキーチェーンアクセスに登録する
  8. キーチェーンアクセスの画面で名前を確認しておく(例「3rd Party Mac Developer Installer: Alfasado Inc. (XXXXXXXXXX)」「3rd Party Mac Developer Installer: Alfasado Inc. (XXXXXXXXXX)」) 前者はアプリに、後者はインストールパッケージに付与するもの

証明書の種類を選択

productname.entitlementsファイル(名前はなんでも良い)を用意する。最低限「com.apple.security.app-sandbox」に「true」の指定が必要。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
</dict>
</plist>

ターミナルでcodesignコマンドでアプリに署名を付け、productbuildコマンドでインストールパッケージに署名を付ける。

sudo codesign -f -v -s "3rd Party Mac Developer Application: Alfasado Inc. (XXXXXXXXXX)" --entitlement /path/to/productname.entitlements "/Applications/ProductName.app"
sudo productbuild --component /Applications/ProductName.app --sign "3rd Party Mac Developer Installer: Alfasado Inc. (XXXXXXXXXX)" --product "/Applications/ProductName.app/Contents/info.plist" ProductName.pkg

最後にApplication LoaderでAppleへの登録を行う。

# この記事のタイトルも迷ったわ...

昨日の Blog Post なんですが、PowerCMSブログでリモートワークを取り上げたポストをウチの社員が投稿した時に色々考えていて、ちょっとした空き時間にスマホで「逆にオフィスで働くことのメリットは何か」をメモ書きしていたのが元原稿になっています。最近メモ書きは Markdownで書くようにしているので、少しだけ推敲してアップしようと思った時に実は少しだけ悩みまして。

テレビ会議を利用した社内勉強会の風景

記事のタイトルを付けるのに迷った話

私の周りでは、業界柄というか、リモートワーク賛成派が多いように感じます。コワーキングスペースで仕事したり、Facebookつながりではコワーキングスペースを経営している方やコワーキングスペースの社員の方もいらっしゃる。昨日も書いた通りパートナー企業のシックス・アパートさんは「SAWS(サウス)」と称して100%リモートワークという試みを実践されています。

シックス・アパートの全社員は、全ての勤務日において、それぞれのライフスタイルや住んでいる場所、その日の業務内容にあわせて自由な場所で働くことができます。

昨日の記事は、リモートワークのメリットは肯定しつつ、オフィスで一緒に働くことのメリットもやっぱり大きいよね、ということが主題なわけですが、タイトルの付け方一つで印象が大きく変わるように思い、迷ったのです。

脊髄反射されそうな(想像に過ぎませんが)タイトルは例えば以下のようなものです。

  • それでもリモートワークがダメな10の理由
  • リモートワークよりもオフィスで働くことが優れている10の理由

このようなタイトルを付けて、冒頭の「リモートワークのメリットは肯定しつつ」の部分を削除してポストしたら(しかも、それこそシックス・アパートさんのリリースを引用したりして「それでもリモートワークがダメな10の理由」とかタイトル付けたりしようものなら)、リモートワーク肯定派の皆さんの反感を買うのは目に見えています。実際はそんなこと(リモートワークを否定する気持ち)はないにもかかわらず。

ただ、書いていることは(私は)そんなにおかしなことではないと思っているので、もしSNSで反対の意を表明される一方で、賛成・共感の人も出てくるように思います。

思わずツッコミを入れたくなる記事はBUZZりやすいのだと思う

見出しのとおりですね。思わずツッコミを入れたくなる記事はBUZZりやすいのだと思うし、それ系のメディアのライター(編集?)の方はそのあたりを意識しているように思います。私の場合、身元バレ、会社経営者の個人ブログなので、逆に極端な反応があるほうがリスクだと思い、「リモートワーク全盛? 時代にオフィスで仕事をするということ」というタイトルに落ち着きました。何かと気を遣う世の中になったものです。

# 俺も丸くなったものだ。

全盛ってのは言い過ぎかと思いますが、IT、webの業界では結構進んでいる印象があります。パートナー企業のシックス・アパートさんもこんなリリースをしておられました。

アルファサード株式会社でも「週一回までの在宅勤務選択可」制度を導入してこんな記事上げてるわけですが、私自身リモートワーク取り入れるメリット、働く人自身のメリットもよく理解しているしIT、webの業界なわけで「職場でなくても仕事ができる」と思ってます。

  • 多様な働き方を受け入れることで、従来戦力化できなかった人材の活用
  • 従業員満足度の向上による離職率の低下、リクルーティング力の向上
  • 各種コストの削減、有効な時間利用

世の中的にもそういう流れになっていっているようにも感じるのですが、職場で一緒に働くメリットももちろん数多くあるので、 ここでは逆に(現在のところ)リモートワークでは難しいと思われることを少しメモしておきます。

東京オフィスの風景

逆に、オンラインコラボレーションツールではことあたりのことが次の課題と言えるのかもしれません。

メンバーの状態に気付くこと

ま、これに尽きると思います。勿論、性善説というかリモートワークしてたらサボってる奴もおるかもしれんってそんなことはたいして気にしない訳ですが(気にしないというか、管理の仕方やツールの活用、オンラインでのコミュニケーションの工夫などでカバー可能)、単にその場にいることで気がつくことって色々あるものです。

電話のやり取りを見ていて気付くこと

例えば電話。電話相手の声まで聞こえる訳ではないですが、対応しているメンバーの話ぶりや話す内容から「ひょっとしてクレームに?」とか、聞き慣れない先からの電話をつないだりした時に(自分が繋がなくても「Aさん、〇〇社の誰々さんからお電話です」みたいなのを聞いている時に、色々気付くことがあります。同じ相手から頻繁に電話かかってきてて、しかもそれが長いとかあれば、当たり前に仕事の進捗に問題が出そうなことに気付きます。

メンタルや健康状態についての気付きを得ること

元気がないとか顔色が悪いなんてのは当然として、遅れてくるとか、会話のトーンが違うとか覇気がないとかそういうのは文字のコミュニケーションだけではつかみきれません。やっぱりフェイストゥフェイスってバカにできないな、と。

行動、画面を観ること、話しかけることで気付きを得ること

職種にもよるけど、どんな管理画面作ってるのとか、今何をやってるのかとか、その人のディスプレイ見てたらよくわかります。当たり前ですね。でも、思ったより深いところがわかるんですね。同じ回答でも、顔見てて「あ、これわかってないな」「納得してないな」とかね。

エンジニアがエディタ画面開きっぱなしで難しい顔してしばらく指動いてなかったら「どっか引っかかってる?」って声をかけることができます。報告受けてるものと、何か違うものを作りつつあったりして、早めに気付いて会話すれば、手戻りを防ぐこともできます。

会議やミーティングを観ることでの気付きを得ること

これはもう、会議の質や無用な長さ、無駄な議論などを改善する機会になります。チャットミーティングに出ればええやん、てのも勿論ありますけど、「社長呼ぶまでもないよな」みたいなミーティングには当然呼ばれない訳で、そういうのが職場で対面で行われていれば、少し注意して観ることで気付くこと、結構あります。

テレビ会議システムは良いものを使うとメリットが大きい

両拠点のハード込みとなると総額で100万円を超えるということで、さすがにどうかと思いましたが、お試しで実機をお借りすることができ数回試してみました。Skype や Chromebox と比べると明らかに音切れがなく、最終的にリース契約で導入を決めました。

会議システム

いや、本当にこれでストレスなくなりました。値段の高いものはやはりそれなりの価値を提供しているものなんだな、と実感しているのでした。

9月3日(土) メビック扇町で開催された CMS大阪夏祭り2016の懇親会で ColorTester について Lightning Talk してきました。

CMS大阪夏祭り2016懇親会で Lightning Talk する筆者の写真

[Photo by NExT-Season]

スライドに補足入れてますが、JIS X8341-3(WCAG2.0)において、ロゴタイプにはコントラストの要件はありません。

1.4.3 最低限のコントラスト: テキスト及び画像化された文字の視覚的な表現には、少なくとも 4.5:1 のコントラスト比をもたせる。ただし、次の場合は除く: (レベルAA) … ロゴタイプ: ロゴ又はブランド名の一部である文字には、コントラストの要件はない。

なので、このLTについては、各CMSのロゴのコントラスを論じるのが目的ではなく、画像の中の主たる文字の色についてどのように推察しているのかのロジックを紹介するものです。過去にもこのブログで取り上げたことがあります。

先日、Movable Type6.3がリリースされました。

一番の変更点はダイナミックパブリッシングのPHP7サポートですが、内部的には Smartyのバージョンが2系から3系に変更になっています(PowerCMS/DynamicMTMLの対応は少々お待ち下さい)。

PHP 7 をサポート

PHP 7 を正式にサポートしました。PHP 7 は、PHP 5系と比べてもパフォーマンスの向上が期待できます。

Smarty 3.1 へアップデート

PHP 7 への対応に伴い、Smarty 2 から Smarty 3 へのアップデートされました。

プラグイン開発者へ

ダイナミック・パブリッシングに対応したプラグインについて、直接 Smarty を操作していないかぎりにおいて変更の必要は無いものと想定していますが、動作確認等よろしくお願いいたします。

※(再度) PowerCMS/DynamicMTMLの対応は少々お待ち下さい

MTViewerとは、$ctx であり Smartyである

何のことか分かる人にしかわからないアレゲな書き方ですが、つまるところMTにおけるダイナミック・パブリッシングとはMTのテンプレートをSmartyテンプレートにコンバートしてビルドするという仕組みになっています。実体は mt/php/lib/MTViewer.php です。

MTViewer.phpのコード

この MTViewerクラスの fetchメソッドがテンプレートをビルドするコードなのですが、MTタグをPHPの中で動的にビルドする方法について備忘録がてらメモしておきます。ちなみに、元がSmartyですので、これらはSmartyのテンプレートを渡しても動作します。MTテンプレートを指定した場合、mt/php/lib/prefilter.mt_to_smarty.php がMTのテンプレートをSmartyのテンプレートに変換してからビルドされます。というわけでMTViewerクラスの fetchメソッドにはMTタグをそのまま渡せるのです。

MTテンプレートをPHPコードの中でビルドする

念のためですが、$ctx の初期化については下記の記事を参照ください。

template_id 指定でビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$str = $ctx->fetch("mt:123");

テンプレート名(template_name) 指定でビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$str = $ctx->fetch("mt:テンプレート名");

テンプレート指定のビルドについては mt/php/lib/resource.mt.php で定義されています(Smartyのカスタムリソース)。 Smartyのカスタムリソースの作り方は以下のページに。カスタムリソースを作成すれば、例えば S3 に置いたMTテンプレートを指定してビルド、とかまぁ色々できるわけですね。

MTテンプレート文字列指定でビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$str = $ctx->fetch("eval:<mt:Date>");

ファイルパス指定でビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$str = $ctx->fetch("file:/path/to/tmpl.tpl");

テンプレート変数をセットしてビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$ctx->__stash[ 'vars' ][ 'foo' ] = 'bar';
$str = $ctx->fetch('eval:<mt:Var name="foo">');

記事コンテキストをセットしてビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$entry = $mt->db()->fetch_entry( 1 );
$ctx->stash( 'entry', $entry );
$str = $ctx->fetch('eval:<mt:EntryTitle>');

この辺りを理解しておくと、PHPでサイトを拡張していく際にMTテンプレートが活用できるようになります。例えばPHPで作成したフォームメールのテンプレートにMTタグを使ったり。ということでMT6.3の Tips でした。

私の会社(アルファサード株式会社)では、第13期から電子公告を始めました(ちゃんと定款変更もしました)。

電子公告を始めた経緯というか考えなどはまた別の機会に書こうと思いますが、ここでは表題の通り貸借対照表のマークアップを取り上げます。

「貸借対照表(B/S)」こそ「複雑なデータテーブル」ですね。

アクセシビリティ・サポーテッド(AS)情報:H43

見解としては「要注意(スクリーンリーダーによるサポートが十分とはいえない。)」

id属性とheaders属性を使わないですむように、できるかぎり単純な構造にしたほうがよい。

ということで、表を3分割することも検討したのですが、流動資産と流動比率を対比してみたい(流動比率とかを見たい)とかだと同じ表のほうがいいだろうかとか、でもそうなると空のセルをつくってセルの位置を調整したほうがいいんだろうかとか。そもそも経営指標って様々な切り口があるので「何と何を並べるのがいいのか」など、決算公告ってPDFで提供してる会社が多いですが「貸借対照表の公開について」みたいなのを国(法務省)や東証がガイドラインを示すとかしてもいいんじゃないかと思ったりした次第です。

資産の部、負債の部、資本の部を別のテーブルに分割する方法も検討した

現在のところ結論があるわけではないですが、結局は idとheaders属性によるひも付けを選択しました。ご意見などありましたらいただけると嬉しいです。今後のユーザーエージェントの対応に期待します。

ということで、以下マークアップ。

<table>
<caption>貸借対照表</caption>
<tbody>
<tr>
    <th scope="col" colspan="2" id="assets"><strong>資産の部</strong></th>
    <th scope="col" colspan="2" id="liabilities"><strong>負債の部</strong></th>
</tr>
<tr>
    <th id="asset-1">現金・預金合計</th>
    <td headers="assets asset-1">254,325,832</td>
    <th id="liability-1">仕入債務合計</th>
    <td headers="liabilities liability-1">5,768,438</td>
</tr>
<tr>
    <th id="asset-2">売上債権合計</th>
    <td headers="assets asset-2">37,361,649</td>
    <th id="liability-2">他流動負債合計</th>
    <td headers="liabilities liability-2">70,318,782</td>
</tr>
<tr>
    <th id="asset-3">棚卸資産合計</th>
    <td headers="assets asset-3">534,600</td>
    <th id="liability-3">流動負債合計</th>
    <td headers="liabilities liability-3">76,087,220</td>
</tr>
<tr>
    <th id="asset-4">他流動資産合計</th>
    <td headers="assets asset-4">523,689</td>
    <th id="liability-4">固定負債合計</th>
    <td headers="liabilities liability-4">84,331,000</td>
</tr>
<tr>
    <th id="asset-5">流動資産合計</th>
    <td headers="assets asset-5">292,745,770 </td>
    <th id="liability-5"><strong>負債合計</strong></th>
    <td headers="liabilities liability-5">160,418,220</td>
</tr>
<tr>
    <th id="asset-6">有形固定資産計</th>
    <td headers="assets asset-6">36,334,934</td>
    <th scope="col" colspan="2" id="capital"><strong>資本の部</strong></th>
</tr>
<tr>
    <th id="liability-6">無形固定資産計</th>
    <td headers="liabilities liability-6">7,163,609</td>
    <th id="capital-1">資本金合計</th>
    <td headers="capital capital-1">10,000,000</td>
</tr>
<tr>
    <th id="asset-7">投資その他の資産合計</th>
    <td headers="assets asset-7">18,205,477</td>
    <th id="capital-2">利益剰余金合計</th>
    <td headers="capital capital-2">184,031,570</td>
</tr>
<tr>
    <th id="asset-8">固定資産合計</th>
    <td headers="assets asset-8">61,704,020</td>
    <th id="capital-3">純資産合計</th>
    <td headers="capital capital-3">194,031,570</td>
</tr>
<tr>
    <th id="capital-4"><strong>資産合計</strong></th>
    <td headers="capital capital-4">354,449,790</td>
    <th id="assets-capital"><strong>負債・純資産合計</strong></th>
    <td headers="assets assets-capital">354,449,790</td>
</tr>
</tbody>
</table>

CMS大阪夏祭り2016 にて「オーサリングツールとしてのCMSとWebアクセシビリティ」というタイトルのセッションを持たせていただくことになりました。地元大阪で話す機会が最近あまりなかったので、ほぼ1年ぶりですね。

CMS大阪夏祭りビジュアル

去年も「祭り」のつくイベントにいくつか参加させていただいてお話させていただいたのですが、今年もお話します。お祭り男と呼んでください!

会社設立からもう13年、ずっとwebアクセシビリティのことに取り組んでいたんですけど、CMSを事業の中心に据えてからまもなく10年、ATAG(Authoring Tool Accessibility Guidelines (ATAG)) 2.0についても自分自身、再度見直す機会になればと思っています。

また、少し前になりますが、AccSellのポッドキャストに呼んでいただきまして、ツール屋目線でのwebアクセシビリティ語りをさせていただく機会をいただきました。参加いただく方は時間があれば(早送りででも)ざっとお聞きいただければバックグラウンドなどわかっていただけるかもしれません(長いですがw)。

都知事選は行きませんでいた。てか、都知事選への選挙権がないので。法人都民税は払ってんですけどね。東京の都政ってのは東京だけで済まない問題ですから、これから東京都政が良くなって景気が上向いてくれることを願っています。

さて、ログインが必要なページをシェアするのはあまり好みではないのですが。

「倒産」、実は減らず 25年ぶり低水準でも…:日本経済新聞

「ここまで倒産が減ったのは25年ぶりのことだ」。安倍晋三首相は6月1日の記者会見で胸を張った。確かに2015年の倒産は8812件(東京商工リサーチ調べ)と、1990年以来の水準に減少した。今年上半期も改善傾向が続き、中小企業を襲った淘汰の嵐はやみつつあるようにもみえる。しかし、この数字から浮かび上がるのは一つの断面にすぎない。

(中略)

東京商工リサーチの集計では、休廃業や解散といった形で15年に事業の継続を断念した企業は2万6699件。00年と比べると6割増え、倒産件数の3倍に達する。後継者が見つからずに廃業する例もあるとはいえ、法的整理から私的整理などへ企業の末路は移り変わっているようにみえる。

理由の一つとして「金融円滑化法」があるようです。金融機関には金融機関の「貸せない理由」があるわけで、単に返済猶予に応じたところで抜本的な収益改善を図らなければ問題を先延ばしにしているに過ぎません。帝国データバンクや東京商工リサーチのレポートを見るたびに感じていた違和感(そんなに景気が良くなってんだろうかという違和感)ですが、少しだけ腑に落ちました。

私自身、今の商売はともかく、若いころに事業がうまく行かず、それでも借金して引っ張って傷を大きくしてしまった経験があります。その時の経験が「資金繰りに追われだしたら、中小企業の経営者はまともに経営なんてできない」という現在の考えにつながっているわけですが、大切なのは返済を猶予してもらうことではなく、なぜこうなったのか、何を改善したら窮地を脱することができるのかを考えることです。

ま、金融機関担当者の多くが池井戸潤の小説「陸王」にでてくる銀行員 坂本太郎みたいな人ならいいんでしょうけどね(珍しく銀行員が善人?に描かれていました。足袋作り百年の老舗が、ランニングシューズに挑むストーリーです)。

ま、大本営発表は鵜呑みにせず、景気のせいにもせず、精進あるのみです。中小企業の経営ってもんは。

既にPowerCMSでやっているものなのですが、再整理の意味で、メモ(てか、ブログサボってたのでリハビリがてらw)。

config.yaml

permissions:
    system.access_cms:
        label: Can Access CMS
        order: 2000
    system.administer:
        inherit_from:
            - system.access_cms

これで、ユーザーの編集画面にシステム権限「Can Access CMS(CMSへのアクセス)」が追加して表示されます。system.administer... 以下を追加しているので、「システム管理者」にチェックを入れると「Can Access CMS(CMSへのアクセス)」にもチェックが入ります。

管理画面のシステム権限設定エリア

ただ、このまま「保存」しても「MT::Authorに can_access_cms メソッドがない」というエラーが出ます。社内で聞いてみたところ「アクセサを定義する必要があります。」とのこと。

config.yaml

callbacks:
    init_app: $myplugin::MyPlugin::Plugin::_cb_init_app

MyPlugin::Plugin::_cb_init_app

sub _cb_init_app {
    require MT::Author;
    *MT::Author::can_access_cms = sub {
        my $author = shift;
        if ( @_ ) {
            $author->permissions(0)->can_access_cms( @_ );
        }
        else {
            $author->is_superuser()
                || $author->permissions(0)->can_access_cms( @_ );
        }
    };
}

これで、あとはMT側がよしなに処理してくれます。もちろん、この権限の有無による振る舞いの分岐はそれぞれの処理に実装する必要があります。

Facebook

Twitter

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

最近のコメント

Powered by Movable Type 6.2.6