<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>技術ブログ &#8211; FITSブログ</title>
	<atom:link href="http://blog.fits-inc.jp/category/%e6%8a%80%e8%a1%93%e3%83%96%e3%83%ad%e3%82%b0/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fits-inc.jp</link>
	<description>Webシステムの受託開発でお困りなら</description>
	<lastBuildDate>Thu, 20 Jun 2024 22:33:04 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>http://blog.fits-inc.jp/wp-content/uploads/2024/06/cropped-image-5-32x32.png</url>
	<title>技術ブログ &#8211; FITSブログ</title>
	<link>http://blog.fits-inc.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>php実行時にlibicuio.73.dylibphpの参照エラー</title>
		<link>http://blog.fits-inc.jp/2024/06/20/libicuio-73-dylibphp/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Thu, 20 Jun 2024 22:33:04 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[icu4c]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=1144</guid>

					<description><![CDATA[先日、開発環境を立ち上げる際にphp実行時エラーに遭遇しました。 brew info で調べてみるとicu4cの74が入っていたようなので、Qiitaや他のテックサイトを参考に、gitからicu4cの73をbrew ta [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日、開発環境を立ち上げる際にphp実行時エラーに遭遇しました。</p>



<pre class="wp-block-code"><code>% php -v
dyld&#91;84774]: Library not loaded: @loader_path/../../../../opt/icu4c/lib/libicuio.73.dylib
Referenced from: &lt;90055B36-6315-3FD7-9F54-5F9D08D9F325> /opt/homebrew/Cellar/php@8.0/8.0.30/bin/php
Reason: tried: '/opt/homebrew/Cellar/php@8.0/8.0.30/bin/../../../../opt/icu4c/lib/libicuio.73.dylib' (no such file), '/usr/local/lib/libicuio.73.dylib' (no such file), '/usr/lib/libicuio.73.dylib' (no such file, not in dyld cache)
zsh: abort php -v

</code></pre>



<p>brew info で調べてみるとicu4cの74が入っていたようなので、Qiitaや他のテックサイトを参考に、gitからicu4cの73をbrew tapしてインストールする方法を試していたのですが、gitリポジトリでgit clone する際にicu4cのログがgit logで見つからず（おそらくパスが間違っていたのだと思うのですが）、最終的に下記の方法でlibicu4cの7.3をインストールしました。</p>



<pre class="wp-block-code"><code>wget https://raw.githubusercontent.com/Homebrew/homebrew-core/6aca0f221ee4ac0c25735dbf31cc01fed984d8f6/Formula/icu4c.rb<br>brew reinstall --formula icu4c.rb</code></pre>



<p>最終的にはphp8.0をバージョンアップすることで恒久対応を行ったのですが、取り急ぎphp8.0を使わなくてはいけない方でlibicu4cがバージョンアップされてしまって困っている方がいたら上記の方法で解決できる可能性があります。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>LaravelAdminの管理ユーザー作成時に「Choice question must have at least 1 choice available.」</title>
		<link>http://blog.fits-inc.jp/2022/02/12/laraveladmin%e3%81%ae%e7%ae%a1%e7%90%86%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e4%bd%9c%e6%88%90%e6%99%82%e3%81%ab%e3%80%8cchoice-question-must-have-at-least-1-choice-available-%e3%80%8d/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Sat, 12 Feb 2022 15:05:29 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[Laravel]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=971</guid>

					<description><![CDATA[LaravelAdminで管理ユーザーを作成しよう php artisan admin:create-user したときに、タイトルのエラーが出て焦りました。 原因と解決策 原因は、適切なロールを作成していなかったためで [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>LaravelAdminで管理ユーザーを作成しよう php artisan admin:create-user したときに、タイトルのエラーが出て焦りました。</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="775" height="420" src="https://blog.fits-inc.jp/wp-content/uploads/2022/02/image.png" alt="" class="wp-image-973" srcset="http://blog.fits-inc.jp/wp-content/uploads/2022/02/image.png 775w, http://blog.fits-inc.jp/wp-content/uploads/2022/02/image-300x163.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2022/02/image-768x416.png 768w" sizes="(max-width: 775px) 100vw, 775px" /></figure>



<pre class="wp-block-code"><code> Please enter a username to login:
 > admin

 Please enter a password to login:
 >

 Please enter a name to display:
 > Administrator

In ChoiceQuestion.php line 36:
  Choice question must have at least 1 choice available.</code></pre>



<h2 class="wp-block-heading" id="原因と解決策">原因と解決策</h2>



<p>原因は、適切なロールを作成していなかったためでした。<br>※管理ユーザー作成時に少なくとも一つはロールがいる</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IAMのダッシュボードで iam:ListMFADevices のエラーが出る</title>
		<link>http://blog.fits-inc.jp/2021/11/21/iam%e3%81%ae%e3%83%80%e3%83%83%e3%82%b7%e3%83%a5%e3%83%9c%e3%83%bc%e3%83%89%e3%81%a7-iamlistmfadevices-%e3%81%ae%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%8c%e5%87%ba%e3%82%8b/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Sun, 21 Nov 2021 07:20:54 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=963</guid>

					<description><![CDATA[IAM ユーザーでログインし、MFAを設定しようとしたところ、次のようなエラーが表示されました この操作を実行するために必要なアクセス許可がありません。アクセス許可を追加するように管理者に依頼してください。User: a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>IAM ユーザーでログインし、MFAを設定しようとしたところ、次のようなエラーが表示されました</p>



<p>この操作を実行するために必要なアクセス許可がありません。アクセス許可を追加するように管理者に依頼してください。<br>User: arn:aws:iam::0123456789012:user/XXXis not authorized to perform: iam:ListMFADevices on resource: user XXX</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="232" src="https://blog.fits-inc.jp/wp-content/uploads/2021/11/image-1-1024x232.png" alt="" class="wp-image-965" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/11/image-1-1024x232.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/11/image-1-300x68.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/11/image-1-768x174.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/11/image-1.png 1441w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>IAMで特に何も考えずにユーザを作成した場合は、IAMUserChangePassword の権限しか付与されていないので、iam:ListMFADevices など MFAの操作に必要な権限を付与して上げる必要があります。</p>



<p>ただし、MFAは単純な表示以外にも有効化、無効化などの各種操作が必要となります。具体的などのようなポリシーを付与すればよいかは、下記の記事が参考になります。</p>



<p>クラスメソッド株式会社様の「IAMユーザ本人にMFAを管理してもらうためのIAMポリシー」の記事<br><a href="https://dev.classmethod.jp/articles/iam-mfa-policy/">https://dev.classmethod.jp/articles/iam-mfa-policy/</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Power Automate Desktop をインストールする</title>
		<link>http://blog.fits-inc.jp/2021/07/06/power-automate-desktop-%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/</link>
		
		<dc:creator><![CDATA[editor]]></dc:creator>
		<pubDate>Tue, 06 Jul 2021 12:25:45 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[Power Automate Desktop]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=924</guid>

					<description><![CDATA[Power Automate Desktopのインストール手順を説明します。 Power Automate Desktopとは？ Microsoft社が提供するPower AutomateのRPA機能で、2020年に発表 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong>Power Automate Desktop</strong>のインストール手順を説明します。</p>



<h3 class="wp-block-heading">Power Automate Desktopとは？</h3>



<p>Microsoft社が提供する<strong>Power Automate</strong>のRPA機能で、2020年に発表されました。数百種類の自動化処理が可能です。Windows10ユーザーは追加費用なしで利用することができ、現在注目が高まっています。</p>



<h2 class="wp-block-heading">Power Automate Desktopのダウンロードとインストール</h2>



<p><a href="https://flow.microsoft.com/en-us/#home-signup">こちら</a>からPowerAutomateにアクセスし、<strong>「Start free」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="405" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/1.start_free-1024x405.png" alt="" class="wp-image-925" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/1.start_free-1024x405.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/1.start_free-300x119.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/1.start_free-768x303.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/1.start_free-1536x607.png 1536w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/1.start_free.png 1916w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>移動先でメールアドレスを入力し、<strong>「Start free」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="516" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/2.send_mail-1024x516.png" alt="" class="wp-image-926" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/2.send_mail-1024x516.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/2.send_mail-300x151.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/2.send_mail-768x387.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/2.send_mail.png 1052w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>SMS認証が必要なので、個人の携帯電話番号で認証します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="622" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/3.sms_-1024x622.png" alt="" class="wp-image-927" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/3.sms_-1024x622.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/3.sms_-300x182.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/3.sms_-768x467.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/3.sms_.png 1047w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>届いた認証コードを入力し、サインアップします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="542" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/4.enter_code-1-1024x542.png" alt="" class="wp-image-929" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/4.enter_code-1-1024x542.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/4.enter_code-1-300x159.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/4.enter_code-1-768x406.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/4.enter_code-1.png 1072w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>会社のアドレスか確認されます。<strong>「はい」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="752" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/5.check_company_mail-1024x752.png" alt="" class="wp-image-930" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/5.check_company_mail-1024x752.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/5.check_company_mail-300x220.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/5.check_company_mail-768x564.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/5.check_company_mail.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>アカウントの作成を行います。確認コードは登録したメールアドレスに送信されます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="876" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/6.signup-1024x876.png" alt="" class="wp-image-931" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/6.signup-1024x876.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/6.signup-300x257.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/6.signup-768x657.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/6.signup.png 1097w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>「引き続きアカウントにアクセスできるようにする」</strong>画面が表示されます。ここでは、認証用電話を登録しました。先ほどSMS認証を行った携帯電話番号で登録ができます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="615" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/8.account_auth-2-1024x615.png" alt="" class="wp-image-956" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/8.account_auth-2-1024x615.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/8.account_auth-2-300x180.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/8.account_auth-2-768x461.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/8.account_auth-2.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>アカウントが作成されます。<strong>「開始する」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="736" height="538" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/9.wellcome.png" alt="" class="wp-image-934" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/9.wellcome.png 736w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/9.wellcome-300x219.png 300w" sizes="auto, (max-width: 736px) 100vw, 736px" /></figure>



<p>移動したページの<strong>「ホーム」</strong>最下部のダウンロードリンクから、インストーラーがダウンロードできます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="493" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/10.download_installer-1024x493.png" alt="" class="wp-image-935" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/10.download_installer-1024x493.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/10.download_installer-300x144.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/10.download_installer-768x370.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/10.download_installer-1536x739.png 1536w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/10.download_installer.png 1918w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>インストーラーを起動します。<strong>「次へ」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="881" height="532" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/11.installer-1.png" alt="" class="wp-image-936" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/11.installer-1.png 881w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/11.installer-1-300x181.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/11.installer-1-768x464.png 768w" sizes="auto, (max-width: 881px) 100vw, 881px" /></figure>



<p>インストール先を指定し、使用条件を確認したのち、<strong>[インストール]を選択すると、Microsoftの使用条件に同意したことになります」</strong>にチェックを付けます。<br><strong>「インストール」</strong>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="605" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/12.install-2-1024x605.png" alt="" class="wp-image-937" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/12.install-2-1024x605.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/12.install-2-300x177.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/12.install-2-768x453.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/12.install-2.png 1128w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>インストール完了まで待ちます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="605" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/13.wait_-1024x605.png" alt="" class="wp-image-943" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/13.wait_-1024x605.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/13.wait_-300x177.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/13.wait_-768x454.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/13.wait_.png 1117w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>インストールが完了すると、インストール成功ウィンドウが表示されます。ここで、拡張機能をインストールします。今回はGoogle Chromeの拡張機能をインストールしました。<strong>「Google Chrome」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="865" height="520" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/13.imstall-3-2.png" alt="" class="wp-image-942" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/13.imstall-3-2.png 865w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/13.imstall-3-2-300x180.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/13.imstall-3-2-768x462.png 768w" sizes="auto, (max-width: 865px) 100vw, 865px" /></figure>



<p>chromeウェブストアから拡張機能をインストールします。<strong>「Chromeに追加」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="322" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/15.install_tool-1024x322.png" alt="" class="wp-image-957" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/15.install_tool-1024x322.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/15.install_tool-300x94.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/15.install_tool-768x241.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/15.install_tool.png 1522w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>拡張機能のインストールが完了したら、インストール成功ウィンドウの<strong>「Power Automate Desktopの起動」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="602" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/16.success2-1024x602.png" alt="" class="wp-image-944" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/16.success2-1024x602.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/16.success2-300x176.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/16.success2-768x452.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/16.success2.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Power Automate Desktopが起動します。<strong>「サインイン」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="976" height="606" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/15.login_.png" alt="" class="wp-image-941" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/15.login_.png 976w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/15.login_-300x186.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/15.login_-768x477.png 768w" sizes="auto, (max-width: 976px) 100vw, 976px" /></figure>



<p>登録したメールアドレスを入力し、<strong>「サインイン」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="862" height="523" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/18.signin.png" alt="" class="wp-image-945" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/18.signin.png 862w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/18.signin-300x182.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/18.signin-768x466.png 768w" sizes="auto, (max-width: 862px) 100vw, 862px" /></figure>



<p>Microsoftアカウントでのサインインを求められるので、パスワードを入力して<strong>「サインイン」</strong>を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="553" height="456" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/19.mso_password.png" alt="" class="wp-image-946" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/19.mso_password.png 553w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/19.mso_password-300x247.png 300w" sizes="auto, (max-width: 553px) 100vw, 553px" /></figure>



<p>この画面が表示されればサインイン完了です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="664" src="https://blog.fits-inc.jp/wp-content/uploads/2021/07/20.top_-1024x664.png" alt="" class="wp-image-947" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/07/20.top_-1024x664.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/20.top_-300x195.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/20.top_-768x498.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/07/20.top_.png 1495w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">以上でインストールは完了です。お疲れ様でした！</h4>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Amazon WorkMail を使っていてアクセスエラーが表示される（解決）</title>
		<link>http://blog.fits-inc.jp/2021/06/12/amazon-workmail-%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%84%e3%81%a6%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%8c%e8%a1%a8%e7%a4%ba%e3%81%95%e3%82%8c%e3%82%8b%ef%bc%88/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Sat, 12 Jun 2021 00:24:53 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[Amazon WorkMail]]></category>
		<category><![CDATA[AWS]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=902</guid>

					<description><![CDATA[Amazon WorkMail を設定して、いざWebアプリケーションにアクセスしようとした際に下記のエラーが表示されました。 アクセスエラー　このアプリケーションはディレクトリで有効化されていません。詳細については、管 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Amazon WorkMail を設定して、いざWebアプリケーションにアクセスしようとした際に下記のエラーが表示されました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="489" height="171" src="https://blog.fits-inc.jp/wp-content/uploads/2021/06/image-3.png" alt="" class="wp-image-903" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-3.png 489w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-3-300x105.png 300w" sizes="auto, (max-width: 489px) 100vw, 489px" /></figure>



<p>アクセスエラー　このアプリケーションはディレクトリで有効化されていません。詳細については、管理者にお問い合わせ下さい。</p>



<p>実は単純にアクセス先のURLを間違って入力してしまっていたので、Amazon WorkMail より Organizations &gt; Organization settings &gt; Web Application に記載されているURLを正しく打てばOKでした。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="445" src="https://blog.fits-inc.jp/wp-content/uploads/2021/06/image-4-1024x445.png" alt="" class="wp-image-904" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-4-1024x445.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-4-300x130.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-4-768x334.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-4-1536x667.png 1536w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-4.png 1650w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>次の通り、正しく amazon WorkMail のトップ画面が表示されました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="915" height="691" src="https://blog.fits-inc.jp/wp-content/uploads/2021/06/image-5.png" alt="" class="wp-image-905" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-5.png 915w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-5-300x227.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-5-768x580.png 768w" sizes="auto, (max-width: 915px) 100vw, 915px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AWS Load Balancer 削除時に delete protection でエラー</title>
		<link>http://blog.fits-inc.jp/2021/06/05/aws-load-balancer-%e5%89%8a%e9%99%a4%e6%99%82%e3%81%ab-delete-protection-%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Sat, 05 Jun 2021 09:06:29 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[delete protection]]></category>
		<category><![CDATA[Load Balancer]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=893</guid>

					<description><![CDATA[　AWS で Load Balancer を削除しようとした際に下記画像のようなエラーが発生し、削除に失敗することがあります。 　以下の手順で削除保護を解除します。まず、対象の Load Balancer を右クリックし [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　AWS で Load Balancer を削除しようとした際に下記画像のようなエラーが発生し、削除に失敗することがあります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="783" height="247" src="https://blog.fits-inc.jp/wp-content/uploads/2021/06/image.png" alt="" class="wp-image-894" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/06/image.png 783w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-300x95.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-768x242.png 768w" sizes="auto, (max-width: 783px) 100vw, 783px" /></figure>



<p>　以下の手順で削除保護を解除します。まず、対象の Load Balancer を右クリックし、属性の編集を選択します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="258" height="241" src="https://blog.fits-inc.jp/wp-content/uploads/2021/06/image-1.png" alt="" class="wp-image-895"/></figure>



<p>　次に、削除保護が有効になっていると思いますので、チェックを外します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="420" src="https://blog.fits-inc.jp/wp-content/uploads/2021/06/image-2-1024x420.png" alt="" class="wp-image-896" srcset="http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-2-1024x420.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-2-300x123.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-2-768x315.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2021/06/image-2.png 1162w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　なお、AWSの公式ドキュメントでは、ドメインのCNAMEレコードをロードバランサーに向けていた場合は向き先を変更し、それが反映されてからロードバランサーを削除すること、とありますが、ここには保護機能働いていないため、とくにドメインの設定を変更しなくても消すことが出来ます。（その場合はロードバランサーのDNS名がわからなくなるため、ドメイン側の設定変更の際にすこし紐付けが大変になります）</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>balena CLI の os configure がエラーになる（Windowsの場合）</title>
		<link>http://blog.fits-inc.jp/2021/02/16/balena-cli-%e3%81%ae-os-configure-%e3%81%8c%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%ab%e3%81%aa%e3%82%8b%ef%bc%88windows%e3%81%ae%e5%a0%b4%e5%90%88%ef%bc%89/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Tue, 16 Feb 2021 14:29:59 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[balenaCLI]]></category>
		<category><![CDATA[balenaOS]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=843</guid>

					<description><![CDATA[　みなさん balenaOS ってご存知ですか？組み込み機器、IoTデバイスなどでDockerコンテナを実行するために最適化されたOSです。通常ですとこれらの機器のイメージを更新するためには、新しいイメージを micro [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　みなさん balenaOS ってご存知ですか？組み込み機器、IoTデバイスなどでDockerコンテナを実行するために最適化されたOSです。通常ですとこれらの機器のイメージを更新するためには、新しいイメージを micro SD などに焼き込んで、現地作業が必要でした。でも balenaOSなら、100%の更新可能性を目標としており、リモートでイメージを更新するための様々な機能が盛り込まれています。便利ですね。FITS でよく依頼を受ける、組み込み機器とWebシステムを組み合わせたシステムの作成時に威力を発揮しそうです！</p>



<h2 class="wp-block-heading">Windows で使う際は注意が必要</h2>



<p>　そんな素晴らしい balenaOS ですが、実際の運用では balena CLI や balena Cloud など、いくつかのツールやサービスと組み合わせて利用します。特に、デバイスの登録やイメージの作成で balena CLI を使うと思うのですが、現時点では</p>



<pre class="wp-block-code"><code>balena os configure</code></pre>



<p>コマンドは、Windowsでサポートされていません。実行すると</p>



<pre class="wp-block-code"><code>&gt;balena os configure --device xxxxxxxx
Unsupported platform error: the 'balena os configure' command currently requires the Windows Subsystem for Linux in order to run on Windows. It was tested with the Ubuntu 18.04 distribution from the Microsoft Store. With WSL, a balena CLI release for Linux (rather than Windows) should be installed: for example, the standalone zip package for Linux. (It is possible to have both a Windows CLI release and a Linux CLI release installed simultaneously.) For more information on WSL and the balena CLI installation options, please check:
- https://docs.microsoft.com/en-us/windows/wsl/about
- https://github.com/balena-io/balena-cli/blob/master/INSTALL.md</code></pre>



<p>というエラーメッセージが表示されますし、公式のドキュメントである<br><a href="https://www.balena.io/docs/reference/balena-cli/#os-configure-image">https://www.balena.io/docs/reference/balena-cli/#os-configure-image</a><br>にもしっかりと</p>



<pre class="wp-block-code"><code>Note: This command is currently not supported on Windows natively. Windows users are advised to install the Windows Subsystem for Linux (WSL) with Ubuntu, and use the Linux release of the balena CLI</code></pre>



<p>と、サポートされてない旨が書かれています。</p>



<p>　WSL上にUbuntuを入れLinux版の balena CLI を使用すれば問題なく動作します。Balenaでのテストは18.04でなされているようですが、手元環境では20.04 で問題なく動作しました。ただし、事前に Windows 版の balena CLI をインストール済みだと</p>



<pre class="wp-block-code"><code>/mnt/c/Program Files/balena-cli/bin/../client/bin/balena.cmd: 1: @echo: not found
/mnt/c/Program Files/balena-cli/bin/../client/bin/balena.cmd: 2: setlocal: not found
/mnt/c/Program Files/balena-cli/bin/../client/bin/balena.cmd: 4: Syntax error: "(" unexpected (expecting "then")</code></pre>



<p>と、パスが通っているWindows版のコマンドが実行されてしまい、エラーとなりますのでご注意ください。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>iOS で PUSH 通知を受けるまでの手順</title>
		<link>http://blog.fits-inc.jp/2020/10/14/ios-%e3%81%a7-push-%e9%80%9a%e7%9f%a5%e3%82%92%e5%8f%97%e3%81%91%e3%82%8b%e3%81%be%e3%81%a7%e3%81%ae%e6%89%8b%e9%a0%86/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Wed, 14 Oct 2020 15:15:01 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[APNs]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[PUSH通知]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=751</guid>

					<description><![CDATA[　iPhone/iPad上で動作する iOS のアプリケーションに対して PUSH 通知を送るまでの手順をまとめました。XCodeからビルドしてデバッグ実行でのPUSH通知受信と、Ad Hoc で端末にインストールした際 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　iPhone/iPad上で動作する iOS のアプリケーションに対して PUSH 通知を送るまでの手順をまとめました。XCodeからビルドしてデバッグ実行でのPUSH通知受信と、Ad Hoc で端末にインストールした際のPUSH通知受信の両方を解説します。</p>



<h2 class="wp-block-heading">Apple Developer Program への登録</h2>



<p>　iOS アプリの開発、特に PUSH 通知を使う場合、必ず Apple Developer Program の操作をすることになりますので、Apple Developer Program に登録しましょう。</p>



<p>Apple Developer Program 登録サイト<br><a href="https://developer.apple.com/jp/programs/enroll/">https://developer.apple.com/jp/programs/enroll/</a></p>



<p> 　登録までの期間は、弊社の実績で2営業日掛かりました。弊社の場合はFITS, Inc. という組織名（Team Name）が世界で重複していたため、最終的に FITS, INC. (Japan) という組織名への変更が必要でそのやり取りが入りましたので、それがなければ実際にはもう少し早く登録できた可能性があります。</p>



<h2 class="wp-block-heading">開発用証明書の作成</h2>



<p>　今後、プロビジョニングファイルの作成などに必要となるため、開発用の証明書（.cerファイル）を作成する必要があります。この証明書ファイルを作るのに先立って、証明書署名要求（CertificateSigningRequest.certSigningRequest）を作成する必要があります。こちらはMacであれば標準搭載されているキーチェーンアクセスから作成することができます。</p>



<h2 class="wp-block-heading">App ID の作成</h2>



<p>　アプリをユニークに識別し、プロビジョニングファイルを作成する際に必要となるApp IDを作成します。作成はIdentifiersメニューの＋マークから可能です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="266" src="https://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-14-235723-1024x266.png" alt="" class="wp-image-757" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-14-235723-1024x266.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-14-235723-300x78.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-14-235723-768x199.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-14-235723.png 1357w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　Bundle ID にはいわゆる逆ドメイン.アプリ固有の名前を付けます。例として、プッシュのサンプルアプリなら jp.fits-inc.push-sampleなどです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="393" src="https://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000153-1024x393.png" alt="" class="wp-image-758" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000153-1024x393.png 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000153-300x115.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000153-768x294.png 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000153-1536x589.png 1536w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000153.png 1693w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　今回はPUSH通知のアプリを作成するので、 Capabilities の Push Notifications にチェックを入れるのをお忘れなく。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="975" height="489" src="https://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000825.png" alt="" class="wp-image-759" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000825.png 975w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000825-300x150.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-000825-768x385.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>　Description と Capabilities については後からでも変更可能なのであまり神経質にならなくても大丈夫です。Bundle ID については一度決めたら変更ができない（厳密には変更したら別な App ID となる）ため、typoなどがないよう注意して作成してください。</p>



<h2 class="wp-block-heading">プロビジョニングプロファイルの作成</h2>



<p>　アプリのダウンロード（配信）に必要となるファイル。証明書＋AppID＋端末のUDIDリスト＝プロビジョニングプロファイルです。</p>



<p>　作成したアプリを Ad Hoc などで配信するためにはプロビジョニングプロファイルの作成が必要となります。プロビジョニングプロファイルは下記画像のようにProfilesメニュー選択後の画面で＋マークをクリックすることで作成可能です。プロビジョニングプロファイルに紐づける App IDや Device の UDID はあとから増減可能ですが、Typeについては後から変更できません。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1000" height="351" src="https://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-002016.png" alt="" class="wp-image-761" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-002016.png 1000w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-002016-300x105.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/10/スクリーンショット-2020-10-15-002016-768x270.png 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<p>　生成されたプロビジョニングプロファイル xxx..mobileprovision をダブルクリックすることで、Mac に取り込むことができます（後ほどipaファイルを作成する際に参照します）。プロビジョニングプロファイルが取り込まれているかどうかは、キーチェーンアクセスから確認が可能です。</p>



<h2 class="wp-block-heading">APNs サーバと通信するための証明鍵の取得</h2>



<p>　PUSH通知を送るためには、APNs（Apple Push Notification サービス）のサーバと通信を行う必要があります。APNｓサーバとの通信にはp12形式の証明書またはp8形式の鍵が必要となるのですが、Provider サーバ（APNsサーバと直接通信するサーバ）が対応しているのであればp8形式の鍵がおススメです。<br>　このp8形式の鍵とp12形式の証明書の2種類が存在し、どちらを使ってもAPNs サーバと通信できる、ということを知らずに、前半をp12前提で後半をp8前提の手順書やドキュメントで進めると混乱しますのでご注意ください。<br>　p12形式の証明書、正確にはPKCS#12（Public Key Cryptography Standard#12）は、公開鍵証明書と秘密鍵をパスワードで暗号化したものです。Apple Developer Program で p12形式の証明書を作成する場合はAppIDを指定して作成するので、アプリごとに証明書を作り直す必要があります。一方 p8 形式の鍵はApple Developer Program の ID と紐づくため、アプリごとに作り直す必要がない（くわえて作成までの手間も少ない）ため、p8形式の鍵をおススメします。</p>



<h2 class="wp-block-heading">Provider サーバの構築</h2>



<p>　APNsサーバと通信するためのProviderサーバとしては、ニフクラ mobile backend を使う方法や、Firebase Cloud Messaging や AmazonSNS の APNs 向けインタフェースを使用して構築する方法がありますが、今回はお手軽に Docker のコンテナ（CentOS）にサクッと node で構築します。</p>



<h4 class="wp-block-heading">Docker コンテナ起動</h4>



<p>　今回使用を想定しているnode-apnは CentOS の7系でも8系でも動作を確認しているのですが、今回は CentOS 7 で説明を進めます。下記コマンドでコンテナを作成しbashを実行します。</p>



<pre class="wp-block-code"><code>docker run -it centos:cnetos7 bash</code></pre>



<p>　簡単に入る Node.js の 10.x を入れます。レポジトリのインストールとパッケージのインストールを一気にやります。<br>※あくまでサンプルなので 10.x を入れてますが、10系は2021年4月にサポートが切れますので、12系の導入も検討してください。</p>



<pre class="wp-block-code"><code># curl -sL https://rpm.nodesource.com/setup_10.x | bash -
# yum install nodejs</code></pre>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>npm WARN optional SKIPPING OPTIONAL DEPENDENCY の解消方法について</title>
		<link>http://blog.fits-inc.jp/2020/10/08/npm-warn-optional-skipping-optional-dependency-%e3%81%ae%e8%a7%a3%e6%b6%88%e6%96%b9%e6%b3%95%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Thu, 08 Oct 2020 13:33:34 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[fsevents]]></category>
		<category><![CDATA[npm]]></category>
		<category><![CDATA[SKIPPING OPTIONAL DEPENDENCY]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=749</guid>

					<description><![CDATA[　本日npmで作業を行っている際に が赤字で表示されたので、気になって調査した結果をまとめました。 　この表示自体は、Mac 環境で必要となるfsevents のインストールが Linux 環境であったためスキップされた [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　本日npmで作業を行っている際に</p>



<pre class="wp-block-code"><code>npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/pm2/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})</code></pre>



<p>が赤字で表示されたので、気になって調査した結果をまとめました。</p>



<p>　この表示自体は、Mac 環境で必要となるfsevents のインストールが Linux 環境であったためスキップされた、という表示です。</p>



<p>　解消方法を調べると -f オプションをつけるという方や、&#8211;no-optional オプションをつけろという方、また package.json の optionalDependencies に設定しろ、という話が Qiita や Stack Overflow で見つかります。</p>



<p>　その後も調査すると経緯として、オプショナルなパッケージへの依存関係によってインストールが失敗した場合のログレベルについての議論が下記であり<br><a href="https://github.com/npm/cli/pull/169">https://github.com/npm/cli/pull/169</a><br>さらにこちらでも言及されているのですが<br><a href="https://github.com/npm/cli/issues/1112">https://github.com/npm/cli/issues/1112</a><br>結論としては</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Fixing the “noisy chokidar/fsevents” problem, and how this is related to <a href="https://t.umblr.com/redirect?z=https%3A%2F%2Fgithub.com%2Fnpm%2Frfcs%2Fblob%2Flatest%2Faccepted%2F0017-add-funding-support.md&amp;t=N2NjNTJiZjY3MDc4NmU2NDNhMTM3MzY3Zjc4MWUwNjkzYzdkMGMyOCxHVUx1SXFSNA%3D%3D&amp;b=t%3AnXsLs1P4AptPf1fBr_nFxw&amp;p=https%3A%2F%2Fblog.npmjs.org%2Fpost%2F617484925547986944%2Fnpm-v7-series-introduction&amp;m=1&amp;ts=1602163578">npm fund</a>.</p><cite>https://blog.npmjs.org/post/617484925547986944/npm-v7-series-introduction</cite></blockquote>



<p>からわかるように、npmのv7でこの修正が入るようです。</p>



<p>　なので、fsevents に対する npm WARN optional SKIPPING OPTIONAL DEPENDENCY については、上記の経緯をプロジェクトに対してきちんと説明でき共通認識が持てるのであれば、特段抑止のための修正をプロジェクト内部で入れなくても良い、と結論づけました。</p>



<h2 class="wp-block-heading">仙台で node や docker で環境構築できる会社をお探しなら</h2>



<p>　もし、仙台で node や docker を用いた環境構築が可能なベンダーをお探しであれば、我々 <a href="https://www.fits-inc.jp" title="https://www.fits-inc.jp">ＦＩＴＳ</a> がお力になれるかもしれません。システム開発などでお困りの際は、ぜひお問い合わせフォームよりお声がけください。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Excel で INDIRECT でファイル名をセル参照にするとファイル開かないといけない問題を解決する</title>
		<link>http://blog.fits-inc.jp/2020/07/28/excel-%e3%81%a7-indirect-%e3%81%a7%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e5%90%8d%e3%82%92%e3%82%bb%e3%83%ab%e5%8f%82%e7%85%a7%e3%81%ab%e3%81%99%e3%82%8b%e3%81%a8%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Tue, 28 Jul 2020 16:00:58 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[INDIRECT]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=712</guid>

					<description><![CDATA[　長いタイトルとなってしまいましたが、Excel数式における INDIRECT 関数の例の問題を解決する方法をブログ記事にまとめました。例の問題というのは、INDIRECＴ で他のファイル（ブック）を参照した場合に起きる [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　長いタイトルとなってしまいましたが、Excel数式における INDIRECT 関数の例の問題を解決する方法をブログ記事にまとめました。例の問題というのは、INDIRECＴ で他のファイル（ブック）を参照した場合に起きる問題です。</p>



<h2 class="wp-block-heading">INDIRECTの#REF問題の詳細</h2>



<p>　INDIRECT 関数を設定したときには正しく値が取得できていたのに、ファイルを開きなおしたら「#REF」になってしまうこと、ありますよね。なぜこの問題が起きるかと言うと、そもそもExcelの関数は参照先のファイルが開いている時に動作するものと、開いていなくても動作するものに分けられます。INDIRECT関数はその中でも、参照先のファイルが開いている状態でないとエラーになってしまうという制約があるからです。</p>



<p>　それでは実際に2つのエクセルファイルを作成してINDIRECTがエラーになることを確認しましょう。適当なExcelファイル、book1.xlsx と book2.xlsx を作成します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="912" height="544" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルを作成する.jpg" alt="" class="wp-image-713" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルを作成する.jpg 912w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルを作成する-300x179.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルを作成する-768x458.jpg 768w" sizes="auto, (max-width: 912px) 100vw, 912px" /></figure>



<p>　それぞれのファイルの中身として、INDIRECT関数で参照されるブック名をTarget book name としてD2セルに、INDIRECT関数で参照される文字列を「Read this string→」というセルの横（D6セル）に記入します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="552" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-1024x552.jpg" alt="" class="wp-image-714" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-1024x552.jpg 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-300x162.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-768x414.jpg 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-1536x828.jpg 1536w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身.jpg 1916w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　book1 から book2の値を参照します。具体的な操作としては、book1のD4セルで=を打ち込み数式入力状態にしたうえで、book2のD6セルをクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="499" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-1024x499.jpg" alt="" class="wp-image-715" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-1024x499.jpg 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-300x146.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-768x374.jpg 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-1536x748.jpg 1536w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する.jpg 1987w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　book1に数式が入力され、book2のD6セルのない世杖ある「This is book2」が表示されました。余談ですが、この状態でbook2を閉じると、下記のようにbook2のパス（例では「=&#8217;C:\Users\xxx\Desktop\[book2.xlsx]Sheet1&#8242;!$D$6」）が数式上で展開されます。これがINDIRECTに指定すべき、正式なパスになります。INDIRECTを使用してないこの段階であれば、book2のD6セルを編集すると、book2が開いているか閉じているかに関わらず、book1のD4セルの値が更新されることが確認できます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="812" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される-1024x812.jpg" alt="" class="wp-image-717" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される-1024x812.jpg 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される-300x238.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される-768x609.jpg 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される.jpg 1264w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　次に、この値のうち、ファイル名（ブック名）にあたる[]で囲まれている箇所をセルを参照するように書き換えます。いきなりINDIRECTを書くのではなく、まずはINDIRECTのカッコ内に指定する値（例で言うと=&#8221;&#8216;C:\Users\xxx\Desktop\[&#8221; &amp; D2 &amp; &#8220;.xlsx]Sheet1&#8217;!$D$6&#8243;）を書くと非常にわかりやすいです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-1024x537.jpg" alt="" class="wp-image-718" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-1024x537.jpg 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-300x157.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-768x403.jpg 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-1536x806.jpg 1536w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　ではこの数式D4をさらにINDIRECTで囲むなり、他のセルにINDIRECTを書き、カッコの中身としてD4を指定するなどして、INDIRECTによる参照を有効にします。（例ではD5セルに「=INDIRECT(D4)」を入力しています）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="936" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する-1024x936.jpg" alt="" class="wp-image-719" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する-1024x936.jpg 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する-300x274.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する-768x702.jpg 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する.jpg 1058w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　この状態で、D2セルに入力した参照先のブック名をbook1、book2と交互に切り替えると、INDIRECTで参照しているD5セルの結果も「This is book1」「This is book2」と交互に切り替わります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="610" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-1024x610.jpg" alt="" class="wp-image-721" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-1024x610.jpg 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-300x179.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-768x458.jpg 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-1536x916.jpg 1536w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1.jpg 1674w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　book2 を参照した状態で book2を閉じると、D5セルが #REF として参照エラーになってしまうことが分かります。もし、きちんと値が表示されている、という場合はbook1を開きなおしてみてください。D5セルが#REFになると思います。同時にbook2も開くと、きちんと「This is book2」が表示されるため、数式のエラーではないことが分かります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="881" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる-1024x881.jpg" alt="" class="wp-image-722" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる-1024x881.jpg 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる-300x258.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる-768x661.jpg 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる.jpg 1104w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　それではどうすればいいのかというと、VBAのマクロを使用するというのが方法としてあります。何とかセルへの数式だけで実現したいところですが、セルの数式では実現不可能ですので仕方ありません。</p>



<p>　開発リボンから挿入 &gt; フォームコントロールのボタンを挿入します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="918" height="750" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/フォームのボタンを挿入する.png" alt="" class="wp-image-723" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/フォームのボタンを挿入する.png 918w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/フォームのボタンを挿入する-300x245.png 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/フォームのボタンを挿入する-768x627.png 768w" sizes="auto, (max-width: 918px) 100vw, 918px" /></figure>



<p>　この時、同時にマクロを作成できますので作成しておきます。名前は何でもよいですが、今回はリロード_Clickとしておきます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="675" height="626" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを新規作成する.png" alt="" class="wp-image-724" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを新規作成する.png 675w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを新規作成する-300x278.png 300w" sizes="auto, (max-width: 675px) 100vw, 675px" /></figure>



<p>　マクロを利用して、D4セルに記載される数式を<br>=&#8217;C:\Users\xxxx\Desktop[&#8221; &amp; Range(&#8220;D2&#8221;).Value &amp; &#8220;.xlsx]Sheet1&#8242;!$D$6&#8221;<br>とすることで<br>=&#8217;C:\Users\xxxx\Desktop[book1.xlsx]Sheet1&#8242;!$D$6<br>=&#8217;C:\Users\xxxx\Desktop[book2.xlsx]Sheet1&#8242;!$D$6<br>のいずれかに動的に切り替わるようにしています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="554" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-1024x554.jpg" alt="" class="wp-image-725" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-1024x554.jpg 1024w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-300x162.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-768x416.jpg 768w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-1536x832.jpg 1536w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する.jpg 1904w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>　なお、もしリロードボタンを押した際に下記のようにファイルダイアログが開くのであれば、ファイルが存在しない（または、数式が間違っている）可能性がありますので、数式やファイルの存在の確認をしましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="943" height="715" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/値の更新ダイアログ.jpg" alt="" class="wp-image-726" srcset="http://blog.fits-inc.jp/wp-content/uploads/2020/07/値の更新ダイアログ.jpg 943w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/値の更新ダイアログ-300x227.jpg 300w, http://blog.fits-inc.jp/wp-content/uploads/2020/07/値の更新ダイアログ-768x582.jpg 768w" sizes="auto, (max-width: 943px) 100vw, 943px" /></figure>



<p>　なお、拡張子がxlsxのまま保存すると作成したマクロが削除されてしまいますので、保存する際はマクロつきのエクセルファイル（.xlsm）として保存をお願いします。</p>



<p>　いかがでしたでしょうか？INDIRECTは閉じられたファイルに対して使用すると#REFのエラーが発生してしまい、それを回避するためにはINDIRECTではなくマクロを使用して外部ファイルを参照するような数式を生成する必要がある、という結果となりました。マクロまで作成するのは敷居が高い、場合によっては使えない可能性のある手段ですが、どうしても参照先ファイルをセル参照で柔軟に設定したい、という場合に使える重要なテクニックですので、ぜひお役立てください。</p>



<h2 class="wp-block-heading">Excel でお困りの方は</h2>



<p>　もし Excel でお困りのことがあれば、仙台のWebシステム受託開発のエキスパート集団であるFITSに是非お任せください。最近ですと、建築業界、建設業界のお客様より工事の原価管理、工程管理のExcelの解析、改善依頼など頂いた実績が御座います。前任者不在のExcelなどでお困りの際は、是非一度ご相談ください。</p>



<p>お問い合わせは<br><a href="https://www.fits-inc.jp/inquiry/">https://www.fits-inc.jp/inquiry/</a><br>からお気軽にどうぞ。システムに関する無料の相談、お見積りも受け付けております。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
