著者アーカイブ 村上

村上 著者:村上

【Mozilla Thunderbird】メッセージフィルターの設定で「返信先」を指定する方法

以前にも書いた気がしますが、私は普段の業務で「Thunderbird」というメールソフトを使用しています。
で、毎日様々なメールが届くため、メールのフィルター機能を使ってフォルダにメールを振り分けているのですが、Thunderbirdのフィルター設定には「返信先」でメールを振り分ける機能がありません。
が、設定すればできるとのことで、やってみました。

今回参考にさせていただいたサイトはこちら。

Thunderbirdのメッセージフィルタで「返信先」を利用する方法|DESIGN PAPA
http://designpapa.net/archives/2843

 

返信先を指定してメールを振り分ける方法ですが、まず、Thunderbirdの右上のメニューから、「メッセージフィルタ」を選択します。

すると、下記のようなウィンドウが表示されるので、フィルタ条件のメニューから「カスタムヘッダ」を選択します。

そして、表示されたウィンドウ内の「追加するカスタムヘッダ」に「Reply-To」と入力し、追加ボタンをクリックすれば準備は完了です!

あとは、既存のフィルタ条件と同じように、フィルタ条件にしたい返信先を設定すれば完了です!
設定が間違っていなければ、指定した返信先でメールのフィルタリングができます。

 

以上、返信先でメールを振り分ける方法でした。
小さなことですが、この些細なことが意外とストレスになったり、逆に凄く便利に感じたりするんですよね。
メールの設定で、特にメールの振り分けは結構面倒だったりしますが、何とか時間を見つけて整頓しておきましょう。
そうすれば、重要なメールの見落としを減らすことができます!

村上 著者:村上

【Windows】「圧縮(zip形式)フォルダーは無効であるか、または壊れています」の対処法

PowerPointファイルを圧縮しようとしたときに遭遇したエラーです。
1.1MB ほどのファイルを、「右クリック → 送る → 圧縮(zip形式)フォルダー」の方法で圧縮しようとしたら発生しました。
マイクロソフトのサイトによると、圧縮フォルダが 2GB を超えると、ファイルが破損するそうなのですが、今回はこの状況には合致せず…。

ちなみに、このエラーを検索した時に、一番最初にヒットした記事がこちら。

圧縮(zip形式)フォルダーは無効であるか、または壊れています – マイクロソフト コミュニティ
https://answers.microsoft.com/ja-jp/windows/forum/windows_7-files/%E5%9C%A7%E7%B8%AEzip%E5%BD%A2%E5%BC%8F%E3%83%95/9e4393df-4f05-42bb-bb89-c1ae3a564096

で、回答の中に、「ドライブの空き容量は十分にありますか?」とあるので、どうやら容量不足が原因のようです。
対処法としては、ディスクのクリーンアップで、一時ファイルの削除と、ディスクのチェック・システムファイルのチェックを行った方が良いとのことでした。

 

が、私のPCでは、圧縮したいファイルを別の場所、私の場合は一つ上の階層にコピーし、同じ方法で再度圧縮を試したところ、問題なく圧縮できました。
理由は分からないし、いまいち釈然としませんが…できたので良しとします!

 

もし、同じ現象にお悩みの方は、ファイルを別の場所にコピー&ペーストして、再度圧縮をお試しください。
もしかしたら、圧縮できるかもしれません。

ファイルの場所を変えても圧縮に失敗する場合は、ディスクのクリーンアップを行ってください。
なお、ディスクのチェックは、ディスクの破損の状態によってはかえって傷を広げ、まれに OS が起動できなくなることもありますとのこと。
実行は自己責任でお願いします。

村上 著者:村上

【CSS】枠線の色を透明にする方法

使いどころがあるかは正直謎ですが…自分の書いたであろうCSSを見返していたら、気になる記述があったのでまとめ。
CSSで指定したボーダー(枠線)の色を透明にする方法です。
…実質 border: none; の記述と変わらないのでは…?

 

コードはこちら。

<div class="border">枠線を透明に</div>
.border {
    border: 1px solid transparent;
}

透明を指定しているのは、transparent というボーダー色の値です。
通常であれば、ここには #000 などの色コードなどを指定しますが、transparent を指定すると線が透明(非表示)になります。
が、コードを見ると、線自体はあります。

感覚としては、visibility: hidden と似たような感じで使う、と覚えるとわかりやすいかも。
この時は枠線を表示して、この時は非表示に!でも他のスタイルに影響が出るのを防ぐために、表示はしないけど残したい!というときに使うのがよさそうです。
CSS初心者の時は、ボーダーの幅で若干横幅のサイズが合わなくて苦労したことがあるので…それの予防に使えそうです。

 

以上、枠線を透明にする方法でした。
ちなみに、transparent は、「向こう側が見えるほど透き通った、透明な」という意味があるとのこと。
そのまんまの意味ですが、とっさに出てこなさそう…!

村上 著者:村上

【PHP】配列で重複した値を削除する方法

たまにしか使わないから毎回忘れる配列の値が重複したときの削除方法について。
今回使用するのは、array_unique という関数です。
PHPのマニュアルページはこちらから。

PHP: array_unique – Manual
http://php.net/manual/ja/function.array-unique.php

 

こちらの関数は、重複を削除したい配列を引数として渡せば、重複を削除した後の配列を戻り値として返してくれます。
サンプルコードは下記のとおりです。

$array = array(1, 3, 5, 1, 2, 4, 3);
// 重複削除
$unique = array_unique($array);

// 実行結果:array(1, 3, 5, 2, 4)

ただし、この関数では、重複削除後もキーは保持されます。
なので、詳細に書くと結果が下記のようになっていることに注意してください。

$array = array(0 => 1,
               1 => 3,
               2 => 5,
               3 => 1,
               4 => 2,
               5 => 4,
               6 => 3);
// 重複削除
$unique = array_unique($array);

// 実行結果:array(0 => 1,
//                1 => 3,
//                2 => 5,
//                4 => 2,
//                5 => 4);

結果を単に foreach かなにかで処理するだけなら問題ないかと思いますが、キーをセットに扱う処理を行う場合などは、このままでは使えません。
その場合は、PHPの関数の array_values を使います。
こちらを使うと、数字が飛び飛びになったキーの番号を振り直すことができます。
使用方法はこちら。

$array = array(0 => 1,
               1 => 3,
               2 => 5,
               3 => 1,
               4 => 2,
               5 => 4,
               6 => 3);
// 重複削除
$unique = array_unique($array);
// キーの振り直し
$result = array_values($unique);

// 実行結果:array(0 => 1,
//                1 => 3,
//                2 => 5,
//                3 => 2,
//                4 => 4);

これでキーの番号が飛び飛びになる問題も解決できます。

 

ということで、配列のデータ重複を解消する方法でした。
意外と使う機会がある関数なので、覚えておいて損はないはず。
ついでに、下の方で紹介した配列のキーの振り直し方法についてもセットで覚えておくといいでしょう。

村上 著者:村上

【MySQL】集計した値を日付けごとにグループ化して抽出する方法

タイトル通り、ログイン数の合計などの集計したいデータを日付けごとにグループ化して抽出するためのMySQLの書き方です。
これを使うことで、日ごとの投稿数とか、日ごとのログイン数がサクッととれるので、かなり重宝しています。
なお、この抽出を行うためには、数えたいカラムと日付を保存したカラムがある必要があります。

 

SQL文はこちら。

SELECT date_format([日付のカラム],'%Y%m%d'),count([カウントしたいカラム名]) FROM [テーブル名] GROUP BY date_format([日付のカラム],'%Y%m%d');

このSQL文を実行すると、カウントしたいカラムの合計値を日付けごとに抽出することができます。

今回重要なのは、GROUP BY句と、date_format() という時間関数を使うことです。
date_format()関数を使うことで、日付のデータを任意の書式に変更することができます。
今回は、「2018/04/26」のような形式に変更しています。
勿論、別の書き方でも問題ありません。

そして、その日付の値を GROUP BY でグループ化することで、同じ日付の値だけをそれぞれカウントしてくれます。
MySQLを使い始めたばかりだと、GROUP BY句ってどんな時に使うのか、そもそもどうやって使うのかの感覚がつかめなかったりするのですが、分かってしまうと凄く便利です。
日付け以外にも、カテゴリごととか、そういう指定もできますしね。

なお、上のSQL文を応用して、下記のように記述すると月ごとに集計することも可能です。

SELECT date_format([日付のカラム],'%Y%m'),count([カウントしたいカラム名]) FROM [テーブル名] GROUP BY date_format([日付のカラム],'%Y%m');

やろうと思えば時間単位でもできそうですが…それだとデータ数がとんでもないことになりそうなので、WHERE句で期間を指定するなど、計画的に行ってください。
INTO OUTFILE を使って、抽出結果を外部ファイルにエクスポートすると、後々使いやすいと思います。

 

なお、この書き方だと、カウント数が だった日付があった場合、その日は省略されますので、そこだけは注意してください。
値が 0 の日付も表示する方法はあるのかな…?
今のところ、この仕様でも困っていないのであまり意識していませんでしたが、あるなら便利そうですね。
時間があったら、方法を探してみたいと思います!

村上 著者:村上

【Cordova】アプリ内にAdMobのバナー広告を導入する方法

タイトル通り、Cordovaで開発したアプリにバナー広告を入れる方法です。
ちなみに、AndroidとiOSの両方に対応しています。
本当はネイティブ広告という、Twitterのタイムラインで表示されるような、記事っぽくみえる広告を導入したかったのですが、どうやらプラグインが対応していないようです。

今回使ったのは、cordova-plugin-admob-free というプラグインです。
GitHubはこちら。

GitHub – ratson/cordova-plugin-admob-free: Cordova AdMob Plugin
https://github.com/ratson/cordova-plugin-admob-free

 

まずインストールは下記のコマンドをコマンドプロンプト等で実行します。

cordova plugin add cordova-plugin-admob-free --save

インストールが終わったら、下記のコードをプログラムに記述するだけ!
なお、私の環境では、index.js というファイルに記述しました。

// AdMob 広告ID
var admobid = {}
if (/(android)/i.test(navigator.userAgent)) {  // Android
    admobid = {
        banner: 'ca-app-pub-3940256099942544/6300978111'
    }
} else if (/(ipod|iphone|ipad)/i.test(navigator.userAgent)) {  // ios
    admobid = {
        banner: 'ca-app-pub-3940256099942544/2934735716'
    }
}

document.addEventListener('deviceready', function () {
    // バナー広告表示
    admob.banner.config({
        id: admobid.banner,
        isTesting: true,  // テスト広告
        autoShow: true,
    })
    admob.banner.prepare()
}, false);

コードの上の方で、アプリを使っている端末が Android なのか iOS なのかを取得しています。
Android と iOS では、広告のIDが異なるので、この処理も重要です。

なお、広告のIDはテスト用のものを使っています。
なんでも、動作を確認している段階のアプリで本番用の広告IDを使うと、最悪の場合アカウント停止になることもあるとのことだったので…。
絶対にそれは避けたいので、慎重に。

ちなみに、広告の種類は他に「インタースティシャル」という画面に大きく表示される広告と、あとは「動画広告」もあります。
このあたりは、お好みで使い分けてください。
…が、個人的に画面全部を覆うような広告は嫌いなので、使うとすればバナー広告かな。

 

以上、アプリ内に広告を入れる方法でした。
アプリの利用者数が増えてきたら、導入を検討していきたいと思います。

村上 著者:村上

【Excel】日付を曜日付きで表示する方法

Excelを使っていて、例えば下の画像のように、「4月1日(日)」と、曜日まで表示したいときの作業です。

要は、データとしては「2018/04/01」と入力されているものを、「4月1日(日)」の形式で表示するということです。
日付の表示形式は案外簡単に変えられるのですが、曜日の表示はひと手間必要です。

今回は、こちらのサイトを参考にさせていただきました。

Excelで日付から自動的に曜日を入力する – @IT
http://www.atmarkit.co.jp/ait/articles/1708/02/news014.html

 

まず、表示形式を変えたいセルで右クリックし、メニューから「セルの書式設定」をクリックします。

すると、ウィンドウが表示されるので、「表示形式」タブの左のメニューから「ユーザー定義」をクリックします。

そして、「種類」の欄で、曜日を表示したいところに「aaa」を入力します。
私の場合だと、「“(“aaa”)”と入力したため、実際の表示では「(日)」となります。

なお、表示形式は他にもあるので、お好きなものをチョイスしてください。

表示形式コード 曜日の表示形式
aaa 月、火、水、木、金、土、日
aaaa 月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日
ddd Mon、Tue、Wed、Thu、Fri、Sat、Sun
dddd Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday

作業としては以上です!

 

なお、今回紹介したサイトに、別のセルに関数を使って曜日のみを表示する方法も載っているので、場合によって使い分けてください。
曜日を表示したいセルに、次の式を入力すればOKです。

=TEXT([曜日を表示したい日付が入力されたセル],"aaaa")

どちらも、入力した日付で自動的に曜日が算出されるので、凄く便利です。
また、入力間違いもなくなるので、曜日を表示したいときは積極的に使いたいと思います。

村上 著者:村上

【Windows】空き容量があるUSBメモリにファイルをコピーできない時の対処法

タイトル通り、Windowsのパソコンで、空き容量は十分あるはずのUSBメモリに何故かファイルをコピーできない時の対処法です。
なお、エラーメッセージは、「ファイルが大きすぎます。ファイル’[ファイル名]’は大きすぎて、対象のファイルシステムに入りません。」というものでした。

こちらの対処法について、参考にさせていただいたサイトはこちら。

USBメモリや外付けHDDに空き容量があるのにファイルコピーできない時の解決法|データ復旧のパソコンサポートやまもと
https://datarescue.yamafd.com/howto_solve_unable_copy/

 

なお、データがコピーできない原因ですが、USBメモリのフォーマット形式により、1ファイルの最大サイズが 4GB までという制限があるからとのことでした。
コピーしようとしていたファイルが 4GB 以上の動画データだったので、まさにこの制限に引っかかっていました。
で、こちらの問題は USBメモリのフォーマット形式を変更すれば、大きいファイルでもコピーをすることができます。

さて、USBメモリのフォーマット形式の変更方法ですが、こちらを行う前に、まずメモリ内に保存されているファイルを別の場所に移動させて保存します。
フォーマットをするとすべてのデータが消えてしまうので、この作業は忘れずに!

データが保存出来たら、まずエクスプローラーから、フォーマット形式を変更したい USBメモリを右クリックします。
そしてメニューから、「フォーマット」を選択します。

すると、下のようなウィンドウが表示されるので、その中の「ファイル システム」を「ExFAT」に変更します。

あとは、「クイックフォーマット」にチェックが入っていることを確認して、「開始」をクリックします。

作業はこれで終了!
あとは、コピーしたいファイルを通常通りにコピー&ペーストすれば、今度は問題なくコピーができるはずです。
ただし、ExFAT 形式はデータが壊れやすいという欠点があるとのことだっため、重要なファイルを入れないほうが良いかもしれません。
そのあたりは、記事冒頭で紹介した参考サイトをご確認の上、自分の環境にあった形式を選択してください。

 

以上、USBメモリにファイルがコピーできない時の対処法でした。
なかなか 4GB 以上のファイルを扱う機会がないもので、空き容量はあるのにコピーできない!という状況には少し焦りましたね。

村上 著者:村上

【Cordova】Android・iOSアプリを終了させる処理

Cordovaのアプリを開発中、プログラムからアプリを終了させる処理を行いたかったので、やり方を調べました。
が、結局アプリを終了しない処理で落ち着いたんですけどね。

今回参考にさせていただいたサイトはこちら。

monaca(cordova)でアプリを終了させる(Androidのみ)
https://blog.mitsuto.com/cordova-exit

 

で、アプリを終了させる処理は、実はこれだけ。

// アプリを終了する
navigator.app.exitApp();

アプリを終了させたいタイミングで、上記の一行を書くだけです!
思ったよりも簡単でした。

ですが、この処理は iOS では動作しません。
なので、下記のプラグインをインストールする必要があります。

GitHub – FRD49/iOS-ExitApp: navigator.app.exitApp() on iOS
https://github.com/FRD49/iOS-ExitApp

インストールするときは、下記を実行します。

// iOS-ExitApp のインストール
cordova plugin add com.frd49.cordova.exitApp

// 上のコマンドがエラーになる場合はこちらを実行
cordova plugin add https://github.com/FRD49/iOS-ExitApp.git

プラグインをインストールする時にエラーが発生した場合は、下のコマンドを実行してください。
私の環境では、上のコマンドではインストール元が見つからないとかで失敗しました。

プラグインの追加が完了したら、アプリを再ビルドして、実機で実行すればOKです。
これで、iOS でも「navigator.app.exitApp();」を使ってアプリを終了できるようになります。

 

以上、プログラムからアプリを終了させる方法でした。
が、確かにアプリは終了できるのですが、終了時の挙動が強制終了の時と似ている、というか同じなので、終了する前に「アプリを終了しますか?」の確認ダイアログは必須ですね。

村上 著者:村上

【JavaScript】App Storeに公開済みのアプリのバージョンを取得する方法

タイトル通り、ストアに公開済みのiOSアプリのバージョンを取得する方法です。
Cordovaアプリを開発していて、アプリに新しいアップデートがあれば通知する、という機能を実装するための処理で使用しています。
プラグインが見つかればよかったのですが…見つからなかったので、JavaScriptでゴリゴリ書きました。

今回参考にさせていただいたサイトはこちら。

[iOS] iTunes Search API を利用してアプリの情報を取得する|Developers.IO
https://dev.classmethod.jp/smartphone/get-app-info-using-itunes-search-api/

[JS] iTunes APIをJavaScriptから利用して、iTunesで配信中の楽曲を視聴する – Yoheim.NET
https://www.yoheim.net/blog.php?q=20130702

上の記事で、iTunes Search API の URL の指定方法を。下の記事では、その URL を Ajax で使う方法を参考にしました。
特に、Ajax の指定が間違っていたせいで、URLがあっているのに取得できない!という現象に悩まされました…。

 

先にコードをご紹介。

$.ajax({
    url: 'https://itunes.apple.com/lookup?id=[アプリのID]&country=JP',
    method: 'GET',
    dataType: 'jsonp',
    success: function(data) {
        // 取得成功
        var version = data.results[0].version; // アプリのバージョン
    }, error: function(xhr, type){
        // エラー時の処理
    }
});

URLには、GETの書き方で、アプリのIDと国を指定します。
ポイントとしては、Typeを GET で指定することと、dataType を JSONP という指定にするという点ですね。
最初、単に JSON としてしまったせいで、エラーが発生していました。
成功すれば、変数 data でアプリの情報を取得できるので、そこから必要な情報を取得すればOKです。

 

以上、ストアのアプリのバージョンを確認する方法でした。
Android SwiftObjective-C だと、思いのほかやり方がすぐ見つかるようでしたが、JavaScriptはあまりヒットせず、苦労しました。
同じことでお悩みの方は、是非参考にしていただければと思います。