月別アーカイブ 7月 2018

村上 著者:村上

【Excel】結合したセルの行の高さの自動調整は無効です

タイトルにもある通りです。
Excelでセルの結合を行い、さらにその列に「折り返して全体を表示」を指定した場合でも、セルの行の高さの自動調節は行われません。
以前は、これを知らず「何故行をダブルクリックしているのに自動調整されないのか?」と悩んだ記憶があります。
どうやらExcelの仕様のようなので、自動調節が効かないのはどうしようもないんですよね…。

 

対処方法としては

  1. 手動で調整
  2. マクロを使う
  3. 行の高さ調整のアドインを使う

上記の3つが挙げられます。
以前は1の手動での調節を使っていたのですが、アドインがあったとは…!
今回、改めて調べてみて初めて知りました。

なお、2のマクロについては下記のサイトが参考になりそうです。

VBAで結合セルの行の高さを自動調整する|Excel作業をVBAで効率化
https://vbabeginner.net/結合セルの行の高さを自動調整する/

また、3のアドインについては、こちらから。

結合セルを含めた行の高さ調整アドインAutoFitRowExの詳細情報:Vector ソフトを探す!
https://www.vector.co.jp/soft/win95/business/se508497.html

時間があるときにでも、私も導入してみようかと思います。

 

以上、結合したセルの行の高さの自動調節についてでした。
セルの横幅を長くすることができれば、そもそも結合せずに済んで、自動調節も効くのですが…そうでないこともあるので、その場合は、今回上げた方法を使ってみてください。

  • この記事いいね! (0)
著者:杉浦

問題の細分化とソースコードの関数化

 よく関数にまとめることでソースコードが読みやすくなる、再利用しやすくなると言われますが、いきなりその様ことだけ知ってもすぐにできるものではありません。関数化の指針の一つに問題の細分化というものがあります。これは分割された小さな問題ごとに関数にしていくというやり方です。例えば次のコードがあります。

// 与えられた緯度経度に最も近い 'array' の要素を返す。
// 地球が完全な球体であることを前提としている。
var findClosestLocation = function (lat, lng, array) {
	var closest;
	var closest_dist = Number.MAX_VALUE;
	for (var i = 0; i < array.length; i += 1) {
		// 2 つの地点をラジアンに変換する。
		var lat_rad = radians(lat);
		var lng_rad = radians(lng);
		var lat2_rad = radians(array[i].latitude);
		var lng2_rad = radians(array[i].longitude);
		// 「球面三角法の第二余弦定理」の公式を使う。
		var dist = Math.acos(Math.sin(lat_rad) * Math.sin(lat2_rad) +
				Math.cos(lat_rad) * Math.cos(lat2_rad) *
				Math.cos(lng2_rad - lng_rad));
		if (dist < closest_dist) {
			closest = array[i];
			closest_dist = dist;
		}
	}
	return closest;
};
Dustin Boswell; Trevor Foucher. リーダブルコード (Kindle の位置No.1930-1939). 株式会社オライリー・ジャパン. Kindle 版. 

 これはコードの最上部のコメントにあるように、与えられた緯度経度に最も近い 'array' の要素を返す、ことが最終目的の関数です。この目的を達成するためにこのコードは、2地点間の距離を算出する、最小の距離になる'array'の要素を発見する、という二つの問題を解いています。前者の2地点間の距離を算出する、という問題は最終目的から分割して考えられます。分割するという考えに沿ってコードを改造すると次の様になります。

// 与えられた緯度経度に最も近い 'array' の要素を返す。
// 地球が完全な球体であることを前提としている。
var findClosestLocation = function (lat, lng, array) {
	var closest;
	var closest_dist = Number.MAX_VALUE;
	var dist = spherical_distance(lat, lng, array[i].latitude, array[i].longitude);
	for (var i = 0; i < array.length; i += 1) {
		if (dist < closest_dist) {
			closest = array[i];
			closest_dist = dist;
		}
	}
	return closest;
};
function spherical_distance(lat, lng, lat_2, lng_2){
	//地点(lat,lng)と地点(lat_2,lng_2)の球面距離を返す
	// 2 つの地点をラジアンに変換する。
	var lat_rad = radians(lat);
	var lng_rad = radians(lng);
	var lat2_rad = radians(lat_2);
	var lng2_rad = radians(lng_2);
	// 「球面三角法の第二余弦定理」の公式を使う。
	return Math.acos(Math.sin(lat_rad) * Math.sin(lat2_rad) +
		Math.cos(lat_rad) * Math.cos(lat2_rad) *
		Math.cos(lng2_rad - lng_rad));
}

 最初より簡単な関数であるfindClosestLocationとspherical_distanceの二つが出来ました。また、この関数化は再利用等のコードの変更を容易にします。例えば、findClosestLocation中のspherical_distance(lat, lng, array[i].latitude, array[i].longitude)という部分は呼び出す関数名の変更だけで同じような度単位の二地点の緯度経度を引数にする別の関数を用いることが出来ます。二地点間の球面距離の算出というのは多用します。
 問題の細分化の基準として意図と実装の乖離があります。あるコードを書いている時、そのコードに当初と別の目的が存在するならば、それは別の問題である、というものです。

  • この記事いいね! (0)
asaba 著者:asaba

画面タッチ無効化について

アプリを操作中にあるダイアログが出ているときに画面を操作できてしまうと

ダイアログが閉じてしまい進捗が分からなくなるので、アプリのユーザーを不安にさせてしまいます。

 

ダイアログ表示中に画面タッチを無効化したいときは

 

下記のメソッド を使います。

 

  imageDownloadDialog.setCanceledOnTouchOutside(false);
 

アプリのダウンロード中やデータの保存中はプログレスバーを用いて進行具合を表しますが

この処理中に画面を触ってバーが消えてしまうと、ダウンロードが何%進んでいるか分からなくなってしまい

ユーザーの視覚的にも印象が良くないので、処理をしているコードの中にこのメソッドを突っ込んで画面タッチを無効化しましょう。

 

自分は良く使っているアプリのレビューを見ていますが、起動時の挙動に対してはシビアな評価がかなり多いです。

 

アプリを開発する側の立場として、入りから好印象を持たせてユーザーに長く使ってもらえるようなアプリを目標に

これからも細かいtipsを見つけて載せていきたいと思います。

 

 

 

 

 

  • この記事いいね! (0)
takahashi 著者:takahashi

VisualStudioCodeで文字コードを自動判定させる方法

GUI向けエディタで、登場から急激にシェアを伸ばしているVisualStudioCode(VSCode)

個人的には今まで使ってきたエディタの中で一番の使い勝手だと思っているのですが、一つだけ不満点が。
文字コードがUTF-8以外のものであるテキストファイルに対しても、起動直後は必ずUTF-8で表示してしまう、という仕様になっている点です。

例えば、

こんな感じでshift_jisのテキストファイルを作成し、保存。
このファイルを再度開くと

UTF-8として読み込まれてしまいます。
UTF-8以外の文字コードでなくても、右下の文字コードメニューから文字コードを切り替えることもできますが…

場合によっては文字が化けていることに気づかずに保存してしまい、大惨事になってしまうこともあります。
…というか文字コード推測できるならなぜ表示しない!!!と突っ込んでしまいました…w

一応VSCodeの開発者的にはさまざまな理由から”敢えて”自動で切り替わらないようにしているとのことでしたが、正直使い辛過ぎるのでなんとかならないかと方法を探したところ、方法を発見。
VSCodeの設定に

"files.autoGuessEncoding": true,

の一行を追記すればよいそうです。
VSCodeで文字コードを自動判別する – Qiita

これで再度先程のテキストファイルを開いたところ…

開いた時点で適切な文字コードが選択されるようになりました…!
これで誤った文字コードで保存してしまう事故も減りそうです。

  • この記事いいね! (0)
著者:ym

arcconfとVMware

今回の台風では、土曜の夜23時半から、朝方6時近くまで停電です。

自宅は今回も無事でした。不思議と強化された地域なのかもしれません。

停電情報:浜松営業所
停電情報:浜北営業所

ルータとNASは起動確認ができていたのですが、サーバ類は停電連発したり瞬電に備えて、わざと自動起動しない様に設定してあるので、出勤してから電源を入れて影響調査を開始です。起動自体は、無事、なにごとも無く起動ができてよかったのですが、RAIDの内のHDDが一本逝ってることを確認しました。

Apadptec RAID 5405 が上に VMware ESXi を入れているので、本来であれば arcconf を遠隔実行できる環境が構築できるはずなのですが、このマシンについてはうまくインストールが出来ず、RAID BIOS 画面レベルでの復旧が必要です。

RAID1 + HOTスペアという構成ですが、パツッとHDDが破損してくれれば良いですが動作はするけどミディアムエラーなどの場合、BIOS 操作レベルでは、どのHDDが故障したのか、スペアディスクはすでに切り離されたディスクなのか。などが判断しにくい状況です。

共有ディスクストレージもないし、無償の仮想サーバを使用しているので、やむを得ず全て手動です。

一旦すべてのディスクイメージをバックアップし始めました。

この作業に2-3日かかるので、まずはコツコツとバックアップです。

  • この記事いいね! (0)
村上 著者:村上

【CSS】要素内のテキストの改行や空白を操作するプロパティ「white-space」

久しぶりに感じるCSSについての記事です。
今回紹介するのは、テキストの改行や空白を操作できる「white-space」というプロパティについて。
新しく使用したプラグインのせいか、テキストが改行されなくなったので、その対処法です。

 

まず、プロパティの値と、その説明については下記をご覧ください。
なお、参考にさせていただいたサイトはこちらから。

white-spaceとは|コーディングのプロが作るCSS辞典
https://html-coding.co.jp/annex/dictionary/css/white-space/

プロパティの値 説明
normal(初期値) テキスト内の連続する半角スペース、タブ、改行を一つの半角スペースにまとめ、自動的に折り返しをして表示
nowrap テキスト内の連続する半角スペース、タブ、改行を一つの半角スペースにまとめて表示。なお自動的な折り返しは行わない
pre テキスト内の連続する半角スペース、タブ、改行をそのまま表示。なお自動的な折り返しは行わない
pre-wrap テキスト内の連続する半角スペース、タブ、改行をそのまま表示し、それに加えて自動的な折り返しも行う
pre-line ソース中の連続する半角スペース、タブを一つの半角スペースにまとめて表示する。しかし、改行している箇所は改行して表示し、それに加えて自動的な折り返しも行う

以前は normal のままだったのですが、プラグインの影響なのか、改行コードが無効になっていたため、pre-wrap に変更しました。
すると、問題なく改行されました。
改行やスペースをそのまま表示するのなら、pre でもいいのですが、これだと文字の折り返しが行われないため、pre-wrap がおすすめです。

 

以上、改行コードが向こうになってしまった場合の対処法でした。
皆様も、もし何らかのライブラリやプラグインの影響で、テキストが改行されなくなったり、スペースがおかしいと思った時は、こちらのプロパティを調整してみてください。

ちなみに、使用したプラグインは「react-string-replace」です。
リッチテキストを使用するために導入しました。

  • この記事いいね! (0)
asaba 著者:asaba

積上げグラフの誤表示について

今回は積上げグラフの値の割合がおかしい時の対処法を備忘録として残します。

 

Excelで積み上げ横棒グラフを作る時に、偶に下の画像のように

割合が合わないグラフが出来上がる時があります。

 

 

明らかにAの方が値が大きいのにBの15.7%の割合のほうが

 

大きいと認識して表示しています。

 

原因は、データ系列の書式設定にありました。

 

データ系列にカーソルを合わせた後にグラフツールのレイアウトタグで軸というコマンドを選びます。

 

主横軸という選択欄が表示されたら「その他の主横軸オプション」を選びます。

 

 

軸の最小値が0.75最大値が1.00になっているとデータの75%付近までしか表示できなくなってしまうので

最小値を0にしてデータ系列を全て表示するように修正をします。

 

前のデータの範囲が0から1なのに関わらずコピーをして新しいグラフを作ろうとすると稀にこのようなグラフが出来てしまいます。

予防の方法はまだ分かりませんが、なってしまった時の対策として綴らせていただきました。

 

  • この記事いいね! (0)
著者:杉浦

正規表現の最短一致指定子としての”?”

 正規表現には”*”、”+”、”{m,n}”などの様な繰り返しの量指定子があります。これら量指定子はそのままの場合、最長のマッチになるようにマッチングを行います。具体的には下図です。
 
 ”(a+)(a+)”で文字列”aaaaa”をマッチさせました。m[1]にはグループ1である最初のカッコの”a+”にマッチしたaが、m[2]にはグループ2である二つ目のカッコの”a+”にマッチしたaが、格納されています。最長のマッチになる様にマッチングを行う、というのは、”m[1]=aaaa”とあるようにマッチ全体が成立する範囲でできる限り多くの文字列を含もうとする動作のことです。正規表現全体のマッチが成立しなくなるまで、マッチングを続けるとも言えます。逆に最短になるようにマッチを行う方法もあり、その指定子が”?”です。”*?”や”+?”の様に繰り返し指定子の直後に”?”をつけることで最短マッチになります。最短マッチの例が下図です。
 
 ”(a+?)(a+)”で文字列”aaaaa”をマッチさせました。先ほど同様にm[1]、m[2]にそれぞれのグループが格納されています。今度は”m[1]=a”とあります。最短になるようなマッチです。この場合、繰り返し指定子がマッチしたらすぐにマッチングを終了するという動作になります。そのため”a+”が成立する”a”一文字でグループ1の部分のマッチングが終了しました。
 最短一致指定子が有効なのは例えばタグの様な特定の文字で括られたものの検索です。”<.*?>“とした場合、<の次に初めて>が出た時点でマッチングを終了してくれます。逆にダメなパターンでありがちなのは”$”や”\z”の様な行末指定です。頻繁にマッチ終了と行末か否かの判断が繰り返されて実行時間が遅くなります。

  • この記事いいね! (0)
村上 著者:村上

【Cordova】アプリアイコンにバッヂを追加するプラグイン「cordova-plugin-badge」

今回はCordovaのプラグインのご紹介。
お客様からのご要望で、LINEやFacebookのように、アプリのアイコン右上に赤丸や数字で通知数を表示させたいとのことでした。

現在試しているプラグインは「cordova-plugin-badge」というものです。
GitHubのページは下記から。

GitHub – katzer/cordova-plugin-badge: Access and modify badge numbers
https://github.com/katzer/cordova-plugin-badge

 

プラグインの導入方法ですが、まず下記のコマンドでプラグインを追加します。

cordova plugin add cordova-plugin-badge

なお、もしエラーが発生した場合は、下記のコマンドをお試しください。

cordova plugin add https://github.com/katzer/cordova-plugin-badge.git

上記のコマンドで、プラグインの追加まではできたので、今度はソースに下記のようにコードを追加します。

document.addEventListener('deviceready', function () {
    cordova.plugins.notification.badge.set(10);
}, false);

なお、セットしている数値が、バッヂに表示される値になります。

…が、何故か、私の環境では Android、iOS共にバッヂが表示されず…!
現在原因を調査中です。
…アプリを開いた時にリセットされているとかかな?

 

ということで、アプリアイコンにバッヂを表示するためのプラグイン「cordova-plugin-badge」でした。
まだ動いてはいませんが、導入自体はすごく簡単だったので、正常に動作すればかなりおすすめできるプラグインだと思います。
とりあえず、バッヂが表示されるように調整頑張ります…!

  • この記事いいね! (0)
著者:杉浦

アイコン素材集FLATICON

 フリー素材集というものはいくらあっても足りません。FLATICONはアイコン検索エンジンです。検索対象はFLATICONに登録されたアイコンのみですが、その数は2018/07/27時点で976,000と膨大です。そして登録されたアイコンの多くはフリー素材です。

 様々な人や団体が、FLATICONにアイコンを登録するだけあって、人気の指数やアイコンのパッケージ化、タグ付けといった便利なカスタマイズ要素が多々あります。ただ、アイコンの画風で違いを付けにくく信用や声望で成り立ってるようなのでクレジット表記、クリエイティブコモンズには特に注意が必要です。
関連記事
【フリー素材】アイコン素材なら商用利用可の「icooon-mono」がおすすめ
ウィキメディア・コモンズの紹介

  • この記事いいね! (0)