著者アーカイブ takahashi

takahashi 著者:takahashi

[Google I/O] Android P のナビゲーションボタンが刷新されるらしい!

先日、Google公式の定期発表会 “Google I/O 2018″が開催されました。
このGoogle I/O内で発表されたGoogleの新サービスや新機能を各IT系メディアが報じています。

その中で、個人的に気になったものを取り上げていきたいと思います。
今回はこちら。

Androidのナビゲーションボタンが変更。iPhoneXのような操作性に

今やすっかりおなじみとなったAndroidナビゲーションボタン(ホームや戻る、アプリ一覧の表示など)がAndroidの新バージョンであるAndroid P(仮称)で刷新されることになったようです。

こちらが新しいAndroid P の画面。
ホームボタンの代わりに、何やら楕円形のバーが表示されています。

この形、どこかで見たことがあるという方も多いでしょう。


http://www.appps.jp/274114/より

そう、iPhoneXのホームボタン(?)とそっくりですよね。

iPhone Xの操作方法は?一から十までまったく違う! – カミアプ
iPhoneXはボタンを押す代わりに、この下のバーの部分を上にスワイプすることでホーム画面に戻ることができるようになっています。


http://www.appps.jp/274114/より

実は今回発表されたAndroid Pのナビゲーションボタンも、この動作を一部取り入れています。

Android Pの場合は上にスワイプすることでアプリ一覧が表示され、更にもう一度上にスワイプするとアプリドロワーが表示されます。ホームに戻る場合はこの楕円のアイコンをタップします。この操作は今までと同じですね。
横にスワイプするとアプリを簡単に切り替えることができ、アプリのマルチタスク機能がより使いやすくなっています。いままでは分かれていたホームボタンとアプリ切り替えボタンが統合され、より洗練されたような印象です。

幾つかの記事ではiPhoneXのパクリだという批評がされている記事もいくつか見かけますが、もともとiOSもAndroidも互いのいいところをパクリあっているところはあるので、さほど問題にならないのではないのかな、というのが個人的な意見です。

操作もより直感的になり、陳腐化していた操作性に新鮮さが戻ってきた気がします。

他にもいろいろ改善がされているということなので、Android Pのリリースが楽しみですね。

takahashi 著者:takahashi

Windows版Twitterアプリが久々の更新

先日、TwitterのWindows向けアプリが超久々にアップデートされました。

Windows 10向け「Twitter」アプリが刷新、“Progressive Web App”として生まれ変わる – 窓の社

Twitter for Windowsはここ最近まったくといっていいほどアップデートされておらず、一部新機能も利用できない状況でした。
個人的にはMac版Twitterクライアントと同様に廃止になるのかな…と思っていたのですが、先日突如としてアップデートが降ってきました。

上記の記事にも書かれていますが、このアップデーはおそらくWindows10にPWAの機能が実装されたことによるものだと考えられます。

Windows 10における“Progressive Web App(PWA)”は、Webアプリをネイティブアプリのように使えるよう、UWPアプリとしてパッケージ化したものと言える。一般のUWPアプリと同様、「ストア」アプリからインストールし、[スタート]画面やタスクバーにピン留めして起動可能で、独立したウィンドウをもつが、実質は「Microsoft Edge」上でWeb版“Twitter”を表示しているに過ぎない。

つまり、一見WindowsネイティブなUWPアプリに見えるわけですが、実際はただアプリ内でEdgeブラウザを呼び出して特定のサイトを表示している形になっているようです。
かといってブラウザ版と同じというわけではなく、アプリならではのメリット(UWPアプリの”共有”機能や通知など)も享受できるという仕組みです。所謂AndroidやiOSアプリの”ハイブリッドアプリ”と同じような仕組みです。

恐らく、開発コストの少ないWebベースのアプリであれば、公開し続けられるだろうという判断になったのだと思います。

ただ、Webベースであればアプリを公開できるということなら、既存の仕組みでElectronなどもありますし、macやlinux版もリリースしてくれればよかったのに、と思わなくもありません。

いくらWebを表示しているだけとはいえ、ブラウザを開くことなくワンクリックでアクセスできるかどうかでかなり使い勝手が変わってきます。
Windows以外のデスクトップOS用のクライアントも復活してほしいですね。

Twitter – Microsoft Store

takahashi 著者:takahashi

Windows NT 互換OSを目指すフリーなOS「React OS」

今まで、LinspireやZorin OSのような”Windowsライク”を謳うフリーOSというのが幾つか出ていたのですが、どのOSも見た目や操作性をのみWindowsに似せている物が多く、実際にWindowsの機能やアプリケーションについては”Wine”を使う以外で動作できるOSはありませんでした。
また、Wineを用いても、現状互換性が高いとはあまり言えない印象で、”Wineで動いたらラッキー”という状況でした。

そんな中、先日初めて、完全なWindows互換を目指すフリーOS の存在を初めて知りました。

その名も、ReactOS。

カーネルもプロジェクト内で設計されているようで、今までのLinuxカーネルをベースとした”Windows風OS”とは一線を画しており、UIもデフォルトではWindowsの”クラシックスタイル”とほぼ同様になっています。

見た目だけでなく、Win32アプリケーションやドライバももLinux上でWine経由で起動したときよりも多くのアプリが動作できるようです。

今までで試した中では、Windows用のVirtualBox Guest Additionsバイナリや、VirtioドライバのWindows版も問題なく動作しています。
ただし、あくまでWindowsNT 5または6をクローンしようとしているため、比較的新しいWindows向けアプリは動かないものも多いかもしれません。

一方で、NTFSのサポートと並行して、Linux系ファイルシステムのサポートも行っていたりと、オープンソースOSだからこそともいえるメリットもあり、今後も目が離せないプロジェクトです。

まだ動かないアプリやドライバも多いですが、現在ベータ版であるため実用的ではないものの現時点でも完成度はそこそこ高く、触っていると面白いです。

無料の仮想環境で簡単に動作しますので、興味のある方は是非触ってみてはいかがでしょうか。

ReactOS
ReactOS日本語版 – OSDN

takahashi 著者:takahashi

ついにTimeLine機能が実装!Redstone 4 ことWindows10 April 2018 Update 配信開始!

以前から”Redstone 4″という名前で予告されていたWindows10のメジャーアップデート “Windows10 April 2018 Update”がついにが配信開始になりました。

「Windows 10」の「April 2018 Update」、提供開始 - CNET Japan

今回のアップデートでは、前回正式版への実装が見送られたTimeLine機能がついに実装されたようです!

動画を見ていただければどんな機能か大体わかるかと思いますが、WindowsPCやスマートフォンなどで前に行っていた操作履歴を、時間を遡って確認し、任意の操作を復元してそのまま継続できるという機能です。

他にも、UIの改良や、コントロールパネルの一部項目の”設定アプリ”への統合など、一部改良されている部分もあるということなので、メジャーアップデートを適用可能な環境を使用している方はぜひ適用してみてはいかがでしょうか。

なお、適用方法は下記サイトで解説されています。

「Windows 10 更新アシスタント」を使用して「Windows 10 April 2018 Update」にアップグレードする方法 - ネットセキュリティブログ

takahashi 著者:takahashi

UWP版iTunes配信開始

4/27からMicrosoft Storeで”iTunes”が入手可能になったようです。

Appleの「iTunes」アプリ、ついにMicrosoft Storeに降臨 – ITMedia News

最近になってWindowsに Windows10 S というエディションが追加されましたがこのエディションでは従来のWindowsアプリが動作せず、UWP、いわゆるストアアプリしか動作しないため、iTunesなども、従来のようにインストーラーからインストールすることができません。

今回、ストア版のiTUnesが出たことで、Windows10 S でもiTunesが利用できるようになったようです。

Win10 S以外だと恩恵が薄そうな気もしそうですが、個人的は、今までAppleのサイトにダウンロードしに行っていたのがストアから一発でダウンロードできるようになり、さらに自動アップデートもストアがしてくれるので、運用面でかなり楽になるのではないかなと感じました。

iTunes – Microsoft Store

takahashi 著者:takahashi

ソースからビルドしたApacheで、service statusが確認できないときの対処法

セットアップ中のサーバーで稼働状況を確認するために

sudo service httpd status

をした際、下記のようなエラーが発生しました。

<html>
                                   Not Found

   The requested URL /server-status was not found on this server.
     __________________________________________________________________


    Apache/2.2.34 (Unix) Server at localhost Port 80

殆どパッケージ版のApacheしか触ったことないので、見慣れない表示に、一瞬びっくりしてしまいましたが、なんとか心を落ち着けて解決方法を検索。
こちらのサイトで、解決策を見つけました。

VirtualHost設定 apache2サーバでのserver-status参照設定 – Check!Site

どうやら、/server-status というディレクトリの表示結果を見て稼働状況を判断しているということで、
http(s)://ドメイン名/server-status
にアクセスされたときに、ページを返すように設定すればエラーも解消するとのこと。

自分の場合、httpd.confに次の設定を追記

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot "/usr/local/apache2/localhost"
 
  <Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost
  </Location>
</VirtualHost>

あとは適当な内容のhtmlファイルを作成し、

/usr/local/apache2/localhost

へ配置しました。

この状態で、再度statusコマンドを打ってみます。

                       Apache Server Status for localhost

   Server Version: Apache/2.2.34 (Unix) DAV/2 PHP/5.3.3
   Server Built: Jul 27 2017 11:48:48
     __________________________________________________________________

   Current Time: Thursday, 26-Apr-2018 13:39:55 JST
   Restart Time: Thursday, 26-Apr-2018 13:39:14 JST
   Parent Server Generation: 12
   Server uptime: 41 seconds
   1 requests currently being processed, 7 idle workers

_W______........................................................
................................................................
................................................................
................................................................

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of worker, "." Open slot with no current process

ばっちり、チェック結果が出るようになりました。

お困りの方の参考になりましたら幸いです。

takahashi 著者:takahashi

MySQLで日本語が文字化けしてしまうときの対処方法

MySQLを使って良くやらかすミスの一つとして、文字コードの設定ミスがあります。
MySQLの場合、デフォルトのまま利用すると、テーブルやdbが意図していない文字コード(例えばlatin1)になってしまうことがあります。

この状態でselectなどで日本語を取り出そうとすると文字化けしてしまい、”??????”のような文字列に置き換わってしまいます。

使っているMySQLのデフォルトの文字コードを確認するには、SQL文を

show variables like 'character%';

とします。すると

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

のような形で確認することができます。
上の表示を見ていただくとわかるように、”character_set_connection”がlatin1になっていると日本語部分が文字化けしてしまい、where構文で日本語をフィルタしてもヒットしなくなってしまいます。

mysqlをパッケージからインストールした際、大抵/etc/my.cnfという名前でmysqlの設定ファイルが作成されているかと思います。
この設定ファイルに対して、次の4行を追加します。

[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8

この設定を追加後、再度mysqlの文字コード設定を確認してみます。

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

すべてutf8に変更されていることが確認できるかと思います。
この状態でselectすれば、日本語が文字化けせずに表示され、またwhere構文で日本語を検索しても、ちゃんとヒットするようになります。

サーバー側の設定を変更できなかったり、変更しても文字化けが治らない場合も、様々な方法があるようですので、お困りの方は確認してみてください。
MySQL のテーブルの文字コードを utf8 に変更する – UCWD-Studio – @matsuoka_UCWDjp ‘s Private Projects.

takahashi 著者:takahashi

[不具合]Android版Google Chrome 66で画像選択しようとするとクラッシュするバグが発生

本日、弊社サービスを利用しているお客様から、Android版Google Chromeを使って画像をアップロードしようとした際にエラーが発生するという問い合わせが入りました。
自分たちの環境でも試したところ、Android 6.0の端末で下記のようなエラーが出ることを確認しました。

Chromeの検証ツールではconsoleに特にエラー出力が出力されていなかったため、adb logcat コマンドでOSのログを取得。

04-26 18:58:29.812  1726  2925 I ActivityManager: Start proc 26320:com.android.chrome:decoder_service/u0i881 for service com.android.chrome/org.chromium.chrome.browser.photo_picker.DecoderService
04-26 18:58:29.885 18544 18544 W cr_Autocomplete: stopping autocomplete.
04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215608): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215609): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215610): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.887 26320 26332 W FileUtils: Failed to chmod(/data/user/0/com.android.chrome/app_chrome): android.system.ErrnoException: chmod failed: EACCES (Permission denied)
04-26 18:58:29.887 26320 26320 I cr_LibraryLoader: Using linker: LegacyLinker
04-26 18:58:29.888 26320 26332 W FileUtils: Failed to chmod(/data/user/0/com.android.chrome/app_textures): android.system.ErrnoException: chmod failed: EACCES (Permission denied)
04-26 18:58:29.888 26320 26332 W ContextImpl: Unable to create files subdir /data/user/0/com.android.chrome/cache
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215611): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215612): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215613): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215614): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215615): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215616): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.912 26320 26320 D AndroidRuntime: Shutting down VM
04-26 18:58:29.912 26320 26320 E AndroidRuntime: FATAL EXCEPTION: main
04-26 18:58:29.912 26320 26320 E AndroidRuntime: Process: com.android.chrome:decoder_service, PID: 26320
04-26 18:58:29.912 26320 26320 E AndroidRuntime: java.lang.RuntimeException: Unable to create service org.chromium.chrome.browser.photo_picker.DecoderService: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.chromium.base.CommandLine.hasSwitch(java.lang.String)' on a null object reference
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.handleCreateService(ActivityThread.java:2944)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.access$1900(ActivityThread.java:154)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:224)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5526)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-26 18:58:29.912 26320 26320 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.chromium.base.CommandLine.hasSwitch(java.lang.String)' on a null object reference
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.SysUtils.isLowEndDevice(SysUtils.java:35)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LegacyLinker.ensureInitializedLocked(LegacyLinker.java:11)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LegacyLinker.prepareLibraryLoad(LegacyLinker.java:25)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LibraryLoader.loadAlreadyLocked(LibraryLoader.java:62)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LibraryLoader.ensureInitialized(LibraryLoader.java:17)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.chrome.browser.photo_picker.DecoderService.onCreate(DecoderService.java:4)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.handleCreateService(ActivityThread.java:2934)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        ... 8 more
04-26 18:58:29.914  1726  2547 D ActivityManager: New dropbox entry: com.android.chrome:decoder_service, system_app_crash, XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

詳しいことはわかりませんが、どうやら/data/user/0/com.android.chrome/app_texturesに対してchmod(読み書き権限の変更)をしようとして権限不足によりシステムから拒否されてchrome本体が落ちているようです。

問題が発生しているAndroid版Chromeのバージョンは 66.0.3359.126 で、この記事を書いた時点での最新版となっています。


なお、Android 7.0 で同じバージョンのChromeで画像アップロードした際は、問題なく画像選択可能でした。

Chromeアプリ本体の不具合ということであれば、自分以外にも不具合の報告が上がっているはず…ということで調べてみたところ、すでに数件の報告がネット上に上がっていました。

今回の場合、ほぼ間違いなくChromeアプリ本体の不具合のため、Googleがアップデートで不具合修正をするまで待つしかありません。
それまでの間、Android向けの別のブラウザアプリを利用することで、不具合を回避することができます。

自分たちの環境で確認した限りでは、Firefoxを用いると問題なくアップロード可能でした。

また、報告では、Chromeを端末出荷時にインストールされていたバージョンに戻すことで、再度画像アップロードが可能となる報告もありました。

自分の環境でも試したところ、確かに画像アップロードが可能となっていることを確認。
自分の環境の場合、バージョンダウン後のChromeのバージョンは 56.0.2924.87 となっていました。

Chromeのバージョンダウンは、アプリを一度無効化し、再度有効化することで可能です。

Androidアプリを削除(アンインストール)/無効化/非表示にする方法 – モバレコ

takahashi 著者:takahashi

VMWareでファイルをロックできませんでした エラーが出た時の解決策

最近、VMWareを使用して仮想の開発環境を使って動作テストをしているのですが、先日下のようなエラーがでて突如起動しなくなってしまいました…


by 宇宙仮面の研究室

もしかして、仮想ディスクか壊れた!?!?とかなり焦りました。

とりあえず原因を調べていたところ、下記のサイトを発見

vmware の Virtual Machine がファイルをロックできずに起動できない場合の対処方法 – 宇宙仮面の研究室

どうやら、何らかの原因でロックファイルが不正な状態で残ってしまうと、起動ができなくなってしまうようです。
自分の環境も確認知ってみると、

バッチリ残ってしまっていました。
こちらの2つのファイルを消したところ、再度起動できるようになりました。

仮想ディスクの破損じゃなくてよかった…(;´∀`)

同じ症状でお困りの方は、是非一度確認してみで下さい。

takahashi 著者:takahashi

撮影したときにどの場所にピントが合っていたのかが分かるLightroomプラグイン

自分は趣味でよく写真撮影をしています。
愛用しているカメラは一眼レフで、かなり細かい調整も可能な機種ではあるのですが、最近どうもうまくピントが合わない症状に悩んでいます。

ピントのずれはPCの画面のような大きな画面を見たときにはじめてわかるので、その場でピントのずれを確認できない場合があります。今回、カメラ側の故障なのか、それとも単に自分が下手なだけなのかを判別するために、何が原因でピントがずれてしまったのかを後から調べられる方法を探していました。

運よく、Adobe Lightroom向けのプラグインで後からピント調節の情報を確認できるプラグインを見つけたので紹介したいと思います。

Show Focus Popints Plugin というプラグインです。

例えば、こちらの写真

一見するとバッチリピントが合っているように見えますが、よく見ると…

結構ボケてしまっていました。
一体どこにピントがおうとんねん!!!ということで調べて見ます。

ライブラリを表示した状態で、プルダウンメニューから プラグインエクストラ->Show Focus Points
で確認してみます。

んんんんんんんん???
なにやら全体にピントがあっているという謎判定。

こういう時は右側にあるFocus informationを見てみます。

Focus modeのところにバッチリ”Manual Focus”と書かれています。
ハイ、これは完全に自分の調節ミスでした…

ということで、おかしいのはカメラ側なのか、自分の操作ミスなのかも後でもわかりますし、ここはオートフォーカスの方がよかったなーとか、もっとピント確認するように癖をつけようとか、反省会をすることもできるので非常に便利です。

ちなみに、万が一カメラ側の問題が疑われた場合も、オートフォーカスの際のピントの微調整ができる機能や機器があるようですので、修理に出さなくても、これらのものを活用すれば自分で修正も可能なようです。

自分で出来る!カメラのピントを微調整する方法。[AFマイクロアジャストメント] – studio9

USB DOCKで18-35mm F1.8 DC HSMのピント調整をやってみる – 酔人日月抄

ここ最近の写真を調べたところ、カメラではなくて、どうも自分の調整が甘かった写真が多かったことがわかってきました。
…もっと上手に撮れるように練習したいと思います。