著者アーカイブ 村上

村上 著者:村上

【Chrome拡張機能】表示されている画像のEXIF情報を手軽に確認できる「EXIF Viewer」

最近は使わないのですが、以前インストールしてそのままになっていた拡張機能をご紹介。
EXIF Viewer」という、Google Chrome で表示している画像のEXIF情報を表示できる拡張機能です。

インストールはこちらから行えます。

EXIF Viewer – Chrome ウェブストア
https://chrome.google.com/webstore/detail/exif-viewer/nafpfdcmppffipmhcpkbplhkoiekndck?hl=ja

 

実際の使用イメージはこんな感じ。

「EXIF Viewer」を有効にした状態で、画像の上にカーソルを合わせると、画像の左上に青い枠が現れて、そこに撮影したカメラの機種や焦点距離などのEXIF情報が表示されます。
また、緯度経度が保存されている場合は、青枠の中に赤く「GPS」という表示がされるので、そのにマウスカーソルを合わせることで、手軽にマップを表示させることもできます。

なお、こちら私の以前のブログなのですが、写真のEXIFは削除しているので、この様に変な情報が表示されています…。
ご了承ください。

 

以上、画像のEXIF情報を手軽に確認する方法でした。
自分のアップした画像に位置情報など、公開したくない情報が含まれていないかの確認が簡単に確認できますね。
もしくは、お店の料理の写真に位置情報が含まれている場合、このお店がどのあたりにあるのかをマップに表示する、という使い方もできそうです。

村上 著者:村上

【Xcode】アプリのメモリ使用量を調べる方法

業務内でアプリを修正中、実機で動作確認をしているアプリが頻繁に落ちる現象に遭遇しました。
エラー文はこちら。

CoreAnimation: failed to allocate 183072 bytes

バイト数もほぼこの値でした。

こちらの原因ですが、書いてあるとおり、メモリの割り当てに失敗しているとのこと。
で、対処法を調べたところ、こちらの投稿がヒットしました。

ios – Core animation failed to allocate bytes though NOT using Core Plot – Stack Overflow
https://stackoverflow.com/questions/19403295/core-animation-failed-to-allocate-bytes-though-not-using-core-plot

こちらのページに投稿された対処法によると、「おそらくあなたはアプリ内の他の場所で多すぎるメモリ使用量を使用している可能性があります。コアアニメーションは最初に割り振りに失敗しています(特に大きな割り当てであるため)。」とのことでした。

 

ということで、メモリ使用量を調べようとしているのですが、どうやらXcodeにはメモリ使用量を調べられるDeveloper Toolsがあるとのこと。
それについて書かれているサイトはこちらから確認できます。

Instrumentsを使ってみた – Qiita
https://qiita.com/nohirap/items/39ed06c550b6b5c1f247

こちらを参考に、とりあえず起動してみました。

まず、Xcodeのメニューから、Open Developer Tools を選択し、そこから Instruments をクリックします。

Instruments を選択すると、下記のようなウィンドウが表示されるため、ログを取りたい項目を選択します。

私は Core Animation を選択しました。

そうすると、下のようなウィンドウが表示されるため、左上の録画ボタンのような赤丸アイコンをクリックします。

すると、何かしらの情報が黙々と記録されていきます。
こんな感じで、具体的にメモリ使用量を調査します。

 

以上、Xcodeでメモリ使用量を調べる方法でした。
が、私はまだこのデータの見方がわからない…!
頑張って調べたいと思います…。

村上 著者:村上

【Xcode】ビルド時の「[プロジェクト名] has conflicting provisioning settings.」エラーの対処法 その2

Xcodeで証明書を設定した際のエラーの対処法について、以前紹介した方法では解決しなかったので、その2の対処法をまとめました。
ちなみに、以前の記事はこちらから。

【Xcode】ビルド時の「[プロジェクト名] has conflicting provisioning settings.」エラーの対処法
https://cpoint-lab.co.jp/article/201805/【xcode】ビルド時の「プロジェクト名-has-conflicting-provisioning-settings-」エ

 

今回参考にさせていただいたサイトはこちらから。
iOSアプリをリリースする際のプロビジョニングの設定
http://chinotsubo.com/ios-provisioning-config/

で、対処法ですが、アプリの Build SettingsCode Signing Identity に設定されている項目を、下記のように変更するだけです。

なお、記事の投稿者いわく、「イマイチなぜこの設定が正しいのかは理解していない」とのこと。
ちなみに、こちらの記事の下には参考にした記事のリンクもあるので、気になる方はぜひ御覧ください。

 

以上、Xcodeの証明書の設定方法その2でした。
前ご紹介した方法でビルドができなかった方は、この方法もお試しください。
なお、私の環境では、実機を接続してのビルド時に失敗するようでした。
…実機の接続・未接続で、設定等が違う箇所があるんでしょうね。

村上 著者:村上

【Android】アプリの画面を縦方向で固定する方法

久しぶりのAndroidネタです。
今回は、端末が横向きになった場合でも、アプリの画面を縦方向に固定する方法について。

 

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

Android縦画面固定 – Qiita
https://qiita.com/yasumodev/items/44f7fd84a58b709a0349

実装方法ですが、2つ方法があり、私が実装したのが、AndroidManifest.xml で指定する方法です。
縦方向で固定したいページのアクティビティに対して、下記を指定します。

android:screenOrientation="portrait"

具体的には、下記のようになります。

<activity
    android:name=".Main.MainActivity"
    android:screenOrientation="portrait"
    android:label="@string/app_name"/>

3行目に、縦方向で固定する指定を追加しています。

なお、横固定にしたい場合は、値を「portrait」から「landscape」に変更します。

 

次に、Activity で指定する方法ですが、こちらは onCreate の中に下記を記入します。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

こちらの方法で横方向で固定したい場合は、引数に ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE を指定します。

 

以上、アプリの画面の向きを固定する方法でした。
iOS だと、チェックボックスの ON/OFF だけで済むので、Android は少しだけ面倒ですね。
また、アクティビティごとでの指定なので、常に縦固定の場合は、すべてのアクティビティに縦固定の指定をしなければ習いので、指定抜けにご注意ください。

村上 著者:村上

【フリー素材】アイコン素材なら商用利用可の「icooon-mono」がおすすめ

絵が描けないので、Webデザイン中に毎回困るのがアイコン素材なのですが…数年前からかなりお世話になっているサイトがこちら。

アイコン素材ダウンロードサイト「icooon-mono」
http://icooon-mono.com/

「icooon-mono」という、フリーのアイコン素材のサイトです。
掲載しているアイコン数は何と6000以上!
また、タイトルにも書きましたが、商用利用も可能なのでかなり助かっています。

 

アイコンの詳細ページはこちら。

見てわかるように、アイコンのサイズが選べ、色も変えることができます。
また、ダウンロードするファイル形式も、PNG、JPG、SVG から選ぶことができます。
…まあ、たいてい選ぶのはPNGですけど。

 

オーソドックスな物から、一体どこで使うんだ?と思うような物まで、かなりの種類を取り揃えているので、きっとぴったりなアイコンが見つかるはず。
が、いかんせん量が多いので、最初は探すのだけでも一苦労かもしれません
時間があるときに、さらっと眺めてみるのもおすすめです。

村上 著者:村上

【MySQL】テーブルのデータをコピーして別のテーブルに挿入する方法

今回も、昨日に引き続き MySQL について。
タイトルにある通り、テーブルのデータをコピーして別のテーブルにデータを挿入する方法です。
使用頻度はあまり高くないかな?

 

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

表をSELECTして別の表へINSERTする(INSERT ~ SELECT)- SQL Server – Priject Group
https://www.projectgroup.info/tips/SQLServer/SQL/SQL000004.html

なお参考として、記事の下の方に、同じことを Oracle Database で行う方法が書かれたページへのリンクもあります。

で、SQL文はこちら。

INSERT INTO [データ挿入先テーブル名] SELECT * FROM [コピー元テーブル名];

こちらは全カラム&全件をコピーする方法です。
もちろん、SELECT に WHERE をしてして、任意の条件に一致するデータのみを挿入することもできます。
なお、このSQL文はコピー元テーブルとコピー先テーブルの構造が一致していないと失敗するので、注意が必要です。

ですが、下記のように取得するカラムも指定すれば、定義の異なるテーブルにも挿入できます。

INSERT INTO [コピー先テーブル]([カラム1], [カラム2]) SELECT [カラム1], [カラム2] FROM [コピー元テーブル];

なお、カラムを指定するときは、順番にも気を付けてください。

 

以上、テーブルのデータをコピーして、別のテーブルに挿入する方法でした。
INSERT と SELECT が同時に使用されているので、一見難しそうに見えますが、落ち着いてみてみればかなり簡単ですね。
なお、実際に実行する機会があるかどうかは別として、同じテーブルにコピーしたデータを挿入することもできたので、テストデータとかを量産したいときとかに便利そうですね。

村上 著者:村上

【MySQL】指定したカラムにリストと一致する値があるかを調べるIN演算子

そこまで使用頻度が高いわけではないのですが、知っていると便利なのが、今回取り上げる IN演算子。
MySQLのWHEREでデータを抽出する際に、カラムのデータがリストの値のどれかと一致するかを調べられます。
便利なのにたまにしか使わず、そのため毎回構文を忘れて調べているのでまとめ。

 

サンプルコードはこちら。

SELECT * FROM [テーブル名] WHERE [カラム名] IN ([値1],[値2],[値3],…);

通常だと、WHERE [カラム名] = [値1] OR [カラム名] = [値2] … と書きますが、IN演算子を使うと、比較したい値をリストにまとめることができます。
で、このリストの値のどれかと一致したカラムを抽出してくれます。

また、NOT IN と書くこともでき、その場合はリストの中の値のどれとも一致していないデータを抽出してくれます。

 

ということで、MySQLのIN演算子でした。
抽出条件を AND でつなげて書くのって結構面倒だったりするので、同じカラムだったらまとめられていいですね。
また、この書き方なら条件の指定もれも減りそうです。
SQL文は、初心者は苦手意識を持たれる方も多そうですが、是非こういったものを便利に使ってください。

村上 著者:村上

【JavaScript】日付オブジェクト.getMonth()を扱う時の注意点

知らないととことんハマりそうなので、備忘録としてまとめ。
日付オブジェクトから月を取り出すときの注意点についてです。

サンプルコードはこちら。

var today = new Date();
var month = today.getMonth() + 1;

現在の月を取得するならこれだけなのですが、getMonth()メソッドを使ったときの返り値は 0~11 となります。
つまり、「0 = 1月」、「11 = 12月」なんです。
なので、コードにあるように、getMonth()返ってきた値に +1 をする必要があります。
…知らないとここでかなりハマりそうです。

なお、例によって後輩がこの状況に陥り、「今6月なのに、先月の日付が返ってくる!」と悩んでいました。
日付を console.log で出力すると正常で、でも月を取得すると5月だったということだったので、この現象を思い出せました。

 

以上、getMonth()メソッドを使うときの注意点でした。
…正直、「getMonth()」という名前なので、きっちり 1~12の間で値が返ってきてほしいですね。
もしJavaScriptで日付を扱う時に、値がおかしい場合は、まずこのあたりを疑ってみてください。
誰かの参考になれば幸いです。

村上 著者:村上

【Windows】Word保存時に「ディスクの空き容量が不足しているため保存できません」エラー

ちなみに未解決です。

Wordを編集・保存した時に遭遇したエラーで「ディスクの空き容量が不足しているため保存できません」とのこと。
ほかにももう1つファイルを開いていて、そちらは問題なかったのになぜこのファイルだけ…?

検索時にヒットしたページはこちら。

Word で文書を保存するとエラー メッセージが表示される、またはプログラムが応答を停止する
https://support.microsoft.com/ja-jp/help/813997/you-receive-an-error-message-or-the-program-stops-responding-when-you

ですが、結局それらしい解決策は見つけられませんでした。

なお、サイトに掲載されていた解決方法・回避策はこちら。

この問題を解決するには、ディスク ドライブの増設やディスク圧縮ユーティリティの使用により、ディスクの空き領域を増やします。

注: ウイルス対策ソフトウェアが実行中の場合は、それを無効にしてみてください。 これで問題が解決される場合は、ウイルス対策ソフトウェアの製造元に更新プログラムまたは回避策についてお問い合わせください。

・不要なプログラムを終了することによってディスク領域をある程度回復できる場合があります。
他のプログラムを終了してから Windows がページング ファイルのサイズを変更するまでに数分かかることがあります。
・必要のないファイルを削除してディスクの空き領域を増やします。
たとえば、ディスク クリーンアップを実行します。 これを行うには、次の手順を実行します。

 

で、結局一度ファイルを保存せず閉じて、再度開いて修正・保存をしたところ、何事もなかったかのように保存が完了しました。
…謎です。
ということで、原因はさっぱりわかりませんでしたが、なるべくファイルは一度にたくさん開かずに、必要最小限にしようとは思います。

村上 著者:村上

【JavaScript】IEでの「’)’がありません」エラーの原因と対処法

後輩のコードを見ていて発見した Internet Explorer 固有のバグです。
今回遭遇するまで、こんな現象が起きることを知らなかったので、備忘録も兼ねています。

で、コードはこちら。

function checkStr( message = "" ){
    if( message != "" ){
        // 処理
    }
}

一見何の問題もなさそうですし、Google Chrome や Microsoft Edge では問題なく動作しました。
が、どうしてもIEではダメで、「‘)’がありません」というエラーが表示されました。

 

で、対処法ですが、そもそもの原因は関数の引数にデフォルト値を指定したことが原因のようでした。
IEではJavaScriptの関数での引数のデフォルト値の設定には対応していないようですね。
そのため、引数の「message = “”」を 単に「message」に修正すれば問題なく動作しました。

修正後のコードは下記のとおりです。

function checkStr( message ){
    if( message != "" ){
        // 処理
    }
}

1行目の関数の引数のデフォルト値を指定しないように修正しました。

 

以上、IEでの関数エラーの対処法でした。
最初はエラー文を鵜呑みにしてカッコの数があっているかを確認していましたが、原因は全く違いましたね。
たまにこういった見当はずれのエラー文があったりするので、デバッグ作業は難しいです。
今回は思い付きで関数の引数を消してみたら解決したので良かったですね。
同じことでお悩みの方は、是非参考にしてください。