tag:blogger.com,1999:blog-90586987013902596662024-03-18T11:08:32.257+09:00ファーマーズハウスさわ福島県いわき市渡辺町で原木椎茸を中心とした栽培・加工、システム開発等を行っています。Unknownnoreply@blogger.comBlogger1167125tag:blogger.com,1999:blog-9058698701390259666.post-86902424562490777832024-03-02T15:29:00.009+09:002024-03-02T15:29:57.962+09:00農業の6次化(加工品作り)は終わったのか。<div>農業の6次化、とりわけ加工品作りは一時期のブームを経て、だいぶ下火になった感があります。加工品作りに手を出すくらいなら栽培に力を入れた方がいいとの声もよく聞きます。</div><div><br /></div><div>そんなわけで、なんやかんや丸9年くらいちょこちょこと加工品作りを作り続けてきて思うところを書いてみようと思います。</div><div><br /></div><div><br /></div><div>ブーム時によくあった加工品作りのパターンはだいたい以下のような感じでした。</div><div><br /></div><div><ul style="text-align: left;"><li>補助金を利用して商品開発をする</li><li>原材料として余りものや規格外品を利用する</li><li>地元の飲食店や加工業者とコラボする</li><li>加工業者に外注して加工する</li><li>デザイナーにラベルやパッケージの制作を依頼してデパートで販売しているようなものを目指す</li><li>イベントで消費者に配ってアンケートを取る</li><li>コンテストに出す</li></ul></div><div><br /></div><div>上に列挙したパターンが個々に悪い訳ではありませんが、3つ、4つ揃ってくると、あやしくなってくる印象です。</div><div><br /></div><div><div>では、なぜ当時、6次化をして加工品を作ることが流行ったのかと言うと、簡単にプラスアルファの利益が出せるというイメージがあったんじゃないかと想像しています。</div><div><br /></div><div>利益が出るというイメージの根拠となったのは、今まで捨てていた余り物や規格外品を販売するのだからプラスになる、さらに初期費用を補助金でまかなえば盤石、という素朴なものだったと思います。</div><div><br /></div><div>しかしながら、実際には、加工賃や容器、パッケージの費用が嵩み、ロットも少ないため高価格の商品が誕生。販路もないまま在庫を抱え、売れないし、売れても利益が出ない(そして、賞味期限が間近になり配る)……というような状況に陥った農家が少なくなかったんじゃないかと思います。</div><div><br /></div><div>この頃、質が悪かったのが、ダメなパターンの加工品作りでも、コンサルタントやデザイナーのような方と絡み、自分で育てた農産物で加工品を作るというストーリーを作るとウケが良かったのですよね。しかし、ウケの良さと、売れるかどうかはまた別ですからね。</div><div><br /></div><div>結局、栽培にせよ加工品作りにせよ、いかに付加価値を生み出すかを考え、利益が出る仕組みを作らなければなりません。そう簡単に濡れ手で粟はない、という当たり前の話かと思います。</div><div><br /></div><div>今よく言われる「加工品作りに手を出すくらいなら栽培に力を入れた方がいい」は、「プラスアルファで利益を出すために加工品作りに手を出すくらいならノウハウのある栽培に力を入れた方が勝率がいい」ということなのかなと思っています。</div></div><div><br /></div><div><div>一方で、それでも尚、6次化(加工品作り)をしっかりと農業経営に組み込むことには一定の価値があると考えています。特に経営の安定化という面では大きなポテンシャルを感じます。</div></div><div><br /></div><div>・</div><div>・</div><div>・</div><div><br /></div><div>ということで、思うところを書いてみました。何も調べていないので、事実と異なる認識がある可能性もあります。あしからず。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1DkHkc_H-DJWJnNgJajYzvcfQEsm6HJwACt07KIAznubBfRveI9bv7U_MNsWPVlH9PA4U16ArTIZ_uI89tMtsOQr1E5kXXwv5Lv_Dkii67FKQqgStKBpguU9J6Q5U5RLbrXHJKlhbRBeI49wE004rbjpPB5A5jSUfnSAcNFvEqa3CpCno_pTpD-H8RkU/s1883/IMG_20170722_202505_532.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="ピクルス" border="0" data-original-height="1883" data-original-width="1883" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1DkHkc_H-DJWJnNgJajYzvcfQEsm6HJwACt07KIAznubBfRveI9bv7U_MNsWPVlH9PA4U16ArTIZ_uI89tMtsOQr1E5kXXwv5Lv_Dkii67FKQqgStKBpguU9J6Q5U5RLbrXHJKlhbRBeI49wE004rbjpPB5A5jSUfnSAcNFvEqa3CpCno_pTpD-H8RkU/w400-h400/IMG_20170722_202505_532.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-28449510660680063952024-02-05T12:29:00.011+09:002024-03-07T14:47:39.055+09:00農業者による農業者のためのお金の話<div>最近、新規就農された方(研修中含む)と税金の申告や年金、保険、補助金といったお金まわりのことについて話す機会がありました。</div><div><br /></div><div>やはりお金のこととなると気軽に相談できる機会も限られるようで、どうしていいか分からない部分がままあるようです。</div><div><br /></div><div>そんなわけで、あくまでいちサンプルとしてですが、私の場合を簡単に書いてみようかと思います。(個人経営体で、法人化はしていません)</div><div><br /></div><div>誰かの参考になれば幸いです。</div><div><br /></div><div>(私の認識が間違っていることもあり得ますので鵜呑みにせず、ご自身でしっかり調べるようにしください)</div><div><br /></div><div><br /></div><div><b>【確定申告】</b></div><div>ちゃんとやる。</div><div><br /></div><div>収入がない場合も、住民税の申告はちゃんとやる(→国民健康保険の軽減を受けるため)。</div><div><br /></div><div>農業の収入が発生したら青色申告をする。要件を満たし65万円の控除を受ける。経営の状態をしっかり把握する。</div><div><br /></div><div><br /></div><div><b>【国民健康保険】</b></div><div>ちゃんと払う。</div><div><br /></div><div>(世帯)収入が少ない場合は(世帯全員が)住民税の申告をしていれば軽減される。</div><div><br /></div><div><br /></div><div><b>【年金】</b></div><div>国民年金はちゃんと払う。払っていれば終身の老齢基礎年金だけでなく、万が一の場合には障害年金や遺族年金が受給できる。</div><div><br /></div><div>払えないときは、確実に免除申請をする。免除申請をすれば受給資格を得られる。保険料の半分は税金による負担なので未納はただただ損。</div><div><br /></div><div>増額手段は付加年金、農業者年金、iDeCo(個人型確定拠出年金)、国民年金基金、小規模企業共済から選択。それぞれ掛金の税制(社会保険料控除 or 小規模企業共済等掛金控除)や受給の仕方が異なるので、家族構成や年齢、働き方、好み等に合わせて検討。</div><div><br /></div><div>私は、付加年金を納付の上で、iDeCoに加入しています。ただし、現状NISA(少額投資非課税制度)への積み立てを優先しているため(理由後述)iDeCoの掛金は最低額の5,000円にしています。</div><div><br /></div><div>iDeCoは、加入年数によって一時金として受給する際の退職所得控除の額が決まるので、最低額からでも早めの加入が有利です。NISAの枠が(いつの日か)埋まったら、もしくは資金に相当な余裕ができたら退職所得控除の額と調整して掛金を増額予定です。</div><div><br /></div><div><br /></div><div>・参考</div><div><a href="https://www.nakakamado.com/2018/02/nenkin.html">【農家の年金】「農業者年金」と「個人型確定拠出年金(iDeCo)」はどちらを選ぶべきか</a></div><div><br /></div><div><br /></div><div><b>【NISA】</b></div><div><div>今年から始まった新しいNISAはぜひ活用したいところです。枠も従来より大幅に大きくなり、将来への積立の目標値としてちょうどいいです。皮算用ではありますが、毎月5万円を年5%の複利運用で30年間積み立てると約4,000万円になります。</div><div><br /></div><div>iDeCoは掛金が所得控除の対象となる点でNISAより有利ですが、私は突然の資金需要への対策としてNISAを優先しています。</div></div><div><br /></div><div><br /></div><div><b>【保険】</b></div><div>青色申告をして収入保険に入る。その他、事業内容に応じて適宜入る。</div><div><br /></div><div>さわの場合は、水稲関連の農機具共済や農産物加工をやっているのでPL保険に入っています。</div><div><br /></div><div>その他、自動車保険、火災保険、個人賠償保険は必須として、生命保険や医療保険等については自身の状況に合わせて検討。一般論として入りすぎに注意。どういう状況に備えるものかを明確にすることが変な保険に入らないためのコツ。</div><div><br /></div><div>ちなみに、保険に関してはネットで入れるものが良いとも限らず、代理店経由じゃないと加入できないものもあります。</div><div><br /></div><div>・個人的に参考になった情報</div><div><a href="https://youtube.com/@user-un7fl8nu3r?si=WTYl8HbPetDPhNTS" target="_blank">センパイちゃんねる</a>(YouTube のチャンネルなんですが、保険についての冷静な考え方がとても参考になります)</div><div><br /></div><div><br /></div><div><b>【補助金】</b></div><div>活用できる補助金は活用。ただし、将来の選択肢を制限されることもあるので取捨選択は必要。また補助金ありきで事業を作ると長続きしない(印象)。</div><div><br /></div><div>私の場合、青年就農給付金(現在の農業次世代人材投資資金)は利用しませんでしたが、加工場を作るために市の補助金は利用しました。非常に助かりました。</div><div><br /></div><div><br /></div><div><b>【借入金】</b></div><div>以前は、農林水産省が出している「<a href="https://www.nakakamado.com/2021/01/financial-indicators.html">新たな農業経営指標</a>」の借入金に関する2つの指標を目安にしていましたが、いつの間にかこの指標は使われなくなった(?)ようです。ページが消えていました。まあ、新たなと言いつつ、すでに10年以上前に作られたものですからね。</div><div><br /></div><div>参考までに、指標では以下のようになっていました。</div><div><br /></div><div>・売上高借入金比率</div><div> 計算式:借入金/収入 計</div><div> 望ましい水準:0~100%</div><div><br /></div><div>・生産単位当たり借入金</div><div> 計算式:借入金/耕作している農地面積 合計</div><div> 望ましい水準:0~130 千円/10a</div><div><br /></div><div>借入金に関する指標を2つとも満たすには、10a当たりの売上高が13万円より多いのか、少ないのかにより、どちらの望ましい水準の上限がキャップになるかを把握する必要があります。</div><div><br /></div><div>多ければ「生産単位当たり借入金」の上限が、少なければ「売上高借入金比率」の上限がキャップになります。</div><div><br /></div><div><br /></div><div><b>【番外 - クラウドファンディング】</b></div><div>支援者の立場での感想として、公共性の高いものや、Kickstarter 的なプロジェクトは支援しやすい。資金の使い道に疑問を持ってしまうようなものは関わらない方がいい。素直に応援の気持ちで支援したものでも、その後の報告がない、というか活動がないと微妙な気持ちになる(信用が下がる)。</div><div><br /></div><div><br /></div><div style="text-align: center;">***</div><div><br /></div><div>「生活費+将来への積立」で年間どのくらい必要かを具体的にすると、経営計画も立てやすくなりますね。そして、そのための適正規模の見極めこそ農業経営の肝だと思っています。</div><div><br /></div><div>仕事ですから、結局はどのくらいの労働力を投入し、どのくらいのお金の出る入るを目指すかが重要です。その実現に向けた仕組みとして最適な規模はどの程度なのか。ここをピタッと決められると安定感が出てくると思います。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXbqJldqwQw44JhQl1skJBSfmciDoWWQ-Lfzs7B5S8owNb5uo5KX5cqXELPYhsU5-1nl3ZRql_qQhFP1eHbuA1ILSYFD0fBksJJfx-0BBdSvu9LWpArg8tCk9V4-fUNgCZ4C_YyJa_vF9lxoUF-398y2deQD2jM528-72SPGHJT3WLwoUGT1Z2hQzZzys/s3072/IMG_20240115_153430984.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="雪だるま猫" border="0" data-original-height="3072" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXbqJldqwQw44JhQl1skJBSfmciDoWWQ-Lfzs7B5S8owNb5uo5KX5cqXELPYhsU5-1nl3ZRql_qQhFP1eHbuA1ILSYFD0fBksJJfx-0BBdSvu9LWpArg8tCk9V4-fUNgCZ4C_YyJa_vF9lxoUF-398y2deQD2jM528-72SPGHJT3WLwoUGT1Z2hQzZzys/w400-h400/IMG_20240115_153430984.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-87018352824749574972024-01-27T12:01:00.003+09:002024-01-27T23:00:46.323+09:00徒然じゃない日々(28)<div>長らくのデフレによって(?)すっかり麻痺していたけれど、農業も経営なのだから経済や物価の状況変化にしっかり対応できる形にしておかないといけないなと、という思いが強くなっています。</div><div><br /></div><div>物価高による経費増で利益圧迫 → 値上げするも販売数が減少して売上低下 → 財務悪化 → 運転資金確保のため値下げして販売 → 赤字転落 → 状況打破のため借入れ → 効果的な投資ができず一層のジリ貧</div><div><br /></div><div>……こうした嫌なシナリオをいかに避けるかということですね。</div><div><br /></div><div><br /></div><div>財務基盤の安定性を高めておく。多角化によってリスク分散を図っておく。消費者の方に割安だと思ってもらえるよう商品価値を高め、将来的な値上げ余地をつくっておく。</div><div><br /></div><div>こうした地道な足場固め、準備を日頃からコツコツやっていかねばと改めて思うところです。</div><div><br /></div><div><br /></div><div style="text-align: center;">***</div><div><br /></div><div>そういえば、Amazon アソシエイトの画像リンクが使えなくなったようで、ブログ内にペタペタ貼ってあるものを修正しなければなりません……めんどい(笑)。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD03MoBTmNx3GqW2-Md24kH5oST5jHh6ZpjJGJGN3PN88xVwN1rn6ejvQL1ZIhmAfNhR-HpBBSKF-Yr0japkG_Dp4JbYmRj2KIuP200StgVP-fkkTsrFgGaiQr5LXmKRW2e1cVfrs8QDdUCqwgRJ7udGuugBd4P6PaHCSz1F7LjBQWUlkopkV2PfkpPoY/s1498/original_4235209a-1401-48f8-8e82-9da54c824d7c_IMG_20240117_161037352.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="きな粉とキクラゲ(猫)" border="0" data-original-height="1498" data-original-width="1498" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD03MoBTmNx3GqW2-Md24kH5oST5jHh6ZpjJGJGN3PN88xVwN1rn6ejvQL1ZIhmAfNhR-HpBBSKF-Yr0japkG_Dp4JbYmRj2KIuP200StgVP-fkkTsrFgGaiQr5LXmKRW2e1cVfrs8QDdUCqwgRJ7udGuugBd4P6PaHCSz1F7LjBQWUlkopkV2PfkpPoY/w320-h320/original_4235209a-1401-48f8-8e82-9da54c824d7c_IMG_20240117_161037352.jpg" width="320" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-60302259130651195092024-01-03T23:58:00.001+09:002024-01-04T17:37:56.069+09:002024年、本年もどうぞ宜しくお願い致します。遅ればせながら、明けましておめでとうございます。<div><br /></div><div>年明けから、とんでもない出来事が立て続けに起こり、気持ちの作り方が難しい年の始めとなりました。</div><div><br /></div><div>いつどこでどんな災害が起こるのか、本当に分からない時代です。いつ自分の身に振りかかかるかも分かりません。今できることは少ないですが、せめて寄付はしようと思います。</div><div><br /></div><div><br /></div><div>さて、せっかくの新年ですから、いろいろと整理整頓もしていこうと思います。</div><div><br /></div><div>まずは仕事の方で、今までふんわりとやったりやらなかったりしていた部分をはっきりさせて、やらないことはやらないと決めていきたいと思います。</div><div><br /></div><div>マンパワーの限られるわれわれのような小規模農家は、できることを増やすよりも、やらない方がいいことを明確にしていくことがより重要であるように感じています。</div><div><br /></div><div>もちろん、チャレンジは必要ですが、土台とリスクコントロールがあってこそ有意義なものとなります。</div><div><br /></div><div>あと比較的どうでもいいことですが、Twitter 改め X の方は更新を休止して、スマホからアプリを消してみました。Facebook や Instagram をやめた後も思いましたが、SNS って、意外と時間と思考を消費していますからね。別のことに時間を使おうと思います。</div><div><br /></div><div>まぁ、と言いつつ、<a href="https://bsky.app/profile/nakakamado.com" target="_blank">Bluesky</a> にアカウントを作りました(笑)。Bluesky はログイン無しで閲覧可能になったのがいいですね。</div><div><br /></div><div><br /></div><div>それでは、今年もどうぞ宜しくお願い致します。皆様にとって、安穏とした一年となりますように。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQKh3rfgn6hCBjVp7euvMNsQsAaxUJQD7BUpH7yEbmp_l5K0KCDXeNN2yaxqERYBz0dfkzV5G6q89L-cY9vOV_RWvcPp8iJEHeH9fwnFmQUbio3dfjryPxgIwi6EGBsc6ioYuXKoeE3UnZXWSCKN24yHPTdPE-43RGE1CYdJPY8fiD-87x913I06H83wo/s2314/IMG_20231222_145929352~2.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="きな粉とキクラゲ" border="0" data-original-height="2314" data-original-width="2314" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQKh3rfgn6hCBjVp7euvMNsQsAaxUJQD7BUpH7yEbmp_l5K0KCDXeNN2yaxqERYBz0dfkzV5G6q89L-cY9vOV_RWvcPp8iJEHeH9fwnFmQUbio3dfjryPxgIwi6EGBsc6ioYuXKoeE3UnZXWSCKN24yHPTdPE-43RGE1CYdJPY8fiD-87x913I06H83wo/w400-h400/IMG_20231222_145929352~2.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-46617768402087852872023-12-18T19:32:00.004+09:002024-02-13T17:38:56.137+09:00徒然じゃない日々(27)<div>今年のはじめ頃に以下の投稿をしまして、3つの経営方針を決めました。</div><div><br /></div><div><a href="https://www.nakakamado.com/2023/02/next10y.html"><b>【農業】これからの10年を生き抜くための経営方針</b></a></div><div><br /></div><div>1年弱ほど経ちましたので、状況を確認してみました。</div><div><br /></div><div><br /></div><div><div><b>方針① - 自己資金の範囲で経営しつつ、効率化を進め、資金や労働力の余力を作り出していく。</b></div><div><br /></div><div>→ 物価高による経費増、その他突発的な出費等により、資金的な余力を作ることはなかなか難しかったです。運転資金を厚めに確保しておく(<a href="https://www.nakakamado.com/2022/10/farm-management.html">売上高現預金比率50%の維持</a>)という目標を立てているものの、現状まだまだ遠いです。</div><div><br /></div><div>一方で、労働力≒時間的な余力は、小さな業務改善の積み重ねが効いてきて、それなりに作り出すことができてきました。</div><div><br /></div><div><br /></div><div><b>方針② - 余力をまた新たに農業、もしくは農業以外の事業に投下。ただし、状況の変化があったときに総崩れにならないように分散を意識する。</b></div><div><br /></div><div>→ 空いた時間を利用してプログラマーを始めました。ご依頼を頂き、業務アプリ等を作っています。これには、自作スマート農業をやってきた経験が大変活きました。プログラミング技術はもちろんですが、自身が実務の中で使うものを作ってきたので、使う側の気持ちを考えながらものを作ることができる、というのは強みになっている気がします。</div><div><br /></div><div>また、プログラマーは、時間を使うのみで資金的な投下がほぼ必要ないので、リスク分散という面でも小規模な農業との相性は良さそうに思います。</div><div><br /></div><div><br /></div><div><b>方針③ - 新たな事業は、あらかじめ撤退ラインを決めておく。状況によっては、一時的に休むという選択肢も準備しておく。</b></div></div><div><br /></div><div>→ プログラマーとしては、時間の余裕さえあれば働くことができるので、基本的には撤退ラインは考えず、自身のできる範囲で働くという形でよさそうです。</div><div><br /></div><div>資金を投下する場合には、明確な撤退ラインを決めます。</div><div><br /></div><div>・</div><div>・</div><div>・</div><div><br /></div><div>現状、このようなところです。</div><div><br /></div><div>作業1つひとつの無駄を省き、コツコツと効率化を進めてきたことで、時間に関しては、それなりのゆとりを生み出すことができるようになってきました。</div><div><br /></div><div>さわのような小規模家族経営の農家にとっては、<b>総労働時間に対する利益額</b>が重要な指標だと考えています。率ではなく額です。</div><div><br /></div><div>もちろん、品目ごとには利益率を把握して調整しないといけませんが、経営全体を見る場合は、率で考えてもあまり意味がないように思っています。</div><div><br /></div><div><br /></div><div>また今後、新たに資金を投下するような事業は、少なくとも売上高現預金比率50%を固く維持できるようになってからが安全そうな気がしています。</div><div><br /></div><div>農業をやっていく上で絶対に避けたいシナリオは、</div><div><br /></div><div>経費上昇と売価下落による利益圧迫→売上増やさなきゃ→資金を借り入れて規模拡大→さらなる経費上昇と売価下落、加えて人件費増と返済負担増によってますますジリ貧……</div><div><br /></div><div>となることです。</div><div><br /></div><div>そうならないためにも、早め早めの準備と、日々慎重な舵取りをしていこうと思います。</div><div><br /></div><div><br /></div><div style="text-align: center;">***</div><div><br /></div><div>ということで、師走も後半戦ですね。</div><div><br /></div><div>バタバタですが、穏やかな年末年始を過ごすためにも、しっかり乗り切りたいと思います!</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUO5u0Meu5Q8uBE71qAli3sEFZbr2YzQEfjRLufEDYrzUSQeXAoKKeGNdiKd_SOz_TbSMyhRS4qoU-Nzn5FJKy1e-p9VWWGYw4wG4Eam37HAfau1RILWc_mKkNcg10W4UanB9nzztB-JdozZm-HtK12xArfulsAFKZub_INvKz36aPmT7kBaFDsigL_Kc/s3072/IMG_20231207_112313460~2.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="猫玉" border="0" data-original-height="3072" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUO5u0Meu5Q8uBE71qAli3sEFZbr2YzQEfjRLufEDYrzUSQeXAoKKeGNdiKd_SOz_TbSMyhRS4qoU-Nzn5FJKy1e-p9VWWGYw4wG4Eam37HAfau1RILWc_mKkNcg10W4UanB9nzztB-JdozZm-HtK12xArfulsAFKZub_INvKz36aPmT7kBaFDsigL_Kc/w400-h400/IMG_20231207_112313460~2.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-56299591200689956712023-12-08T17:56:00.003+09:002023-12-08T18:35:58.310+09:00農業経営研修会をやりました(2023年12月)<div>先週末、所属している団体で、農業コンサルタントの佐川友彦氏をお呼びしての農業経営研修会をやりました。</div><div><br /></div><div>もともと団体の中で、経営改善のためにみんなで何かしたい!でも何をしたらいいかわからない!という状態が続いていました。</div><div><br /></div><div>もちろん、わからないなりにも、あーでもないこーでもないと話し合い、青色申告ができるようになろうとか、先輩農家を質問攻めにしようとか、少しずつ動いていました。</div><div><br /></div><div>そんな中で、実績あるプロの話を聞いてみたいという声があがり、今回の研修会を実施することになりました。</div><div><br /></div><div><br /></div><div><div>佐川氏については以前、著書も読ませていただきましたが、今回の研修会も得るものの多い会となりました。</div><div><br /></div><div>(「【<a href="https://www.nakakamado.com/2023/05/blog-post.html">読書】東大卒、農家の右腕になる。 小さな経営改善ノウハウ100(佐川友彦・著)</a>」)</div></div><div><br /></div><div><br /></div><div><iframe frameborder="0" marginheight="0" marginwidth="0" sandbox="allow-popups allow-scripts allow-modals allow-forms allow-same-origin" scrolling="no" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=iruinedo-22&language=ja_JP&o=9&p=8&l=as4&m=amazon&f=ifr&ref=as_ss_li_til&asins=B08CZKSFC1&linkId=53a57a2722979a2fa83d58d9aa1cb8fa" style="height: 240px; width: 120px;"></iframe> <div><br /></div></div><div><br /></div><div>やはり、われわれのような小さな経営体にとっては、ちょっとした工夫や改善の積み重ねが非常に重要であり、その実行体制をいかに作るかが肝であるということのように思いました。</div><div><br /></div><div>実行した工夫や改善は、佐川氏の場合であれば「<a href="https://tips.abe-nashien.com/" target="_blank">阿部梨園の知恵袋</a>」として一般公開していますが、例えば団体等の中で Wiki のような形で共有したり、というのもありなのかなと思いました。ひとりで悶々と取り組むよりは遥かに捗りそうな気がします。</div><div><br /></div><div>さらに、農業経営版の Qiita 的なもの?もしくは、まとめページ的なもの?があったら便利なのになーと思ったり。</div><div><br /></div><div>質疑応答でも、こちらのふわりとした質問に対して、事例紹介を交えつつ、切り口をしぼり、とても分かりやすくご回答していただき、大きな学びとなりました。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKEqyP20-6BdxuRFdc-7PV3bK8e6dzc4DVD1qh475zcr7OaDoMfz2fiF1k7fCo2Kt1CjNbKX5IVeIAIkqj-BXjXl2BFaL4bn-oHw_TYWJs5qHPN05KqY0jKq-B3774e_7w65XICgs-Cyba0rJlLZV8LfxsD1XRefJHiGTuCzPG6qorM-ryIKKs8WHXIqc/s4080/IMG_20231204_151455222.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4080" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKEqyP20-6BdxuRFdc-7PV3bK8e6dzc4DVD1qh475zcr7OaDoMfz2fiF1k7fCo2Kt1CjNbKX5IVeIAIkqj-BXjXl2BFaL4bn-oHw_TYWJs5qHPN05KqY0jKq-B3774e_7w65XICgs-Cyba0rJlLZV8LfxsD1XRefJHiGTuCzPG6qorM-ryIKKs8WHXIqc/w301-h400/IMG_20231204_151455222.jpg" width="301" /></a></div><div style="text-align: center;">(写真撮り忘れという致命的ミス)</div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-83621369273910871022023-11-27T20:05:00.007+09:002023-12-10T18:16:11.857+09:00【定期】家計の見直し(2023年11月)久しぶりの家計の見直しです。<div><br /></div><div>経営と家計が一体化した家族経営では、家計の最適化が心強い生存基盤になります。翻って、家族や自身にとって本当に価値あるものが何なのか、確認する良い機会になります。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">・家電を買うのは難しい</h3><div><br /></div><div>最近、洗濯機と冷蔵庫の調子が悪くなって買い直したのですが、いやはや、どの商品にするのか、どこで買うのか、どういう割引やキャンペーンが使えるのか、選択肢があり過ぎて考えるのが大変ですね。</div><div><br /></div><div>ていうか、そもそもなんですが、家電て高いんですね……。頓着がなさ過ぎて、昔ひとり暮らしを始めた頃の家電一式10万円!みたいなイメージで止まっていました(笑)。</div><div><br /></div><div>ひとまず、複数店舗とサイトを見比べて、予算内で必要な機能を満たしたものは買えた気がしますが……まぁ、欲はかかずに、問題なく使えるものが買えたならよしとしましょう。</div><div><br /></div><div>ちなみに、Haier の<a href="https://amzn.to/40YqbeC" target="_blank">洗濯機</a>と AQUA の<a href="https://amzn.to/3N0NfDE" target="_blank">冷蔵庫</a>を買いました。</div><div><br /></div><div><b>・追記</b></div><div>特に冷蔵庫は、今までのものが非常にイマイチだったので、生活の質がぐっと上がりました!上を見ればキリがありませんが、かといって安さだけを求めるよりは、ある程度のバランスで選んだ方が幸福度は上がりそうというのが今回の学びです(遅)。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">・いよいよ新NISAが始まる</h3><div><br /></div><div>いよいよ新NISAが始まりますね。少しずつでもやらないよりはマシなので、みちみちと積み立てていく予定です。</div><div><br /></div><div>SBI証券での積立設定もすでにできるようになっていたので、忘れないうちにやっておきました。</div><div><br /></div><div>農業という波のある職業であればこそ、やはりこうした有利な制度は積極的に利用して、いざという時のために備えていきたいですね。</div><div><br /></div><div>一応、iDeCoの方も加入年数確保のために最低掛金でやっていますが、いざというときに資金を用意できるようにと考えると、どうしてもNISAが優先になってしまうのですよね。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">・考えても仕方ないけど円の先行きとか</h3><div><br /></div><div>最近、米ドル/円が150円あたりをうろうろしていますが、この先どうなるのですかね。</div><div><br /></div><div>ユーロ/円も160円を超えていて、以前の感覚でこの相場を見てしまうと海外旅行もちょっと尻込みしてしまいます。</div><div><br /></div><div>このまま円が弱くなるなら何か輸出とかしたくなりますね。乾椎茸とか。</div><div><br /></div><div>物価高で厳しいからもっと補助を出してほしいという話も時々聞きますが、そうするとよりインフレ、より円安という方向に圧力がかかるわけで(実際はもっと複雑なのでしょうけど)、構造を変えない限りはより大変になっていくんじゃないかという気がします。経済って難しいですね。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">・昨今の雑感</h3><div><br /></div><div>そんなこんな日々ですが、心穏やかに過ごすためには、(生計を共にする)家族での価値観の共有はとても大切だなと思うところです。</div><div><br /></div><div>もちろん、完全一致なんてことはまず無理ですが、お互いが協力すればそれぞれ納得できる形は作れるんじゃないかと思います。</div><div><br /></div><div>また、その合意形成(と言うと大げさですが)に向けた行動自体に、けっこう大きな意味があるように思います。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIW_yRh1alF09OhX8NzHet5Gw-OxT09XJF7GBjXZi7lV0W1K4LkiW3IawK44QVoi5Fmke8AmGyBcLdw2NC_hx8FDDrk5uwRR_pMQvUNxIQdw2Cnl-dDONw6XDT-N3ig4oKOGZ0_b43vaDOL0SZ0BF9mJtth9-QfFD-zvdiaCLH0vNBcfUeQW72AuT9v2Q/s4080/IMG_20231114_104819433.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="犬と猫(コケモモときな粉)" border="0" data-original-height="3072" data-original-width="4080" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIW_yRh1alF09OhX8NzHet5Gw-OxT09XJF7GBjXZi7lV0W1K4LkiW3IawK44QVoi5Fmke8AmGyBcLdw2NC_hx8FDDrk5uwRR_pMQvUNxIQdw2Cnl-dDONw6XDT-N3ig4oKOGZ0_b43vaDOL0SZ0BF9mJtth9-QfFD-zvdiaCLH0vNBcfUeQW72AuT9v2Q/w400-h301/IMG_20231114_104819433.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-27636251336850832362023-11-24T16:46:00.011+09:002023-11-25T10:07:34.313+09:00Google フォームで決済機能付き注文フォームを実現する<div>Google フォームと GAS(Google Apps Script)で、クレジットカードによる決済機能付きの注文フォームを無料&サーバーレスで実現します。</div><div><br /></div><div>データベース代わりとしてスプレッドシート、確認メール等の送信に Gmail、オンライン決済には PAY.JP を使用します。</div><div><br /></div><div>(システムの構築・運用は無料ですが、決済手数料はかかります)</div><div><br /></div><div><br /></div><div>注文を受けた際の流れは以下のようになります。<b>丸数字付きの太字</b>が注文者の動き、その下がシステムの動きの簡単な説明になります。</div><div><br /></div><div>-----</div><b>① Google フォームから注文</b><div>→ Google フォームの回答をスプレッドシートに記録。決済ページのリンクを記載した確認メールを生成・送信する。</div><div><br /><div><b>② 決済ページにアクセス</b></div><div>→ メールアドレス、注文合計金額が表示された決済ページを生成する。決済ページには有効期限を設定。</div><div><br /></div><div><b>③ 決済</b></div><div>→ PAY.JP から Webhook を受け取り、スプレッドシートに決済完了を記録。決済完了のメールを生成・送信する。</div><div><br /></div><div><b>④ 注文完了</b></div><div>-----</div><div><br /></div><div>今回、在庫管理の部分については省いて作成しています。在庫管理については、「<a href="https://www.nakakamado.com/2021/09/form-gas.html">【GAS】Google フォームとスプレッドシートを連携して選択肢を動的に入力する。そして注文フォームを作ってみる。</a>」を参考にしてみてください。</div><div><br /></div><div>また、GAS によるシンプルな PAY.JP の導入については「<a href="https://www.nakakamado.com/2023/11/gas-payjp.html">GAS でオンライン決済 PAY.JP を導入する</a>」をご参照ください。</div><div><br /></div><div><br /></div><div style="text-align: center;">***</div><div><br /></div><div>それでは、以下 Google フォームを使用した決済機能付き注文フォームの作り方になります。PAY.JP のアカウントは作成済みの想定です(テストモードを使用)。</div><div><br /></div><div>(決済に関するものですので、一応こうやると動くよという参考程度のものとしてください。ご利用の際は自己責任でお願いします)</div><div><br /></div><div><br /></div><h3 style="text-align: left;">1)注文フォームの作成</h3><div><br /></div><div><div>まずは、Google フォームで簡単な注文フォームを作成します。とりあえず、今回は以下のようにしました。</div></div><div><br /></div><div><div>1) 商品 [プルダウン] ※1~複数個</div><div>2) お名前 [記述式](必須)</div><div>3) メールアドレス [記述式](必須)</div><div>4) お電話番号 [記述式]</div><div>5) 住所(続き) [記述式](必須)</div><div>6) お支払い方法 [ラジオボタン](必須)</div><div><br /></div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKMrmPbPyKBuIAO-oO6-HbPH6Ksj1sGHKWlYUMwiEFQZcX1YgDhNuBLd0_H55sBhWqXuPZ_FpFtpUAD4XCYTcFF1feWAMgb-PrkarR5eDUnPa4azHFHQm2wvbe1tEezry3jRs1ahvyZ5wn0yrrUZjjuh-nF-LJK5MwMrNjXtZ0QG-7AkTnPdq1YKdJNpM/s3979/Screenshot_20231124-161935-895.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3979" data-original-width="1080" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKMrmPbPyKBuIAO-oO6-HbPH6Ksj1sGHKWlYUMwiEFQZcX1YgDhNuBLd0_H55sBhWqXuPZ_FpFtpUAD4XCYTcFF1feWAMgb-PrkarR5eDUnPa4azHFHQm2wvbe1tEezry3jRs1ahvyZ5wn0yrrUZjjuh-nF-LJK5MwMrNjXtZ0QG-7AkTnPdq1YKdJNpM/w109-h400/Screenshot_20231124-161935-895.png" width="109" /></a></div><div><br /></div><div><br /></div><h3 style="text-align: left;">2)回答を記録するスプレッドシートの加工</h3><div><br /></div><div>フォームの回答先となる新しいスプレッドシートを作成します。</div><div><br /></div><div>「フォームの回答 1」シートの末列に「決済金額」「固有番号」「有効期限」「顧客番号」「決済状況」の5つの列を追加します。</div><div><br /></div><div>「商品情報」という名前のシートを追加、A列に「商品名」、B列に「価格」を入力しておきます。その際、1行目は項目名として使用し、2行目から追記します。フォームの商品数、順番とそろえてください。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMtquBZTqgyRrFOSSwjMKL_ebbxk53nKXFDn8VDtBCtUJ6d7HbKsV975Lz1D94u3wgDxZ9VChbxEPvqQZvD9z-k8o_qWZUCLniB7pB79wA6Wu4SpOGrZ4jfUquhyphenhyphenSBXJjrMRfRiLf5wxWTrpClzq5WS6g3hj-_9OboYiTY24S_M3E2kMnwyQoxoffdr94/s355/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(14).png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="200" data-original-width="355" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMtquBZTqgyRrFOSSwjMKL_ebbxk53nKXFDn8VDtBCtUJ6d7HbKsV975Lz1D94u3wgDxZ9VChbxEPvqQZvD9z-k8o_qWZUCLniB7pB79wA6Wu4SpOGrZ4jfUquhyphenhyphenSBXJjrMRfRiLf5wxWTrpClzq5WS6g3hj-_9OboYiTY24S_M3E2kMnwyQoxoffdr94/w400-h225/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(14).png" width="400" /></a></div><div><br /></div><div><br /></div><h3 style="text-align: left;">3)注文フォームから注文受付処理用の GAS を作成</h3><div><br /></div><div>フォームから GAS を作成します。フォームから作成することで、トリガー作成時に、イベントのソースとしてフォームを選択することができるようになります。</div><div><br /></div><div><div><b>「注文受付.gs」</b></div>
<pre class="prettyprint lang-js linenums">const sp = SpreadsheetApp.openById("スプレッドシート ID");
const sh = sp.getSheetByName("フォームの回答 1");
const lastRow = sh.getLastRow();
const lastCol = sh.getLastColumn();
const item_sh = sp.getSheetByName("商品情報");
function processOrder(e) {
Utilities.sleep(5000);
FormApp.getActiveForm(); // フォームへのパーミッションを与えるためのおまじない
const res = e.response.getItemResponses();
// 商品情報の取得
const itemCount = item_sh.getLastRow() - 1;
const item = item_sh.getRange(2, 1, itemCount, 2).getValues();
// 金額合計を計算
let amount = 0;
for(let i = 0; i < itemCount; i++) {
if(res[i].getResponse() != "") {
amount += res[i].getResponse() * item[i][1];
}
}
sh.getRange(lastRow, lastCol - 4).setValue(amount); // 合計金額を書き込み
const id = generateId(); // 固有番号を生成
sh.getRange(lastRow, lastCol - 3).setValue(id); // 固有番号を書き込み
// 固有番号の有効期限を計算
const timeStamp = new Date(sh.getRange(lastRow, 1).getValue());
let expirationTimestamp = new Date(timeStamp.setHours(timeStamp.getHours() + 1));
expirationTimestamp = Utilities.formatDate(expirationTimestamp, "JST", "yyyy/MM/dd HH:mm:ss");
sh.getRange(lastRow, lastCol -2).setValue(expirationTimestamp); // 有効期限を書き込み
sendConfirmationEmail(res, itemCount, item, amount, id); // 確認メールの送信
}
</pre>
<div>1行目の「スプレッドシート ID」を書き換えてください。</div><div><br /></div><div>processOrder 関数を、フォーム送信時に起動するようにトリガー設定をしておきます。</div><div><br /></div><div><br /></div><div><b>「固有番号の生成.gs」</b></div>
<pre class="prettyprint lang-js linenums">function generateId() {
const previousIdSet = sh.getRange(2, lastCol - 3, lastRow - 1, 1).getValues(); // 生成済みの固有番号を取得
let id;
let isDuplicate;
do {
id = generateRandomString(); // ランダムな文字列を生成
isDuplicate = checkForDuplicate(id, previousIdSet); // 重複をチェック
} while (isDuplicate);
return id;
}
function checkForDuplicate(value, previousValue) {
for (var i = 0; i < previousValue.length; i++) {
if (previousValue[i][0] === value) {
return true; // 重複が見つかった場合
}
}
return false; // 重複がない場合
}
function generateRandomString() {
const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let randomString = "";
for (var i = 0; i < 30; i++) {
let randomIndex = Math.floor(Math.random() * characters.length);
randomString += characters.charAt(randomIndex);
}
return randomString;
}
</pre>
<div><br /></div><div><br /></div><div><b>「確認メールの送信.gs」</b></div>
<pre class="prettyprint lang-js linenums">function sendConfirmationEmail(res, itemCount, item, amount, id) {
// メール本文の作成
const name = res[itemCount].getResponse(); // お名前
const email = res[itemCount + 1].getResponse(); // メールアドレス
const phone = res[itemCount + 2].getResponse(); // お電話番号
const address = res[itemCount + 3].getResponse(); // 住所
const payment = res[itemCount + 4].getResponse(); // お支払方法
let order = [];
for(let i = 0; i < itemCount; i++) {
order.push(item[i][0] + " " + res[i].getResponse() + "個");
}
let body = name + " 様\n\nご注文ありがとうございます。\n\n以下の内容でご注文を承りました。ご確認ください。\n\n-----\n" + order.join("\n") + "\n\n合計 ¥" + amount + "\n-----\n\nお届け先住所:" + address + "\n電話番号:" + phone + "\n\nお支払い方法:" + payment;
if(payment == "クレジットカード") {
const url = "ウェブアプリの URL";
body += "\n\nご注文内容を確認の上、以下リンク先よりお支払いを完了してください:\n" + url + "?id=" + id;
} else if(payment == "銀行振込") {
body += "\n\nご注文内容を確認の上、以下振込先へのお支払いを完了してください:" + "\n〇〇銀行\n△△支店\n普通 ×××××××";
}
// 確認メールの送信
GmailApp.sendEmail(
email,
"ご注文内容の確認と決済ページのご案内",
body,
{
from: "送信元メールアドレス",
name: "送信者名"
}
);
}
</pre>
<div>28行目の「送信元メールアドレス」、29行目の「送信者名」を書き換えてください。</div><div><br /></div><div>16行目の「ウェブアプリの URL」は後ほど書き換えます。</div><div><br /></div><div><br /></div><div><b>「決済ページの生成.gs」</b></div>
<pre class="prettyprint lang-js linenums">function doGet(e) {
const PUBLISH_KEY = "公開鍵";
const html = HtmlService.createTemplateFromFile('index');
// URL から固有番号を取得
const id = e.parameter["id"];
if(id == null) {
return HtmlService.createHtmlOutput("<center>無効な URL です。(1)</center>"); // 固有番号がない場合はエラーページを表示
}
// 対象の固有番号の行を特定
const idSet = sh.getRange(2, lastCol - 3, sh.getLastRow(), 1).getValues();
let rowNum = 0;
for(let i = 0; i < idSet.length; i++) {
if(id == idSet[i]) {
rowNum = 2 + rowNum + i;
break;
}
}
if(rowNum == 0) {
return HtmlService.createHtmlOutput("<center>無効な URL です。(2)</center>"); // 有効な固有番号がない場合はエラーページを表示
} else if(sh.getRange(rowNum, lastCol).getValues() != "") {
return HtmlService.createHtmlOutput("<center>無効な URL です。(3)</center>"); // 既に決済完了している場合はエラーページを表示
}
// 該当の注文を取得
const order = sh.getRange(rowNum, 1, 1, lastCol - 1).getValues();
// 有効期限のチェック
const expirationTimestamp = order[0][lastCol - 1]; // 有効期限
const currentTime = new Date(); // 現在時刻
if(expirationTimestamp < currentTime) {
return HtmlService.createHtmlOutput("<center>有効期限を過ぎた決済ページです。(4)</center>"); // 有効期限を過ぎた場合はエラーページを表示
}
// 決済情報
const email = order[0][lastCol - 9]; // メールアドレス
const amount = order[0][lastCol - 5]; // 決済金額
// 決済情報を index.html へ
html.rowNum = rowNum;
html.email = email;
html.amount = amount;
html.PUBLISH_KEY = PUBLISH_KEY;
return html.evaluate();
}
// PAY.JPでの決済処理
function doPost(e) {
const card = e.parameter["payjp-token"];
const rowNum = e.parameter["rowNum"];
const amount = e.parameter["amount"];
const SECRET_KEY = PropertiesService.getScriptProperties().getProperty("SECRET_KEY");
let customer = UrlFetchApp.fetch("https://api.pay.jp/v1/customers", {
"method" : "post",
"payload" : {
"card": card
},
"headers": {'Authorization': "Basic " + Utilities.base64Encode(SECRET_KEY + ":")}
});
customer = JSON.parse(customer);
sh.getRange(rowNum, lastCol - 1).setValue(customer.id); // 顧客番号を書き込み
UrlFetchApp.fetch("https://api.pay.jp/v1/charges", {
"method" : "post",
"payload" : {
"amount": amount,
"currency": "JPY",
"customer": customer.id
},
'headers' : {'Authorization': "Basic " + Utilities.base64Encode(SECRET_KEY + ":")}
});
return HtmlService.createHtmlOutput("<center>" + amount + "円のお支払いが完了しました。<br /><br />ブラウザを閉じてください。</center>");
}
</pre></div></div>
<div>2行目の「公開鍵」を書き換えてください。公開鍵は、PAY.JP のテスト公開鍵になります。</div><div><br /></div><div>54行目の「SECRET_KEY」は、「プロジェクトの設定」の「スクリプト プロパティ」に保存してください。値は、PAY.JP のテスト秘密鍵になります。</div><div><br /></div><div><br /></div><div><b>「index.html」</b></div>
<pre class="prettyprint lang-html linenums"><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<base target="_top">
<title>注文フォーム 決済ページ(テスト)</title>
</head>
<body>
<center>
<h1>注文フォーム 決済ページ(テスト)</h1>
<p>メールアドレスと決済金額をご確認の上、お支払いを完了させてください。</p><br />
<form action="ウェブアプリの URL" method="post">
<input type="hidden" id="rowNum" name="rowNum" value=<?= rowNum?> />
<label>メールアドレス: <?= email?><input type="hidden" id="email" name="email" value=<?= email?> /></label><br />
<label>決済金額: <?= amount?><input type="hidden" id="amount" name="amount" value=<?= amount?> /></label><br /><br />
<script src="https://checkout.pay.jp/" class="payjp-button" data-key=<?= PUBLISH_KEY?>></script>
</form>
</center>
</body>
</html>
</pre>
<div>12行目の「ウェブアプリの URL」は後ほど書き換えます。</div><div><br /></div><div><br /></div><div><div>コードが一通りできたら、デプロイをします。</div><div><br /></div><div>GAS の「デプロイ」→「新しいデプロイ」から「種類の選択」で「ウェブアプリ」を選択。</div><div><br /></div><div>・説明:任意</div><div>・ウェブアプリ / 次のユーザーとして実行:自分</div><div>・ウェブアプリ / アクセスできるユーザー:全員</div><div><br /></div><div>として、「デプロイ」を実行。</div><div><br /></div><div>「確認メールの送信.gs(16行目)」と「index.html(12行目)」の該当箇所を表示されたウェブアプリの URL に書き換えます。</div><div><br /></div><div>「デプロイ」→「デプロイの管理」から編集で「新バージョン」を再度デプロイします。</div></div><div><br /></div><div><br /></div><h3 style="text-align: left;">4)Webhook 受取用の GAS の作成</h3><div><br /></div><div>PAY.JP からの Webhook 受取用に、決済ページとは別の URL を持たせたウェブアプリが必要となるため、新たな GAS を作成します。こちらの GAS はスプレッドシートから作成しても、紐づけなしで作成しても構いません。</div><div><br /></div><div><b>「webhook受取.gs」</b></div>
<pre class="prettyprint lang-js linenums">const sp = SpreadsheetApp.openById("スプレッドシート ID");
const sh = sp.getSheetByName("フォームの回答 1");
const lastRow = sh.getLastRow();
const lastCol = sh.getLastColumn();
function doPost(e) {
const contents = JSON.parse(e.postData.contents);
// Webhook の確認
const cusSet = sh.getRange(2, lastCol - 1, lastRow - 1, 2).getValues(); // 顧客番号一覧の取得
// 顧客番号が存在するかの確認
const cus = contents.data.customer; // 顧客番号
for(let i = 0; i < cusSet.length; i++) {
if(cusSet[i][0] == cus) {
if(contents.type == "charge.succeeded") {
sh.getRange(i + 2, lastCol).setValue("完了"); // 決済完了を書き込み
paymentConfirmationEmail(i + 2); // 決済完了メールの送信
} else {
sh.getRange(i + 2, lastCol).setValue(contents.type); // 決済失敗
}
}
}
}
</pre>
<div>1行目の「スプレッドシート ID」を書き換えてください。</div><div><br /></div><div>※ Webhook のヘッダーに含まれている X-Payjp-Webhook-Token を、GAS の doPost 関数で取得する方法がわからなかった(できない?)ので、顧客番号で Webhook の正当性を判断する形にしています。</div><div><br /></div><div><br /></div><div><b>「決済完了メールの送信.gs」</b></div>
<pre class="prettyprint lang-js linenums">function paymentConfirmationEmail(rowNum) {
const name = sh.getRange(rowNum, lastCol - 9).getValue();
const email = sh.getRange(rowNum, lastCol - 8).getValue();
let body = name + " 様\n\n決済が完了しました。\n\n発送まで今しばらくお待ちください。\n\nどうぞ宜しくお願い致します。";
// 決済完了メールの送信
GmailApp.sendEmail(
email,
"決済が完了しました",
body,
{
from: "送信元メールアドレス",
name: "送信者名"
}
);
}
</pre>
<div>13行目の「送信元メールアドレス」、14行目の「送信者名」を書き換えてください。</div><div><br /></div><div><br /></div><div><div>こちらもデプロイをします。</div><div><br /></div><div>GAS の「デプロイ」→「新しいデプロイ」から「種類の選択」で「ウェブアプリ」を選択。</div><div><br /></div><div>・説明:任意</div><div>・ウェブアプリ / 次のユーザーとして実行:自分</div><div>・ウェブアプリ / アクセスできるユーザー:全員</div><div><br /></div><div>として、「デプロイ」を実行。</div><div><br /></div><div>ウェブアプリの URL をメモしておきます。</div></div><div><br /></div><div>こちらの URL は知られないように管理してください。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">5)PAY.JP で Webhook の設定</h3><div>PAY.JP の「API設定」で、Webhookの追加をします。URL は、先ほどメモした Webhook 受取用の GAS のウェブアプリの URL となります。</div><div><br /></div><div><br /></div><div>これで完成となります。</div><div><br /></div><div><br /></div><div style="text-align: center;">***</div><div><br /></div><div>思ったよりも手順が多くなりました。実際に運用する際には、もう少しエラーハンドリング等しっかりやる必要がありそうですが、とりあえず、一通り動くものができてよかったです。</div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-79129759684093333842023-11-14T20:35:00.012+09:002023-11-25T10:08:33.347+09:00GAS でオンライン決済 PAY.JP を導入する<div>サービスに不可欠な決済。</div><div><br /></div><div>現状、Web サービスへのオンライン決済導入というと、Stripe がダントツに強いそうですが、何かあった時には国内のサービスの方が安心な気もします(実際のところは分かりませんが)。</div><div><br /></div><div>ということで、今回は、国産の PAY.JP によるオンライン決済(クレジットカードによる決済)のテスト導入を試してみました。</div><div><br /></div><div>PAY.JP を運営している PAY 株式会社は、ネットショップ作成サービスを行っている BASE 株式会社の100%子会社みたいです。</div><div><br /></div><div><br /></div><div>最終的に、決済付きの <a href="https://www.nakakamado.com/2021/09/form-gas.html">Google フォームと連携した注文フォーム</a>をサーバーレスで運用できたらいいなと思っているので、実装には GAS(Google Apps Script)を使用しました。</div><div><br /></div><div>-----</div><div><b>・追記(2023-11-24)</b></div><div><br /></div><div><a href="https://www.nakakamado.com/2023/11/google-form-payment-order.html">Google フォームで決済機能付き注文フォームを実現する</a></div><div>-----</div><div><br /></div><div><br /></div><div>以下、簡単な導入方法になります。</div><div><br /></div><div>(決済に関するものですので、一応こうやると動くよという参考程度のものとしてください。ご利用の際は自己責任でお願いします)</div><div><br /></div><div><br /></div><h3 style="text-align: left;">① PAY.JP のアカウントを作成</h3><div><br /></div><div>まず、PAY.JP のアカウントを作成、「API設定」の「APIキーの情報」から「テスト秘密鍵」と「テスト公開鍵」をメモしておきます。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">② GAS で「コード.gs」と「index.html」を作成</h3><div><br /></div><div>・「コード.gs」</div>
<pre class="prettyprint lang-js linenums">const price = "3000";
function doGet(e) {
const PUBLISH_KEY = "公開鍵";
const html = HtmlService.createTemplateFromFile('index');
html.price = price;
html.PUBLISH_KEY = PUBLISH_KEY;
return html.evaluate();
}
// PAY.JPでの決済処理
function doPost(e) {
const card = e.parameter["payjp-token"];
const SECRET_KEY = PropertiesService.getScriptProperties().getProperty("SECRET_KEY");
let customer = UrlFetchApp.fetch("https://api.pay.jp/v1/customers", {
"method" : "post",
"payload" : {
"card": card
},
"headers": {'Authorization': "Basic " + Utilities.base64Encode(SECRET_KEY + ":")}
});
customer = JSON.parse(customer);
UrlFetchApp.fetch("https://api.pay.jp/v1/charges", {
"method" : "post",
"payload" : {
"amount": price,
"currency": "JPY",
"customer": customer.id
},
'headers' : {'Authorization': "Basic " + Utilities.base64Encode(SECRET_KEY + ":")}
});
return HtmlService.createHtmlOutput(price + "円の決済が完了しました。");
}
</pre>
<div>5行目の公開鍵は、先ほどメモした「テスト公開鍵」に書き換えてください。</div><div><br /></div><div>「テスト秘密鍵」は、「プロジェクトの設定」の「スクリプト プロパティ」に保存してください。プロパティ名は「SECRET_KEY」としています。</div><div><br /></div><div><br /></div><div>・「index.html」</div>
<pre class="prettyprint lang-html linenums"><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<base target="_top">
<title>PAY.JP Checkout Test</title>
</head>
<body>
<p>PAY.JP 決済テスト</p>
<form action="ウェブアプリのURL" method="post">
<script src="https://checkout.pay.jp/" class="payjp-button" data-key=<?= PUBLISH_KEY?>></script>
</form>
</body>
</html>
</pre>
<div>10行目の「ウェブアプリのURL」は後ほど書き換えます。</div><div><br /></div><div><br /></div>
<h3 style="text-align: left;">③ ウェブアプリのデプロイ</h3><div><br /></div><div>GAS の「デプロイ」→「新しいデプロイ」から「種類の選択」で「ウェブアプリ」を選択。</div><div><br /></div><div>・説明:任意</div><div>・ウェブアプリ / 次のユーザーとして実行:自分</div><div>・ウェブアプリ / アクセスできるユーザー:全員</div><div><br /></div><div>として、「デプロイ」を実行。</div><div><br /></div><div>表示されたウェブアプリのURLを index.html の10行目(action=)に入力。</div><div><br /></div><div>「デプロイ」→「デプロイの管理」から編集で「新バージョン」を再度デプロイ。</div><div><br /></div><div><br /></div><div>これで、完成です。</div><div><br /></div><div><br /></div><div style="text-align: center;">***</div><div><br /></div><div>ウェブアプリのURLにアクセスして、動かしてみるとこんな感じになります。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw2Q2_Cdy96ruEjWcfPLxwgqzBdl8ARb81lnw4cDLQjjCjdmuKZEPxhzG5LuZ0NGD78bWEWCj3KLPP7BbR9kLJpU9eDxD31iSJEkwUbLkvhwMp-P_YQdU2HSSSjBhL0h2fYvk4ir2Qhlx-ikbTfcas33uOGy9VMHS_aitb9BMJGBB2L4nZLchW5Km_qV0/s672/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(9).png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="453" data-original-width="672" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw2Q2_Cdy96ruEjWcfPLxwgqzBdl8ARb81lnw4cDLQjjCjdmuKZEPxhzG5LuZ0NGD78bWEWCj3KLPP7BbR9kLJpU9eDxD31iSJEkwUbLkvhwMp-P_YQdU2HSSSjBhL0h2fYvk4ir2Qhlx-ikbTfcas33uOGy9VMHS_aitb9BMJGBB2L4nZLchW5Km_qV0/w400-h270/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(9).png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEYRCUpZDNHTO262sEBUQQKJsiROz-1oXmoATua-2cwjzHMX2XuRWznkmOA1XuKusexEzO9PaW7hkil4BiHo7O11wJuPirvUTAwS-cC6_Bzb3THcR2ayfrcF9EgpL6ZmWNDxWc78xYkJaeO4E0W2ktSHsqH58vnaInV1_ge8vg97_Iom31DHiq7_IxJ2g/s889/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(10).png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="591" data-original-width="889" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEYRCUpZDNHTO262sEBUQQKJsiROz-1oXmoATua-2cwjzHMX2XuRWznkmOA1XuKusexEzO9PaW7hkil4BiHo7O11wJuPirvUTAwS-cC6_Bzb3THcR2ayfrcF9EgpL6ZmWNDxWc78xYkJaeO4E0W2ktSHsqH58vnaInV1_ge8vg97_Iom31DHiq7_IxJ2g/w400-h266/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(10).png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSjVROgajDkIYYiYtQK_RfyFf43Z9FFZ8Jtphc3rw-a7GDJa5itzMe3wpOx2KB5zb8ehZuN3deZX2XIFB_UHAff2IFHQ03czNoiExakeq9cZLj-6BFLYwhSVxB56r-peRTCyqrrpL_bvxwkCi4H7SOQvlRwSvpi34fSbCwmiSx61J3M0bnlP_DyQvc3Sc/s662/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(12).png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="443" data-original-width="662" height="268" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSjVROgajDkIYYiYtQK_RfyFf43Z9FFZ8Jtphc3rw-a7GDJa5itzMe3wpOx2KB5zb8ehZuN3deZX2XIFB_UHAff2IFHQ03czNoiExakeq9cZLj-6BFLYwhSVxB56r-peRTCyqrrpL_bvxwkCi4H7SOQvlRwSvpi34fSbCwmiSx61J3M0bnlP_DyQvc3Sc/w400-h268/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(12).png" width="400" /></a></div><div><br /></div><div>うまくいっていれば、PAY.JP アカウントの売上データに反映されているはずです。</div><div><br /></div><div>今回、エラーハンドリング等は省いて最低限の構成ですが、実際の運用ではもちろん必要になります。</div><div><br /></div><div><br /></div><div><div><b>・参考</b></div><div><a href="https://pay.jp/docs/cardtoken" target="_blank">カード情報のトークン化 | PAY.JP</a></div></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-66062796400464470442023-11-11T20:08:00.002+09:002023-11-12T00:01:48.398+09:00Google One VPN の IP アドレスがどのように変化しているのか確認する最近、<a href="https://www.nakakamado.com/2023/06/google-one.html">Google One VPN を使っている</a>のですが、ふと IP アドレスって変化しているのかなと気になって調べてみました。<div><br /></div><div><br /></div><div><b>【実験方法】</b></div><div><br /></div><div> NGINX でサーバーを立てて、1分間隔で60回アクセス(計1時間)アクセスする。</div><div><br /></div><div><br /></div><div><b>【結果】</b></div><div><br /></div><div>IP アドレスに変化なし。</div><div><br /></div><div><br /></div><div>定期的に変化しているものかと思ったら、少なくても1時間の中では変化していませんでした。2回ほど試しましたが、同様の結果でした。</div><div><br /></div><div>(以前ちらっと確認したときに、分単位程度の間隔で変化していた気がしたのですが、何を見たのか……)</div><div><br /></div><div>ちなみに、VPN への接続を一旦切って再度接続した場合ですが、これはやはり IP アドレスが変わるようです。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Z43pb81ByZGBPsKADzrP5wPdSCel7KjDH0SKtoxmzmvtmy90hqBE_sM8LU-2MjtgnEWhwso49w5RkXhbRr7wrN-sjpVG0e5RPKyVv6ADb-GPIRXuaVkWBzn_21SmGG2tbH5PEc5TnduyERNrjapBp0aWmA12N3jdG10ukIKt4e1VF4EIOi2lLx9P9A0/s454/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(8).png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="341" data-original-width="454" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Z43pb81ByZGBPsKADzrP5wPdSCel7KjDH0SKtoxmzmvtmy90hqBE_sM8LU-2MjtgnEWhwso49w5RkXhbRr7wrN-sjpVG0e5RPKyVv6ADb-GPIRXuaVkWBzn_21SmGG2tbH5PEc5TnduyERNrjapBp0aWmA12N3jdG10ukIKt4e1VF4EIOi2lLx9P9A0/w400-h300/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(8).png" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-1950902360707430662023-11-11T12:19:00.001+09:002023-11-21T10:35:50.149+09:00これからの農業経営を考える(2023・秋)<div>秋はこれからの農業経営について考えたくなる季節です。ブログを遡っていたら昨年も同じような時期に<a href="https://www.nakakamado.com/2022/10/farm-management.html">同じようなことを書いて</a>いますね。若干のずれを考慮すると、気温に反応しているのでしょうか(笑)。</div><div><br /></div><div>そして、1年ほど経ったものの、具体的な数値目標には全くもって到達しておりませんね(笑……)。今後も継続して励みます。</div><div><br /></div><div><br /></div><div>さて最近、身の回りで経営について話し合うような機会が多々あり、とても勉強になっています。</div><div><br /></div><div>中でも面白いなと思ったのが、これまで家族経営でやっていた同一品目の農園を合併して法人化するアイデアです。</div><div><br /></div><div>単体では資金力、その他諸々、法人化してやっていくだけの体制を整えるのが困難。しかし、このままではジリ貧。</div><div><br /></div><div>そうした時に、複数の農園が合わさり組織化することで、資本力や労働力に関する課題解決を目指すということですね。</div><div><br /></div><div>集落単位で組織化する集落営農や、規模を求めるメガファーム化等とは異なる文脈で、あくまで農園と農園の合併ですね。後から揉めないように、諸々の調整は必須かと思いますが、1つの選択肢としてはありな気がします。</div><div><br /></div><div>隣り合った農園の必要はなく、むしろ災害の激甚化、頻発化著しい昨今、地理的にも、適度に分散させた方が災害耐性は上がりそうです。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiO2ASgSRc0JI5yW0x8VKRuRYvBt1wGZJVIZzRlcQUrhbmTXvl3yc6DkvhosQ7JaOVeZ-T5mzE-tsYOIiTvAhGP7a1MCLeoxMzfwvGz2iPxcd5WOMaE6gqUc-lsIxfiC1yWTnu4uUSUPPwMLjsAzv7-nPXc_wFFu03W29yo72eloh5VzVUkL73rKVBouc/s1024/-9z8gky.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="秋の庭" border="0" data-original-height="1024" data-original-width="771" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiO2ASgSRc0JI5yW0x8VKRuRYvBt1wGZJVIZzRlcQUrhbmTXvl3yc6DkvhosQ7JaOVeZ-T5mzE-tsYOIiTvAhGP7a1MCLeoxMzfwvGz2iPxcd5WOMaE6gqUc-lsIxfiC1yWTnu4uUSUPPwMLjsAzv7-nPXc_wFFu03W29yo72eloh5VzVUkL73rKVBouc/w301-h400/-9z8gky.jpg" width="301" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-72690291023219529892023-10-29T23:09:00.004+09:002023-11-05T01:02:42.927+09:00徒然じゃない日々(26)農家として目の前の物理と向き合っていると、PC1台でどこでも働くことができるリモートワークみたいなものにちょっと憧れます。<div><br /></div><div><div>……というわけで、せっかくのやりたいことはやってみよう!と思いまして、最近、隙間の時間を活用してフリーのプログラマーとして働き始めました。</div><div><br /></div><div>幸いなことにご依頼もいただくことができ、<a href="https://www.nakakamado.com/p/ict.html">自作スマート農業</a>でも使っている GAS や Python でいろいろと作っています。強制的にスキルアップもしていくので、とても楽しいです。</div><div><br /></div><div>これをまた自作スマート農業の開発に還元していければと思います。</div><div><br /></div><div style="text-align: center;">***</div><div><br /></div><div style="text-align: center;"><br /></div><div>話は変わりまして、先日、農業や農村に関する会議に出席する機会がありました。</div><div><br /></div><div>若干思うところがあったので、ちょっと記録しておこうと思います。</div><div><br /></div><div>人口減少・高齢化が進む中で、今ある農地を全部守っていくのは不可能。これは、おそらく多くの関係者が感じているところではないかと思います。</div><div><br /></div><div>農林水産省が公開している「地域計画策定マニュアル(Ver.3.2)」でも協議事項「農業上の利⽤が⾏われる農⽤地等の区域」として言及がされており、どうしても農業利用できない土地は、より省力的で簡易な方法で保全等行っていきましょう、ということになっています。</div><div><br /></div><div>市の基本計画では、担い手への農地の集積や遊休農地の削減が項目としてありますが、こことのすり合わせが、今後、非常に重要になっていきそうです。</div><div><br /></div><div>また、いざ農地利用をやめた際に、「省力的で簡易な方法」による管理にスムーズに移行できるものなのか、というのは個人的にとても疑問で、また次の課題になっていきそうな気がしています。</div><div><br /></div><div style="text-align: center;">***</div><div><br /></div><div><br /></div><div>そんなこんなで、日々あれこれありますが、地道にコツコツやっていくしかないですね。頑張っていきましょう。</div><div><br /></div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnYrJRiKo2jOnavGSsPryEZ8ZzSJzxihD1NLluyNJOAKcvYoM1w-7TAiIORX0qttymTGjFZy6mx253GXJQbPy4yUk0evezG2Lpjkwkc1OwAlMRzv0GlSpsuFvlDIfbSMHkXTDmd4uTtwiZ5PvhLMnGPlJ2YYTTV0iGCE9xSNF7AccNvB3muVUT5eGVj0A/s3072/IMG_20231019_162654133.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3072" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnYrJRiKo2jOnavGSsPryEZ8ZzSJzxihD1NLluyNJOAKcvYoM1w-7TAiIORX0qttymTGjFZy6mx253GXJQbPy4yUk0evezG2Lpjkwkc1OwAlMRzv0GlSpsuFvlDIfbSMHkXTDmd4uTtwiZ5PvhLMnGPlJ2YYTTV0iGCE9xSNF7AccNvB3muVUT5eGVj0A/w400-h400/IMG_20231019_162654133.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-58226348646187534402023-10-28T15:46:00.002+09:002023-10-31T08:04:23.352+09:00Pyinstaller で Python スクリプトを実行ファイルに変換(exe 化)するPyinstaller を用いて Python スクリプトを実行ファイルに変換(exe 化)する機会があったので、いつものごとく備忘録です。Python を実行するための環境を整えなくてもいいというのは、本当に便利ですね。<div><br /></div><div>今回は、venv モジュールで仮想環境の構築を行い、その上で PyInstaller を用いて Python スクリプト を実行ファイルへ変換(exe 化)します。</div><div><br /></div><div>PyInstaller のデメリットとして、ファイルサイズが大きくなることが挙げられます。必要なパッケージのみをインストールした仮想環境上で実行ファイルを作成することで、ファイルの肥大化を抑えます。</div><div><br /></div><div>尚、PyInstaller の実行環境は Windows 11 Pro 22H2、Python 3.11.0 です。PyInstaller で作成した実行ファイルの互換性は同一 OS に限られるため、Windows で作成したものは、Windows 上でしか動きません。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">▼ venv モジュールによる仮想環境の構築・有効化</h3><div><br /></div><div>プロジェクト用のフォルダを作成・移動。</div>
<pre class="prettyprint lang-none">$ mkdir project
$ cd project
</pre>
<div><br /></div>
仮想環境の作成。<pre class="prettyprint lang-none">$ python -m venv 仮想環境名
</pre>
<div><br /></div><div>プロジェクト用フォルダ内に、仮想環境名のフォルダが作成されます。仮想環境名には一般的に venv や env が使われるそうです。</div><div><br /></div>pip が最新の状態でインストールする場合は以下のコマンド。(たぶん、基本的にはこっちで作っておいた方が便利)<pre class="prettyprint lang-none">$ python -m venv --upgrade-deps 仮想環境名
</pre>
<div><br /></div>仮想環境の有効化。
<pre class="prettyprint lang-none">$ venv\Scripts\activate
</pre>
<div><br /></div><div><br /></div><div>ちなみに、仮想環境は初期化(インストールしたパッケージ等のクリア)も可能。以下の通り deactivate で仮想環境を終了した上で、クリアを実行。</div>
<pre class="prettyprint lang-none">$ deactivate
$ python -m venv --clear 仮想環境名
</pre>
<div><br /></div><div>また、仮想環境名のフォルダをまるごと削除することで、仮想環境自体の削除ができます。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">▼ PyInstaller で実行ファイルへ変換(exe 化)</h3><div><br /></div><div>以下、仮想環境下での操作となります。</div><div><br /></div><div>PyInstallar をインストール。</div>
<pre class="prettyprint lang-none">$ pip install pyinstaller
</pre>
<div><br /></div>Python ファイルを実行ファイルに変換(exe 化)。<br /><pre class="prettyprint lang-none">$ pyinstaller sample.py --onefile --noconsole
</pre>
<div><br /></div><div>関連ファイルをひとつにまとめる「--onefile」と、実行時にコンソール画面を表示させない「--noconsole」は付けておいた方がいいみたいです。</div><div><br /></div><div><br /></div><div>プロジェクト用のフォルダ内に「build」「dist」という2つのフォルダと spec ファイルが作成されます。実行ファイル(exe)は「dist」フォルダ内にあります。</div><div><br /></div><div><br /></div><div>ということで、とりあえず動くものが作れました。</div><div><br /></div><div><br /></div><div><b>・追記(2023-10-30)</b></div><div><br /></div><div>PyInstaller で作成した実行ファイルは、Windows Defender 等のセキュリティソフトによってウィルス判定されることが多々あるようです。(「ファイルにウイルスまたは望ましくない可能性のあるソフトウェアが含まれているため、操作は正常に完了しませんでした。」等のメッセージが出る)</div><div><br /></div><div>その際は、以下のページで紹介されているような対策があるようです。</div><div><br /></div><div><a href="https://qiita.com/tru-y/items/cb3cebe9612d367dccb2" target="_blank">【Pyinstaller】Windows Defenderに引っかからないようにする - Qiita</a></div><div><br /></div><div><br /></div><div>これでもダメな場合は、ひとまずセキュリティソフト側で除外設定等するしかないんですかね、たぶん。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyK9pQ4T3HjOgV7X3P2LmC5riKWEnLbVLX0xGzZoz_kq6FYsQXW0vCHavcbQW2XFjBV10JSpPaSX_CGVVj3MsF8k8jvvQcXzilU2qaHDhnD8z4uqrmvmAVymONcham5hL6XuUWQ6byfFLEtOQfG1ir-wUFdMW7eH0sRK6MyiHeIhDQisnWBJlDx9pNMII/s4080/IMG_20231012_160702252.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="大あくび" border="0" data-original-height="3072" data-original-width="4080" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyK9pQ4T3HjOgV7X3P2LmC5riKWEnLbVLX0xGzZoz_kq6FYsQXW0vCHavcbQW2XFjBV10JSpPaSX_CGVVj3MsF8k8jvvQcXzilU2qaHDhnD8z4uqrmvmAVymONcham5hL6XuUWQ6byfFLEtOQfG1ir-wUFdMW7eH0sRK6MyiHeIhDQisnWBJlDx9pNMII/w400-h301/IMG_20231012_160702252.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-48713936664490817742023-10-22T00:22:00.006+09:002023-10-22T14:59:54.807+09:00再生産可能な価格を維持していく今年は、社会環境や天候の振れが激しいですね。<div><br /></div><div>変化の方向性としては、概ねかねてから言われていたもののように思う一方で、こんなにも劇的に、一気に変わるものなのか、という驚きが強いです。</div><div><br /></div><div>後々振り返った時に、2023年がターニングポイントだったね、となりそうな気がします。</div><div><br /></div><div>また、農業経営の形態としても、家業的なものから企業的なものへと主流が移りつつある(ような雰囲気が漂う)なかで、ここにどう向き合っていくのかということは考えなければなりません。</div><div><br /></div><div><br /></div><div>しかし、環境や形がどのように変化しようと、継続という視点において最も大切なことは、再生産可能な価格を維持していくことだと思っています。</div><div><br /></div><div>ここさえクリアできていれば、何はともあれ生き残っていくことはできるのかなと……。</div><div><br /></div><div><br /></div><div>原木椎茸に関しまして、今シーズンより、およそ10年ぶりに価格を上げさせていただきました。</div><div><br /></div><div>価格に見合った品質の原木椎茸を提供できるように、しっかり栽培していきます。</div><div><br /></div><div>どうぞ宜しくお願い致します。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy5QEzl8uhdrsEImcakG1tlQ-LNr4Sl_e_VyJnjZoSoAzO20F6tjHxNYPT7W3QA_-f384pqk0IZE1QM3D40Qb5bM3SOKebXyQJMEv7j7kb_Fg9HPMZwDb3cZIC-FhEqIY7DkSYSEVMOw-O-T_rpyAXyEHf5C59s4kSzdNMMyKFtADewRYSVrgMKG-syFs/s3968/IMG_20180309_150917.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="原木椎茸" border="0" data-original-height="2976" data-original-width="3968" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy5QEzl8uhdrsEImcakG1tlQ-LNr4Sl_e_VyJnjZoSoAzO20F6tjHxNYPT7W3QA_-f384pqk0IZE1QM3D40Qb5bM3SOKebXyQJMEv7j7kb_Fg9HPMZwDb3cZIC-FhEqIY7DkSYSEVMOw-O-T_rpyAXyEHf5C59s4kSzdNMMyKFtADewRYSVrgMKG-syFs/w400-h300/IMG_20180309_150917.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-16361865471196848992023-10-10T11:56:00.007+09:002023-10-24T20:15:06.071+09:00Selenium と BeautifulSoup でブラウザ経由のスクレイピングを試みる<div>-----</div><div><b>・追記 2023-10-24</b></div><div><br /></div><div>Driver を自動的にバージョンアップしてくれる Webdriver Manager を使用する方法に変更しました。</div><div>-----</div><div><br /></div><div>Selenium と BeautifulSoup を使い、ブラウザ経由のスクレイピングをする機会があったので、備忘録を残しておこうと思います。</div><div><br /></div><div>Requests からではデータを取得できないウェブページであっても、この方法であれば可能になります。例えば、<strike>Amazon</strike> 某大手通販サイトとかですね。(スクレイピングは利用規約を守り、サーバーに負担をかけないように配慮の上で行う必要があります)</div><div><br /></div><div><br /></div>
<iframe frameborder="0" marginheight="0" marginwidth="0" sandbox="allow-popups allow-scripts allow-modals allow-forms allow-same-origin" scrolling="no" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=iruinedo-22&language=ja_JP&o=9&p=8&l=as4&m=amazon&f=ifr&ref=as_ss_li_til&asins=4774178942&linkId=cc9ddf5429bc72f86d8ae9e65d1c0a8c" style="height: 240px; width: 120px;"></iframe>
<div><br /></div><div><br /></div><div>今回は、ローカルマシンではなく、GCE(Google Compute Engine)上の Ubuntu 22.04 LTS で動かす想定です。</div><div><br /></div><div>Python や pip 等のパッケージはインストールされているものとしています。</div><div><br /></div><div>ブラウザは Chrome を使用します。</div><div><br /></div><div><br /></div><div>まずは、selenium と BeautifulSoup をインストール。</div>
<pre class="prettyprint lang-none">$ sudo pip install selenium
$ sudo pip install beautifulsoup4
</pre>
<div><br /></div><div>Chrome をインストール。</div>
<pre class="prettyprint lang-none">$ sudo apt -y update
$ sudo apt install -y wget
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo apt install -y ./google-chrome-stable_current_amd64.deb
$ sudo apt install -y -f
</pre>
<div><br /></div><div>Webdriver Manager をインストール。</div>
<pre class="prettyprint lang-none">$ sudo pip install webdriver_manager
</pre>
<div><br /></div><div>これで、下準備が整いましたので、Selenium と BeautifulSoup によるスクレイピングができるようになりました。</div><div><br /></div><div><br /></div><div>以下、簡単な例として、このブログのタイトルを取得するためのコードになります。</div>
<pre class="prettyprint lang-py linenums">from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import WebDriverException
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
# Seleniumの設定を行います
options = Options()
options.add_argument("--headless") # ブラウザを表示しない設定(バックグラウンドで実行)
options.add_argument("--ignore-certificate-errors") # SSL証明書のエラーを無視
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# ウェブページにアクセスします
url = "https://www.nakakamado.com/"
driver.get(url)
# ウェブページの読み込みが完了するまで待機します(最大10秒)
driver.implicitly_wait(10)
# ウェブページの内容をBeautiful Soupで解析します
soup = BeautifulSoup(driver.page_source, "html.parser")
# タイトルを取得します
title = soup.find("title")
# タイトルを出力します
print(title.text)
# ブラウザを閉じます
driver.quit()
</pre>
<div><br /></div><div><br /></div><div>ということで、Selenium と BeautifulSoup でブラウザ経由のスクレイピングでした。</div><div><br /></div><div><br /></div><div>ちなみに、コードは ChatGPT に書いてもらいました(ちょっと修正)。</div><div><br /></div><div>もう少し大きめなコードだったり、知らないライブラリを利用する際にも、最初の骨格部分を書いてもらい、そこから都度エラーの解説をしてもらいつつ作ると、とても捗ります。勉強にもなります。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizhf7jB-I1vweSNeroHxX3qxY_1VZSLWGbphBrWALi4Mu8RuK74wzEQS1lCJbyBgD5IcrGdfdcnzdGrFkYkXjd73_uYBQ0QMc8X57lutMJGjySMZ-sbZtwXZri8eo3LR5HUsWSCcZauz0Goi3kOitbieNReFaCozvdCxLSdKs0RqypUU_I3IXVP2dvn88/s3448/IMG_20231008_142014894.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="足利フラワーパークの睡蓮" border="0" data-original-height="2596" data-original-width="3448" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizhf7jB-I1vweSNeroHxX3qxY_1VZSLWGbphBrWALi4Mu8RuK74wzEQS1lCJbyBgD5IcrGdfdcnzdGrFkYkXjd73_uYBQ0QMc8X57lutMJGjySMZ-sbZtwXZri8eo3LR5HUsWSCcZauz0Goi3kOitbieNReFaCozvdCxLSdKs0RqypUU_I3IXVP2dvn88/w400-h301/IMG_20231008_142014894.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-54073529710661941712023-09-16T20:52:00.005+09:002023-09-19T12:06:25.995+09:00令和5年台風13号の振り返り【いわき市渡辺町】<div>人間万事塞翁が馬、禍福は糾える縄の如し、災い転じて福となす……ということで、先週の台風13号の振り返りです。</div><div><br /></div><div>いわき市では、線状降水帯が発生し、一部の地域で大きな被害が出ました。</div><div><br /></div><div>さわでは、幸いなことに自宅に被害はなかったのですが、横を流れる釜戸川が溢れて圃場ががっつり浸水。痕跡からビニールハウス内では1メートル近くまで水が上がったようです。完全に想定を超えた水の量で、両親も初めての経験とのこと。</div><div><br /></div><div>秋から使う予定の椎茸のホダ木も浮かされてしまい、200〜300本ほどが流されてしまいました。ハウス内に留まったものも、組んでいたものが崩れてガチャガチャに。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh145BrX6DDhynCM0Z5b49hYrcgfSVlz5N856oguBDnG6SgBsVtVyh_7whB7ntcbUqMjgJLIh7MM9z3NaaapMnw2vVnHU42JZyPWmF3pMlMzSGvXoTo_d7FkfROVkA5f0mmdt6oB9isno5AmEwg5XxXS-bVyqe_skt2FEsa02Yx_IhFyy4qIUw2szRNRAY/s1474/1694227429293.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害 原木椎茸栽培" border="0" data-original-height="1110" data-original-width="1474" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh145BrX6DDhynCM0Z5b49hYrcgfSVlz5N856oguBDnG6SgBsVtVyh_7whB7ntcbUqMjgJLIh7MM9z3NaaapMnw2vVnHU42JZyPWmF3pMlMzSGvXoTo_d7FkfROVkA5f0mmdt6oB9isno5AmEwg5XxXS-bVyqe_skt2FEsa02Yx_IhFyy4qIUw2szRNRAY/w400-h301/1694227429293.jpg" width="400" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQMNuFLa6QhsJCciTDLNbVejvWeGn2uF-T9JHYfgOHyxOcNEWB9wI4oEbiHogPlX8VFI5oATl0QfXet313W3FHkeCtmVB-dAtV4qNXlRr-CEh_h6-P047esx_eTcLoV9ZRZ2SarOemgiCb8SgjsYO_0qKSaZigXo8mCje-BF2-tXoz67teBW34_-PkFFk/s1474/1694227418686.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害 原木椎茸栽培" border="0" data-original-height="1110" data-original-width="1474" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQMNuFLa6QhsJCciTDLNbVejvWeGn2uF-T9JHYfgOHyxOcNEWB9wI4oEbiHogPlX8VFI5oATl0QfXet313W3FHkeCtmVB-dAtV4qNXlRr-CEh_h6-P047esx_eTcLoV9ZRZ2SarOemgiCb8SgjsYO_0qKSaZigXo8mCje-BF2-tXoz67teBW34_-PkFFk/w400-h301/1694227418686.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpUwp_jVQZsOV9_74ATcJBpap54XerhaBw-nmDfuTBaoELfo2jM_MbueRzhlOrU9HuqXLvpwKhKj7FttPbTiYjEAGojlZ_DKvyItNuxnUYwuGiFXXkZouoIwVbHxJ79ITYi_o6F5n6AioulCErIl1r8j015XKx8urvd_ZfIztXbtgNnm_EgTYYEfdMmWk/s1474/1694227418724.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害 原木椎茸栽培" border="0" data-original-height="1110" data-original-width="1474" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpUwp_jVQZsOV9_74ATcJBpap54XerhaBw-nmDfuTBaoELfo2jM_MbueRzhlOrU9HuqXLvpwKhKj7FttPbTiYjEAGojlZ_DKvyItNuxnUYwuGiFXXkZouoIwVbHxJ79ITYi_o6F5n6AioulCErIl1r8j015XKx8urvd_ZfIztXbtgNnm_EgTYYEfdMmWk/w400-h301/1694227418724.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyu3iWSr3nHHYV5BM3Mc8zqhhQyyiezo_FpnavLkEvNAwxGyegjM5f6-qPJ1pYKCiz3yu8Cm0CDSe1NECJ7cC0G7E6AFQi2rNs30uyP4AKoPYGUGDWEcVI9DhaN8-FdFTNEAeDg1pdX_eHg72La8UCaZTuJH_JW232MydQ5CiPTqroUNlLLShHN5ki7Vs/s1474/1694227418808.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害 原木椎茸栽培" border="0" data-original-height="1110" data-original-width="1474" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyu3iWSr3nHHYV5BM3Mc8zqhhQyyiezo_FpnavLkEvNAwxGyegjM5f6-qPJ1pYKCiz3yu8Cm0CDSe1NECJ7cC0G7E6AFQi2rNs30uyP4AKoPYGUGDWEcVI9DhaN8-FdFTNEAeDg1pdX_eHg72La8UCaZTuJH_JW232MydQ5CiPTqroUNlLLShHN5ki7Vs/w400-h301/1694227418808.jpg" width="400" /></a></div><br /><div><br /></div><div>しかし、原木椎茸栽培の良いところはたくましいところです。この時期であれば、すでにシイタケ菌が蔓延しているので、ちょっとやそっとの雑菌には負けません。むしろ、浸水が刺激になり大量に発生してしまうと収穫が大変なので、洗いながら並べ直しました。(今夏は高温で芽づくりが遅れていたので、それほど発生しなさそうですが)</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJZiMUts0_IJd9eaOMAPk4ThiVgI8BFY-pauFTEIsbjwNcaaXs3Nj5TyI-7kfDoaPKHmXh6LjXaTXFLAGN1Dwp41k5gS5KZ6DiGxgOCVpfLxrd__aMoAMlTq639Hwg0Bi74f0nsWEUVJpbCMyJrPispTPR7Dkg9ccJtOKAT88ad3R5qI2IWhiiNhK2tkU/s4080/IMG_20230915_115756700.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号 原木椎茸栽培" border="0" data-original-height="3072" data-original-width="4080" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJZiMUts0_IJd9eaOMAPk4ThiVgI8BFY-pauFTEIsbjwNcaaXs3Nj5TyI-7kfDoaPKHmXh6LjXaTXFLAGN1Dwp41k5gS5KZ6DiGxgOCVpfLxrd__aMoAMlTq639Hwg0Bi74f0nsWEUVJpbCMyJrPispTPR7Dkg9ccJtOKAT88ad3R5qI2IWhiiNhK2tkU/w400-h301/IMG_20230915_115756700.jpg" width="400" /></a></div><div><br /></div><div><br /></div><div>流れていってしまった分は、残りのホダ木の休養や発生のタイミングを調整してカバーできないか試してみる予定です。うまくいけば、来年からの営農にも知見を活かせます。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2MwioDJjbBHeH9wqJfZ5JWmC6blZkhvAR_a4s78UZcSne8I8YLK9vZtCxMTpzmW_Q2r-H38rKM11pnxpUYhHfNzdu47ytI5_EjYrnS3oOPHoe5yUJy_cui8QTKmT86DckSH_wdop0EpVJwLNvUwl84jJCNuIFxp-V0YuVGuQUjw_G37Uyg0QvBcLHkg/s4080/IMG_20230915_115736379.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害 原木椎茸栽培" border="0" data-original-height="3072" data-original-width="4080" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2MwioDJjbBHeH9wqJfZ5JWmC6blZkhvAR_a4s78UZcSne8I8YLK9vZtCxMTpzmW_Q2r-H38rKM11pnxpUYhHfNzdu47ytI5_EjYrnS3oOPHoe5yUJy_cui8QTKmT86DckSH_wdop0EpVJwLNvUwl84jJCNuIFxp-V0YuVGuQUjw_G37Uyg0QvBcLHkg/w400-h301/IMG_20230915_115736379.jpg" width="400" /></a></div><br /><div><br /></div><div>(釜戸川〜藤原川〜小名浜港あたりでホダ木がどんぶらこと流れてきたら、ぜひ育ててみてください)</div><div><br /></div><div><br /></div><div>それから、田の方もいろいろと流れてきたり、排水が埋まったりしました。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigmpm7ivw3FrpDt_pyQ1BKIZEfZUjrj1smyN1B-Bkj_JgigQF98k1BBR-yaFSpUiTLb_j7dXBfCF1FZKIxoREdTeHcPIOCGHULjzqswl2JqtCJsuIqM8Pk_EB8uloJ7tuSadPQHZm0jjLRhHveKYOoF8XtxIpx0ZdHvgaYqYly0bUO87b381Sl79b5RMg/s1474/1694227413163.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害 水稲" border="0" data-original-height="1110" data-original-width="1474" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigmpm7ivw3FrpDt_pyQ1BKIZEfZUjrj1smyN1B-Bkj_JgigQF98k1BBR-yaFSpUiTLb_j7dXBfCF1FZKIxoREdTeHcPIOCGHULjzqswl2JqtCJsuIqM8Pk_EB8uloJ7tuSadPQHZm0jjLRhHveKYOoF8XtxIpx0ZdHvgaYqYly0bUO87b381Sl79b5RMg/w400-h301/1694227413163.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWed9KtDwO0VBlO3tteoOk7Kd1gwViwXvbM7uX5gFjsh6fuaM0n1eOKo1dPXnedO58FzCdWLfQuLXvqsZX8FbxX_jD5EjP7KMoahwUReisNDt-aOxE4Z5SjGxIUty5KX9m0Xrxhr87sfr9ozRyQhGqBUqo-e7H5eGsK7Jv12avsYlwU8y1nzopMlXiuo/s1474/1694227406769.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害 水稲" border="0" data-original-height="1110" data-original-width="1474" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWed9KtDwO0VBlO3tteoOk7Kd1gwViwXvbM7uX5gFjsh6fuaM0n1eOKo1dPXnedO58FzCdWLfQuLXvqsZX8FbxX_jD5EjP7KMoahwUReisNDt-aOxE4Z5SjGxIUty5KX9m0Xrxhr87sfr9ozRyQhGqBUqo-e7H5eGsK7Jv12avsYlwU8y1nzopMlXiuo/w400-h301/1694227406769.jpg" width="400" /></a></div><br /><div><br /></div><div>ただ、地区の稲刈りが本格化する前だったため、藁等はほぼなく、とても幸運でした。これがもし大量の藁が流れてきて稲の上に乗ってしまっていたら、稲刈り自体ができなくなっていたかもしれません。</div><div><br /></div><div>水の引きも半日かからないほどで早かったので、今週無事に稲刈り、籾摺りを始めることができました。品質も例年と変わりなさそうで、ほっとひと安心です。</div><div><br /></div><div>もちろん、例年なら1日で刈り終わる面積が2日以上かかり、作業はなかなか捗りません。それでも、刈れているだけ幸せですね。</div><div><br /></div><div><br /></div><div>その他、山が崩れたり、何だりかんだりありますが、とりあえずのリカバリーはできそうです。やはり、水が土砂や泥をほとんど含んでいなかったことと、施設や機械類に致命的な被害がなかったのが大きいですね。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaEYlYiAxfKT5eMLigWhknG0fIQJ6W3GWQDmabafyfK9NRW2_2-EkPpxFC805ja2xPo_ZxylhN01FQl_37BxhcIMINI0dSSJKMHLtMrrA2ziD06cB1HOZg1MGMFfYKu1elC2K1VOIg6kL6YC50QhCWjvml5AZ088JtwKqSOI9E6XXASu4tgK93sCuzA2g/s1474/1694227448825.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害" border="0" data-original-height="1474" data-original-width="1110" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaEYlYiAxfKT5eMLigWhknG0fIQJ6W3GWQDmabafyfK9NRW2_2-EkPpxFC805ja2xPo_ZxylhN01FQl_37BxhcIMINI0dSSJKMHLtMrrA2ziD06cB1HOZg1MGMFfYKu1elC2K1VOIg6kL6YC50QhCWjvml5AZ088JtwKqSOI9E6XXASu4tgK93sCuzA2g/w301-h400/1694227448825.jpg" width="301" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI77e7VO7L7VL0JMFwB_skMfaJKVvNAp_Yr684itDan8lgw938SnC1RxAj-7nbW_oUZ6i5C38A-k8jYZDHJJ2MPAj9xi9_XE28yuuPNAGSQ_yHMOIwAF57gH1Z_21nqIR9y8Jhp_QjjwEiVFcDAH2Jb1Qu3yYznxuYYKmtvIEILYc_NoGSDJPZcy-l4bY/s1474/1694227406471.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害" border="0" data-original-height="1110" data-original-width="1474" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI77e7VO7L7VL0JMFwB_skMfaJKVvNAp_Yr684itDan8lgw938SnC1RxAj-7nbW_oUZ6i5C38A-k8jYZDHJJ2MPAj9xi9_XE28yuuPNAGSQ_yHMOIwAF57gH1Z_21nqIR9y8Jhp_QjjwEiVFcDAH2Jb1Qu3yYznxuYYKmtvIEILYc_NoGSDJPZcy-l4bY/w400-h301/1694227406471.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp-6vqgdctCxWkpkdshKv8NtrQvapCvXAxTtxasyoW_IP5DOcIZ2ihyqJEaCxl7HSNBdCWafr8WRd9omC_woDuMfDhnFGGvscu9xPJxLhhGwzkgK74HilJ3NTXxvN_dkXYdpt766SlUHS3kXqyzssDeicDBlGMYrKjKr5I5Pyd-lWtJoW2yAd9eZjwWGI/s1474/1694227435428.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="令和5年台風13号被害" border="0" data-original-height="1110" data-original-width="1474" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp-6vqgdctCxWkpkdshKv8NtrQvapCvXAxTtxasyoW_IP5DOcIZ2ihyqJEaCxl7HSNBdCWafr8WRd9omC_woDuMfDhnFGGvscu9xPJxLhhGwzkgK74HilJ3NTXxvN_dkXYdpt766SlUHS3kXqyzssDeicDBlGMYrKjKr5I5Pyd-lWtJoW2yAd9eZjwWGI/w400-h301/1694227435428.jpg" width="400" /></a></div><br /><div><br /></div><div><a href="https://www.nakakamado.com/2019/10/hazard.html">令和元年の台風19号に際</a>にも同じように感じましたが、今の時代、災害は起こるものとして計画を立て、準備をしておかないとなりませんね。どんな産業でもそうでしょうが、農業という自然を利用した産業であれば尚更です。</div><div><br /></div><div>これからを生き抜くためにも、発生被害の想定、インフラ毀損時の対応シミュレーション、経営計画の見直し、保険・共済による備え等々、日頃からできることをひとつずつやって、レジリエンスの向上を図っていこうと思います。</div><div><br /></div><div><br /></div><div>あと、個人的なことながら最近整体に通い始めたら首肩の凝りがみるみると改善しまして、ホダ木を延々と運び続けても一切不調がでない素晴らしい身体になりました。以前だったらバキバキに凝って大変でした。姿勢って大事なんですね。</div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-43758738667435787992023-09-06T20:57:00.008+09:002023-09-06T22:34:33.766+09:00リスクの洗い出しと対応(2023年9月)<div>今年は、訳の分からない天候、資材・燃料等の高騰等、農業にとってなかなか難しい年になっています。</div><div><br /></div><div>しかし、こういった状況であればこそ、リスクの洗い出しと対応を改めて整理する良い機会にもなります。</div><div><br /></div><div>以前投稿した「<a href="https://www.nakakamado.com/2023/06/cash-flow.html">農業経営におけるキャッシュフロー悪化要因の整理分類</a>」を元にさわの現状を考えますと、以下のようになっています。</div><div><br /></div><div><div><b>生産コストの上昇の要因:</b></div><div> ・<span>自然災害と気候変動への対策費用の増加</span></div><div> ・<span>病害虫への対策費用の増加</span></div><div> ・<span>原材料や資材の価格上昇</span></div><div> ・<span>燃料やエネルギー費用の上昇</span></div><div> ・<span>設備や機械の修理・保守費用の増加</span></div><div><br /></div><div><b>売上高の低下の要因:</b></div><div> ・自然災害と気候変動による被害と損失</div><div> ・病害虫の被害</div></div><div><br /></div><div>恐ろしい限り……。</div><div><br /></div><div><br /></div><div>8月までは、暑過ぎかつ雨もいまいちという天気が続き、水稲及び椎茸の生育が非常に心配されました。</div><div><br /></div><div>9月に入り、もち米から例年よりも早めに稲刈りを始めようとした途端に雨続きになり未だ稲刈りできず。さらに台風13号が接近してますしね……。早く落ち着いてくれるのを願うばかりです。</div><div><br /></div><div>一方で、椎茸にとっては、少なからず良い環境になりました。9月中に椎茸の発生を開始できればと考えていますが、気温次第ですね。</div><div><br /></div><div>経営において、一つの事象ですべて共倒れという状況にならないようにしておくことは重要ですね。最近、強く感じます。</div><div><br /></div><div><br /></div><div>単年の売上低下に対しては、収入保険で対応可能ですが、持続的に影響が出るようなものに対しては経営の根本的な見直し、対応が必要になります。昨今の、災害的な気候と世界的な経済の変化には否応なく向き合わねばなりません。</div><div><br /></div><div>新型コロナが始まって以来、意識的に守りを固めていましたが、今は攻めに転じるとき……な気がしています。</div><div><br /></div><div>栽培に関しては、環境の変化に応じて品目・品種の選定から考えないと、難易度だけ上がっていってしまうように思います。特にお米などはよく考えたいところです。</div><div><br /></div><div>また、経営全体として見ると、お米と椎茸と加工は相性の良い組み合わせだと思いますが、収益性を引き上げるもう一工夫ができないかと模索中です。</div><div><br /></div><div>取り留めのない内容になってしまいましたが、できることを一つひとつやっていくしかないですね。頑張りましょう。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijrFIaI8XmPyjHHb5ewa6vLYx_Y--0DrPyZDKjMR-Uk_g2x6G54DuB9bZM84jP8t3oCb4yC0pGetXO9S0wbusVq0X0wbMxFa2lUeHlXR8oYvjVnSS-EW4pb0dSRO2k5rgYi6YffPs8g2efG9pSeR9-ScTSRvsqBrPAl30A-aCul8NECv8Bnb7Rfal-Vtg/s3073/IMG_20230904_164832686-EDIT.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="稲 倒伏" border="0" data-original-height="3073" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijrFIaI8XmPyjHHb5ewa6vLYx_Y--0DrPyZDKjMR-Uk_g2x6G54DuB9bZM84jP8t3oCb4yC0pGetXO9S0wbusVq0X0wbMxFa2lUeHlXR8oYvjVnSS-EW4pb0dSRO2k5rgYi6YffPs8g2efG9pSeR9-ScTSRvsqBrPAl30A-aCul8NECv8Bnb7Rfal-Vtg/w400-h400/IMG_20230904_164832686-EDIT.jpg" width="400" /></a></div><div style="text-align: center;">ペッ田ん</div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-87924496918211487132023-08-10T21:09:00.016+09:002023-09-04T23:08:21.603+09:00ChatGPT API を使うための簡単な Python コードこれまで、<a href="https://www.nakakamado.com/2023/04/gas-chatgpt-line-bot.html">ChatGPT API を利用した LINE bot を GAS (Google Apps Script) で作った</a>りしました。<div><br /></div><div>しかし、API と直接やり取りする部分は Python で作っておいた方がカスタマイズも簡単で、便利な気がしてきました。</div><div><br /></div>
<iframe frameborder="0" marginheight="0" marginwidth="0" sandbox="allow-popups allow-scripts allow-modals allow-forms allow-same-origin" scrolling="no" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=iruinedo-22&language=ja_JP&o=9&p=8&l=as4&m=amazon&f=ifr&ref=as_ss_li_til&asins=429711111X&linkId=3a038539aaf16df80abd2c742d551597" style="height: 240px; width: 120px;"></iframe>
<div><br /></div><div><br /></div><div>そんなわけで、とりあえず動くシンプルなものを作ってみました。以下コードになります。</div><div><br /></div><div>尚、OpenAI の API キー取得は済んでる想定です。環境変数の読み込みには dotenv モジュールを使っています。</div><div><br />
<pre class="prettyprint lang-py linenums">from dotenv import load_dotenv
### 環境変数の読み込み
load_dotenv()
import openai
import sqlite3
def conversation(new, mdl, tmp, sys, que):
new = int(new) # 整数に変換
tmp = float(tmp) # 浮動小数点に変換
### データベースに接続
dbpath = 'データベースのパス'
conn = sqlite3.connect(dbpath)
cursor = conn.cursor()
### 設定テーブルの作成
sql = '''
CREATE TABLE IF NOT EXISTS t_setting(
t_setting_model,
t_setting_temperature)
'''
cursor.execute(sql)
### 会話テーブルの作成
sql = '''
CREATE TABLE IF NOT EXISTS t_conversation(
t_conversation_role,
t_conversation_prompt)
'''
cursor.execute(sql)
if new == 0 or None: # 会話継続
### 前回までの会話を取得
sql = """
SELECT * FROM t_conversation
"""
cursor.execute(sql)
conv = cursor.fetchall()
msgs = []
for i in range(len(conv)):
msgs.append({"role": conv[i][0], "content": conv[i][1]})
msgs.append({"role": "user", "content": que })
messages = msgs
### 会話の設定を取得
sql = """
SELECT * FROM t_setting
"""
cursor.execute(sql)
set = cursor.fetchall()
mdl = set[0][0]
tmp = set[0][1]
elif new == 1: # 新しい会話
### 設定テーブルのデータ削除
sql = """
DELETE FROM t_setting
"""
cursor.execute(sql)
### 会話テーブルのデータ削除
sql = """
DELETE FROM t_conversation
"""
cursor.execute(sql)
### 設定をテーブルに保存
sql = '''
INSERT INTO t_setting(
t_setting_model,
t_setting_temperature)
VALUES(?, ?)
'''
cursor.execute(sql, (mdl, tmp))
conn.commit()
### 会話をテーブルに保存
sql = '''
INSERT INTO t_conversation(
t_conversation_role,
t_conversation_prompt)
VALUES(?, ?)
'''
cursor.executemany(sql, [("system", sys), ("user", que)])
messages = [
{"role": "system", "content": sys},
{"role": "user", "content": que}
]
try:
res = openai.ChatCompletion.create(
model = mdl,
messages = messages,
temperature = tmp,
)
res = res.choices[0].message["content"]
json = {"question": que, "response": res, "status": "ok"}
### AI からの返答を保存
sql = '''
INSERT INTO t_conversation(
t_conversation_role,
t_conversation_prompt)
VALUES(?, ?)
'''
cursor.execute(sql, ("assistant", res))
conn.commit()
cursor.close()
conn.close()
except:
json = {"question": "", "response": "エラーが発生しました。返答を得られませんでした。", "status": "error"}
cursor.close()
conn.close()
return json</pre></div><div>※コードを一部修正しました(2023-8-14)</div><div><br /></div><div>14行目のデータベースのパスは書き換えてください。</div><div><br /></div><div>conversation 関数に、</div><div><br /></div><div>① new:新規(1) or 継続(0) ※必須</div><div>② mdl:使用モデル ※新規時は必須、継続時は不要</div><div>③ tmp:ランダムさ(0〜2) ※新規時は必須、継続時は不要</div><div>④ sys:システムロールのプロンプト ※任意、継続時は不要</div><div>⑤ que:ユーザーロールのプロンプト ※必須</div><div><br /></div><div>を渡すと、JSON 形式で回答が得られます。複数回のやりとりも可能です。</div><div><br /></div><div>さらに、これを Web API 化しておけば、チャットでも、フォームでも、スプレッドシートでも、何でもござれで使えます。(その場合、勝手に使われないように認証を付けておくことは必須です)</div><div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgANRUfPnsbtFdf91D9pTmNRvIYrX5ZLDR8qTymd-3h4At3PQVymfgO_GQNomi2NDE52r3n1u4GWPXsJHs7fZ7eqfIjk_cA9XyBJM_q95l-d4Ux7r7HTL-WeMEwJ9JbbS4kzpVwLd60bHO_dbx562QLj81zFkbvKVjcR9RLg23555orXyFTj48jjUPvl0Q/s3074/IMG_20230807_172900687_MF_PORTRAIT.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="きくらげ" border="0" data-original-height="3074" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgANRUfPnsbtFdf91D9pTmNRvIYrX5ZLDR8qTymd-3h4At3PQVymfgO_GQNomi2NDE52r3n1u4GWPXsJHs7fZ7eqfIjk_cA9XyBJM_q95l-d4Ux7r7HTL-WeMEwJ9JbbS4kzpVwLd60bHO_dbx562QLj81zFkbvKVjcR9RLg23555orXyFTj48jjUPvl0Q/w400-h400/IMG_20230807_172900687_MF_PORTRAIT.jpg" width="400" /></a></div><div><br /></div></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-37031260349632068452023-08-04T18:35:00.002+09:002023-08-07T14:59:24.044+09:00【定期】家計の見直し(2023年8月)<div>少々間が空きましたが、家計の見直しです。</div><div><br /></div>経営と家計が一体化した家族経営では、家計の最適化が心強い生存基盤になります。翻って、家族や自身にとって本当に価値あるものが何なのか、確認する良い機会になります。<div><div><br /></div><div><br /></div><h3 style="text-align: left;">・エポスゴールドカードの選べるポイントアップショップを変更</h3><div><br /></div><div>エポスゴールドカード(とプラチナカード)で設定できる「選べるポイントアップショップ」から mixi とモバイルSuica が対象外になるとのアナウンスがありましたね。</div><div><br /></div><div>選べるポイントアップショップに設定しますと、通常0.5%のところが1.5%のポイント還元となります。3つまで設定できます。</div><div><br /></div><div>ちょうど5月から、前払いチャージで使えるモバイルウォレットアプリの MIXI M を使い始めて、その際に mixi をポイントアップショップとして設定したところだったので残念でした……</div><div><br /></div><div>と思いきや、家賃を払っている不動産屋がいつの間にか対象になっていたので、そちらに変更しました。大歓喜。</div><div><br /></div><div>ちなみに、その他は光熱費の支払いを設定しています。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">・固定電話を解約</h3><div><br /></div><div>固定電話は auひかり電話を使っていたのですが、とうとう解約することにしました。……本当にとうとうですね。仕事では、FAXを含めてだいぶ前から使わないようにしており、かかってくる電話もだいたい営業電話くらいの状態になっていました。</div><div><br /></div><div>長らく使用した電話番号ではありますが、僅かの迷いもありません。さよなら電話番号。</div><div><br /></div><div>これにより浮く約500円/月は、何か有意義に使いたいと思います。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">・「do!浜通り」でガソリンを入れる</h3><div><br /></div><div>補助金の引き下げにより、ガソリン価格がじわじわと上がっていますね。9月いっぱいで補助金が終了すると、レギュラーガソリンが1リットルあたり180円〜190円代ほどになる見通しとのことです。なかなかしんどい価格ですね。</div><div><br /></div><div>とは言え、いつまでも補助金を出し続けるわけにもいかないでしょうから仕方ないですね。</div><div><br /></div><div>とりあえず、いつも入れているガソリンスタンドで do!浜通りキャンペーンの15%還元が受けれるので、うまく活用していきたいと思います。</div><div><br /></div><div>いい感じにインフレが回っていってくれるといいんですが、どうなっていくのでしょうかね。</div><div><br /></div><div><br /></div><h3 style="text-align: left;">・昨今の雑感</h3><div><br /></div><div>最近は、仕事においても、生活においても、現状維持を望もうものなら真綿で喉を締められ、気が付いたときには詰んでしまうんじゃないか、という恐怖があります。</div><div><br /></div><div>しかしながら、いざ猫たちを眺めていると、暑ければ涼しいところを見つけて寝、寒ければ暖かいところを見つけて寝、快適さを求めて常に変幻自在です。</div><div><br /></div><div>結局、恐怖は、詰むことに自体に対するものではなく、変化することをやめてしまうことへの恐怖なのではなかろうか、なかろうか……などと思ったり、思わなかったり。</div><div><br /></div><div>暑いですね。みなさま、熱中症にはお気をつけください。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_vl2XPalZSC0cFtPPbssOoJ44HIq8sXgWTF9YPdwdHsnDigCQYgO3oEfdQVtGPLb5FJqfNm-VTi6vzgPpp5xcBOS1jAtF8gt9o_jDm1gR9IPrDX_jC2Eb6SBgJkX4V-z0GzhEfhqbilSxyx_vVyqrb2uCx9S25oduji0PRRyKFR0rMZpGEnmTjRJxcCo/s4080/IMG_20230725_163714922_MF_PORTRAIT-EDIT.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="きな粉" border="0" data-original-height="3072" data-original-width="4080" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_vl2XPalZSC0cFtPPbssOoJ44HIq8sXgWTF9YPdwdHsnDigCQYgO3oEfdQVtGPLb5FJqfNm-VTi6vzgPpp5xcBOS1jAtF8gt9o_jDm1gR9IPrDX_jC2Eb6SBgJkX4V-z0GzhEfhqbilSxyx_vVyqrb2uCx9S25oduji0PRRyKFR0rMZpGEnmTjRJxcCo/w400-h301/IMG_20230725_163714922_MF_PORTRAIT-EDIT.jpg" width="400" /></a></div><div><br /></div></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-62017480342406191832023-07-27T18:45:00.014+09:002023-08-03T20:32:25.298+09:00昆虫病原糸状菌に感染したバッタ最近、ミニトマトの圃場でこんな虫を見つけました。最初はナナフシか何かかな?と思ったのですが、調べてみたら昆虫病原糸状菌というものに感染したバッタのようでした。<br /><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhObMGQlooHuA2sEUC7sAA5wBhPDn4U9FWUDyN7W6MLCl2YEGr0TSDb8r1xMxVl9tV3sTYWO2Bizi4FMoL5vlox24cSDl--xRgem-IIQ8b8jH7yYIZrP7SygQVSnjCOPfhVA-QPLNSRT00mBeKel1FL4Og0ue7mKtu0NnoaMPrlVwEEEvEByXP7uu-JkBg/s3072/IMG_20230719_094410690.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="昆虫病原糸状菌(Entomophaga grylli (Fres.) Batko)" border="0" data-original-height="3070" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhObMGQlooHuA2sEUC7sAA5wBhPDn4U9FWUDyN7W6MLCl2YEGr0TSDb8r1xMxVl9tV3sTYWO2Bizi4FMoL5vlox24cSDl--xRgem-IIQ8b8jH7yYIZrP7SygQVSnjCOPfhVA-QPLNSRT00mBeKel1FL4Og0ue7mKtu0NnoaMPrlVwEEEvEByXP7uu-JkBg/w400-h400/IMG_20230719_094410690.jpg" width="400" /></a></div><div><br /></div><div><br /></div>そうしたら今度は、ミニキュウリの圃場でも似たような状態のバッタを見つけました。バッタ直下の葉面に付着しているのは菌糸でしょうか。<div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJK4PKdhNO1YJsRa4yxSyMgCf8WkcVM8dmqFxHJlJtMTb-UfOC0NYQbtyPq2m5qJhEW2ha25EQgUGCNs4TVjeKVTZ_bg7QSaHcJq1K-Qzvx4sQVPHQ4lz0FRzY3-srLdtc3HhBqJL0CpAgBHnUXtBMlD8ikzHGV9wcRUBdwnbVqZDhoslVp4_APerpJ4/s3072/IMG_20230726_163025420.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="昆虫病原糸状菌(Entomophaga grylli (Fres.) Batko)" border="0" data-original-height="3070" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJK4PKdhNO1YJsRa4yxSyMgCf8WkcVM8dmqFxHJlJtMTb-UfOC0NYQbtyPq2m5qJhEW2ha25EQgUGCNs4TVjeKVTZ_bg7QSaHcJq1K-Qzvx4sQVPHQ4lz0FRzY3-srLdtc3HhBqJL0CpAgBHnUXtBMlD8ikzHGV9wcRUBdwnbVqZDhoslVp4_APerpJ4/w400-h400/IMG_20230726_163025420.jpg" width="400" /></a></div><br /><div><br /></div><div>農研機構に昆虫病原糸状菌データベースというものがあったので検索してみたところ、バッタ目を宿主とする Entomophaga grylli (Fres.) Batko という種類の菌っぽいです(確証はないです)。</div><div><br /></div><div>恥ずかしながら全くの無知だったのですが、昆虫病原糸状菌を利用した害虫防除というのは世界中で取り組まれているそうです。</div></div><div><br /></div><div>立て続けに2例も見つけるというは、今年例年よりも流行っているからなのか。それとも単に、今まで気がついていなかっただけなのか。気になります。</div><div><br /></div><div><br /></div><div>ちなみに、データベースに載っていた Beauveria bassiana (Balsamo) Vuillemin という別の種類の菌に感染したバッタも以前に見かけたことがあるような気がしてアルバムを漁ってみたところ、2013年8月にやはり撮影していました(こちらも確証はなし)。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWTgy_qGa-SyKD9PZjqotrZvldxmD_COUjQ_tL-K4amyhO5R5Pe-rqIlgcM0OxVJHDk2MkhYcQNiCQ4koArfsAKyyG_5hc3OjLqbNsM18_9ByELhzR9Hg7b1WPNLJ6dA4ZsuNeGtKvaOxvpOJ3rnSZiBRRcvAs7omqYXeMssbiVVYrK5NnzmiTGh4tOfc/s1536/DSCN3569~2.JPG" style="margin-left: 1em; margin-right: 1em;"><img alt="昆虫病原糸状菌(Beauveria bassiana (Balsamo) Vuillemin)" border="0" data-original-height="1536" data-original-width="1535" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWTgy_qGa-SyKD9PZjqotrZvldxmD_COUjQ_tL-K4amyhO5R5Pe-rqIlgcM0OxVJHDk2MkhYcQNiCQ4koArfsAKyyG_5hc3OjLqbNsM18_9ByELhzR9Hg7b1WPNLJ6dA4ZsuNeGtKvaOxvpOJ3rnSZiBRRcvAs7omqYXeMssbiVVYrK5NnzmiTGh4tOfc/w400-h400/DSCN3569~2.JPG" width="400" /></a></div><br /><div><br /></div><div><b>・追記(2023-8-1)</b></div><div><br /></div><div>3例目を発見。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8k2aU4FeA2OrwOEQ56c09g1YBdUnQ8f6vtnw-QRFtByTW5IcT5T9YWyqOUAgUHTbm4GM8u1aGY0nmfgSsqD65r_AR6efkW-5J4edMmMZUHW2opBXj3LWacI0w55Nfzt0j-FhZWylo2D_zrSE8h8u26fmMa3oGzR-Iy6x8YSBO5PiIH8ZgbvlYgONZixY/s3072/IMG_20230801_094515590~2.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="昆虫病原糸状菌(Entomophaga grylli (Fres.) Batko)" border="0" data-original-height="3072" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8k2aU4FeA2OrwOEQ56c09g1YBdUnQ8f6vtnw-QRFtByTW5IcT5T9YWyqOUAgUHTbm4GM8u1aGY0nmfgSsqD65r_AR6efkW-5J4edMmMZUHW2opBXj3LWacI0w55Nfzt0j-FhZWylo2D_zrSE8h8u26fmMa3oGzR-Iy6x8YSBO5PiIH8ZgbvlYgONZixY/w400-h400/IMG_20230801_094515590~2.jpg" width="400" /></a></div><div><br /></div><div><br /></div><div><b>・追記(2023-8-3)</b></div><div><br /></div><div>Beauveria bassiana (Balsamo) Vuillemin でしょうか。今年1例目。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmoidlYh4CLDe28Z8SqPpqtT4atqWLIEGOLSsQsy48JEk5naFF03ISHaHYlLisvqxvdxhDxVruq1-aucCKE6Kj5N-C-nF8gSgECPfsw4TE6EIJXjgpTSZ0bDoRkJW040m2diBflUqIr0_E-xIcAFVEbu-Jhf4QZLMwvHM1c7bjwq45nwmGywaC4gI0DsY/s2735/IMG_20230803_163948014.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="昆虫病原糸状菌(Beauveria bassiana (Balsamo) Vuillemin)" border="0" data-original-height="2734" data-original-width="2735" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmoidlYh4CLDe28Z8SqPpqtT4atqWLIEGOLSsQsy48JEk5naFF03ISHaHYlLisvqxvdxhDxVruq1-aucCKE6Kj5N-C-nF8gSgECPfsw4TE6EIJXjgpTSZ0bDoRkJW040m2diBflUqIr0_E-xIcAFVEbu-Jhf4QZLMwvHM1c7bjwq45nwmGywaC4gI0DsY/w400-h400/IMG_20230803_163948014.jpg" width="400" /></a></div><div><br /></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-67951247618972599572023-07-27T08:07:00.006+09:002023-07-27T21:03:43.717+09:00キュウリのとげ<div>成長途中のキュウリのとげって、すごいですよね。</div><div><br /></div><div>写真はピクルス用のミニキュウリで、特にとげの存在感があります。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKFrN50nL5CbXrHdbaroOLMjY6RRWODK55VGvU-b9IYcQ_lfJzV1nqSk3u_VT-e0zTZk6_RH5ZTXLqPwL_idoG1RDNxRzagR86Np0eyDV0TsU7py8MulxtmhXAbfpsM0sNHsGx5-dIaRKx78W1R8HtnQ3_vRwVSjwc1YxN5r6d1VfFZv-LHDbLd85XqRU/s3072/IMG_20230726_162338190.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="キュウリのとげ" border="0" data-original-height="3070" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKFrN50nL5CbXrHdbaroOLMjY6RRWODK55VGvU-b9IYcQ_lfJzV1nqSk3u_VT-e0zTZk6_RH5ZTXLqPwL_idoG1RDNxRzagR86Np0eyDV0TsU7py8MulxtmhXAbfpsM0sNHsGx5-dIaRKx78W1R8HtnQ3_vRwVSjwc1YxN5r6d1VfFZv-LHDbLd85XqRU/w400-h400/IMG_20230726_162338190.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkENibytdEbtHxeH9mL__NWV_SRTMtYBJSUiAW4KpzqaMitjyipwVHyDMsdEDcY_rVXliFNa9_p1JbKRVrTqKNc-qBUIXRpsUrJb1YKqscVieO5V2Jqp2mlLsyBKyMf0tB958q1nNVIgRHxRKzZlVkrbJkL1LjWXlGuOZyYDEcwaZnlJBTEcrf2LhIG-0/s3072/IMG_20230726_161820258_MF_PORTRAIT.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="キュウリのとげ" border="0" data-original-height="3070" data-original-width="3072" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkENibytdEbtHxeH9mL__NWV_SRTMtYBJSUiAW4KpzqaMitjyipwVHyDMsdEDcY_rVXliFNa9_p1JbKRVrTqKNc-qBUIXRpsUrJb1YKqscVieO5V2Jqp2mlLsyBKyMf0tB958q1nNVIgRHxRKzZlVkrbJkL1LjWXlGuOZyYDEcwaZnlJBTEcrf2LhIG-0/w400-h400/IMG_20230726_161820258_MF_PORTRAIT.jpg" width="400" /></a></div><br /><div>今年はよく育ってくれています。</div><div><br /></div><div>なかなか過酷な天気ですが、もう一息、頑張ってくれるといいですね。</div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-527044578999973292023-07-18T12:07:00.001+09:002023-07-18T12:17:53.198+09:00酷暑や豪雨への対応策<div>先週の後半から、ずっと眠気が抜けなかったのですが、自覚のないままどこかのタイミングで熱中症気味になっていたのかもしれません。みなさま、どうぞお気をつけください。</div><div><br /></div><div><br /></div><div>さて、ここ最近、梅雨なのか、夏本番なのかもよく分からないひどい酷暑です。ピンポイントで豪雨災害も発生しており、明日は我が身という気持ちが強くなる一方です。</div><div><br /></div><div>作物にも少なからず影響は出ておりますが、探り探りハンドリングしています。</div><div><br /></div><div>様々な災害を経験・見聞きして思うことは、いざという時にはすでにどうしようもないですね。それまでに、いかに対応策を練り、事前準備をしているか。これに尽きます。</div><div><br /></div><div>例えば、酷暑への対応策としては、適切な灌漑管理、日陰の有効利用、土壌改良、適切な品種選定、遮光・換気設備の改善などが考えられます。</div><div><br /></div><div>また、豪雨への対応策としては、排水対策、高低差のある地形の有効活用、土壌保護、防護ネット等の資材の活用、早期予測などが考えられます。</div><div><br /></div><div>平常時の最大効率のみを求めるのではなく、災害への耐性を上げることも、今後の農業経営には必須となってきています。</div><div><br /></div><div>その上で、どうしようもないものは本当にどうしようもありません。そこはもう、発生し得る結果に対して保険を掛けておくしかないように思います。</div><div><br /></div><div>保険というのは、例えば、収入保険への加入であったり、複数かつ独立した収入ポイントの確保であったり、余裕を持たせた資金管理であったりですね。</div><div><br /></div><div>さわでも、どこまでもできているかというとあやしいですが……まあ、一つひとつやっていくしかありません。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNrPeQ5iHtJi0DBFjY5dGLmEK0tBaqL8PtwamrHJeYJYtYIc3Sf1PAma7HOzCJpqL_LRf6q7VPuOX67d0Oc5Lp-I_pDhRgakXneLztuzzgCl7pMkryDBUSi9xSwVJhoqJcRXrfgsGl39RQjFTPYXsmuzGR5LCO8BBL1g0xhXfjbWQHUT-Hv2ayxPraf1A/s4080/IMG_20230713_164256320.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3072" data-original-width="4080" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNrPeQ5iHtJi0DBFjY5dGLmEK0tBaqL8PtwamrHJeYJYtYIc3Sf1PAma7HOzCJpqL_LRf6q7VPuOX67d0Oc5Lp-I_pDhRgakXneLztuzzgCl7pMkryDBUSi9xSwVJhoqJcRXrfgsGl39RQjFTPYXsmuzGR5LCO8BBL1g0xhXfjbWQHUT-Hv2ayxPraf1A/w400-h301/IMG_20230713_164256320.jpg" width="400" /></a></div><br /><div>猫たち、暑すぎて絨毯。</div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-88748293068357054032023-07-05T08:10:00.009+09:002023-07-05T20:20:21.092+09:00GPU 非搭載のノート PC に鞭打って Stable Diffusion web UI を動かす。そして、イラスト QR コードを作る。<div>少し前に話題になったイラスト QR コードを作りたくて、ローカル環境で動作する Stable Diffusion web UI を<a href="https://www.nakakamado.com/2020/07/thinkpad-x280.html">手持ちの ThinkPad X280</a> にインストールしてみました。</div><div><br /></div><div>ThinkPad X280 は、3年前くらいに購入した PC です。GPU 非搭載で、CPU 第8世代 Core i5、メモリ 8GB、ストレージ 256GB SSD という感じのスペックです。</div><div><br /></div><div>普段、全く問題なく使っている PC ですが、AI による画像生成という用途に使うとなるとポンコツと言っても過言ではありません。無理かなあ、と思いつつ試してみました。</div><div><br /></div><div><br /></div><div>イラスト QR コードの作成方法と Stable Diffusion web UI のインストールについては、それぞれ以下のサイトを参考にさせていただきました。</div><div><br /></div><div>・イラスト QR コード</div><div><a href="https://technojapan.net/qr_code_ai/" target="_blank">QRコードとして認識するAIイラストの作り方 – TECHNOJAPAN.net</a></div><div><br /></div><div>・Stable Diffusion web UI (と ControlNet)のインストール</div><div><a href="https://wikiwiki.jp/sd_toshiaki/%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E7%89%88%E5%B0%8E%E5%85%A5" target="_blank">ローカル版導入 - としあきdiffusion Wiki*</a></div><div><br /></div><div><a href="https://wikiwiki.jp/sd_toshiaki/ControlNet?word=controlnet" target="_blank">ControlNet - としあきdiffusion Wiki*</a></div><div><br /></div><div><br /></div><div>ひとまず、Stable Diffusion web UI をインストールして、webui-user.bat を実行したところ次のエラーが発生。</div><div><br /></div>
<pre class="prettyprint lang-none">RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
</pre>
<div><br /></div><div>「GPU が使えないよ」とのエラーのようです。まぁ、GPU 非搭載ですからね。</div><div><br /></div><div>回避方法として、webui-user.bat を開いて「set COMMANDLINE_ARGS=」部分に、「--skip-torch-cuda-test」を追記をします。</div><div><br /></div>
<pre class="prettyprint lang-none">set COMMANDLINE_ARGS=--skip-torch-cuda-test
</pre>
<div><br /></div><div>再度実行。すると、またエラー表示。</div><div><br /></div>
<pre class="prettyprint lang-none">RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'
</pre>
<div><br /></div><div>今度は、「グラフィックカードが半精度浮動小数点数の計算に対応していないよ」とのことだそうです。</div><div><br /></div><div>回避方法として、webui-user.bat を開いて「set COMMANDLINE_ARGS=」部分に、さらに「--precision full --no-half」を追記をします。</div><div><br /></div>
<pre class="prettyprint lang-none">set COMMANDLINE_ARGS=--skip-torch-cuda-test --precision full --no-half
</pre>
<div><br /></div><div>これで、やっとちゃんと動きました。</div><div><br /></div><div><br /></div><div>さて、それでは、参考サイトを見ながらイラスト QR コードを生成していきます。</div><div><br /></div><div>まず、元となる QR コードを作成。</div><div><br /></div><div>プロンプトには、キノコを混ぜ込みました。</div><div><br /></div><div>ポジティブプロンプト:</div><div>painting of mushrooms growing against a backdrop of sky and forest, Henri Rousseau, matte painting concept art, detailed matte painting</div><div><br /></div><div>ネガティブプロンプト:</div><div>ugly, disfigured, low quality, blurry, nsfw</div><div><br /></div><div><br /></div><div>その他諸々、参考サイト通りに設定。</div><div><br /></div><div>いざ、生成!……順調と思いきや、15分くらい経ったところで、またもやエラー発生。</div><div><br /></div>
<pre class="prettyprint lang-none">RuntimeError: mat1 and mat2 shapes cannot be multiplied (154x1024 and 768x320)
</pre>
<div><br /></div><div>内容を調べてみると、ControlNet と相性(?)の悪いモデルを使ってしまっていたようです。</div><div><br /></div><div><br /></div><div>モデルを変更。気を取り直して、改めて生成!</div><div><br /></div><div>・</div><div>・</div><div>・</div><div><br /></div><div>1時間半後</div><div><br /></div><div>・</div><div>・</div><div>・</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTpFQSgmAUn80OmPXE-WGytxgLqlYtVl81MZqFR8LWovyiexc4DOVugXMmMruGpYm-wEQrMXs9szlx_OpMCJPWbPlhn-R_P2HlPBC3QqO_YNRgirtPxcH4KObogYwp8cq7r8zGwa9qBf5kNqNyfdWobjJ9dGF8MA0Fhcq2W-ZY6JDHSAQ7PSOJLXudnow/s768/00006-399884375.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="768" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTpFQSgmAUn80OmPXE-WGytxgLqlYtVl81MZqFR8LWovyiexc4DOVugXMmMruGpYm-wEQrMXs9szlx_OpMCJPWbPlhn-R_P2HlPBC3QqO_YNRgirtPxcH4KObogYwp8cq7r8zGwa9qBf5kNqNyfdWobjJ9dGF8MA0Fhcq2W-ZY6JDHSAQ7PSOJLXudnow/w400-h400/00006-399884375.png" width="400" /></a></div><div><br /></div><div>無事に完成!ちゃんと読み込める……!</div><div><br /></div><div><br /></div><div>ということで、GPU の載っていない PC でも、なんとか目的のイラスト QR コードを作ることが出来ました。</div><div><br /></div><div><br /></div><div>とは言え、1つの画像生成に1時間以上かかってしまうと、プロンプト等の試行錯誤もなかなかできませんね。</div><div><br /></div><div>もう少し本格的に使うのならば、Google Colab を課金して使うのがよさそうな気がします。</div><div><br /></div><div><br /></div><div><b>・追記(2023-7-5)</b></div><div><br /></div><div>プロンプトを変更して再度試してみましたが、今度は QR コードとして認識されないものになってしまいました。絵柄はかわいいんですけどね。</div><div><br /></div><div><div>ポジティブプロンプト:</div><div>cubism painting of mushrooms against a blue sky and forest, Henri Rousseau, concept art for matte painting, detailed matte painting</div><div><br /></div><div>ネガティブプロンプト:</div><div>ugly, disfigured, low quality, blurry, nsfw</div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPblpEptKBsjLPyMgAb5cGmaybFrcHf-rLF5w6jYTTk42wFJAxfwN0IMfpgCjwrAAslVefq8V0nUe8W8B4O-L5yyEUdHqoVmZ3ChU2UO8086gx2VoQ4Q2Vnb4TW0niDH0mP-InfDJZjcQz4atdvlB6wOVvT9ANeWQFMLDsnWYfVZxHW6HYsNA9pqkUGms/s768/00001-3298798044.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="768" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPblpEptKBsjLPyMgAb5cGmaybFrcHf-rLF5w6jYTTk42wFJAxfwN0IMfpgCjwrAAslVefq8V0nUe8W8B4O-L5yyEUdHqoVmZ3ChU2UO8086gx2VoQ4Q2Vnb4TW0niDH0mP-InfDJZjcQz4atdvlB6wOVvT9ANeWQFMLDsnWYfVZxHW6HYsNA9pqkUGms/w400-h400/00001-3298798044.png" width="400" /></a></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-75402128462958592052023-07-02T18:34:00.009+09:002023-07-03T10:46:18.341+09:00Twitter が不安定なので、とりあえず Mastodon を使い始めました。昨日から Twitter の挙動が不安定になっていますね。(一時的な仕様の変更らしいとのことですが)<div><div><br /></div><div>仕事としては、ブログの更新やその他のお知らせ、あとは日々のちょっとした写真などを載せる程度の使い方なので、ないならないで特に困ることはない気がします。</div><div><br /></div><div>結局、SNS 経由での宣伝や販売をしていないうちなんかの場合だと、ドメイン取ってブログなりサイトなり作っておけば機能的には十分なのかなというのが実感です。</div><div><br /></div><div>困るとすると、何かリアルタイム性のあるものを調べたくて検索する時ですね。災害時など。</div><div><br /></div><div>Twitter が持ち直してくれるのか、他のどこかの SNS に代替されるのか、はたまた、今みたいな使い方自体が消えるのか。どうなるのでしょうかね。</div><div><br /></div><div>とりあえず、代替候補先として Mastodon はちょっと前から使っていて、Bluesky はウェイトリストに登録しています。Instagram や Facebook はちょっと違いますしね。</div><div><br /></div><div>Mastodon は、仕事用に使うかは未定で、もう少し使ってみて決めようと思います。</div><div><br /></div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQPrCiQw3lCtW1nEn1eiIPWt37_t_XilBTPTbMQ8RoVchqM3XCMfeJBf1VhbE9PgGj9FA8J5yOM7kSyTlHh20qRUMUUydduFARYs6oPtQnA0nNQjIIG-uVnsM3GWrjmwCb5E7R1QYwjrb4Pp_F-u8AKcra06s0wA8mRLVqCDE4WSonNkdg9Tgmv6F0h-I/s3319/a52995f6fef1a58a.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2499" data-original-width="3319" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQPrCiQw3lCtW1nEn1eiIPWt37_t_XilBTPTbMQ8RoVchqM3XCMfeJBf1VhbE9PgGj9FA8J5yOM7kSyTlHh20qRUMUUydduFARYs6oPtQnA0nNQjIIG-uVnsM3GWrjmwCb5E7R1QYwjrb4Pp_F-u8AKcra06s0wA8mRLVqCDE4WSonNkdg9Tgmv6F0h-I/w400-h301/a52995f6fef1a58a.jpg" width="400" /></a></div><div><br /></div>そういえば、マストドンはマンモスと似ているけど、全然別の動物とのこと。Unknownnoreply@blogger.comtag:blogger.com,1999:blog-9058698701390259666.post-21450911994169626032023-06-30T19:15:00.007+09:002023-06-30T19:38:23.937+09:00徒然じゃない日々(25)スマート農業がとても盛り上がっており、私自身、自作やら何やらとても楽しく取り組んでいます。<div><br /></div><div>とはいえ、スマート技術を採用するかどうかの優先順位を考えてみると、低い場合が多いのではないかと思います。<br /><div><br /></div><div>第一は、太陽光や風、雨等の自然環境の最大限の利用。第二は、ビニールハウスやシート等の物理的な設備・資材等の効率的な活用。そして最後に、スマート技術を採用するかどうか、というイメージです。</div><div><br /></div><div>土地の環境に合わせて、簡易な設備・資材でうまく栽培できるのであれば理想です。何も問題ありません。</div><div><br /></div><div>しかし、それだけでは、どうしてもブレが発生したり、解決しきれない課題が残る場合に、ソフトウェア的に制御する余地が生まれます。</div><div><br /></div><div>もしくは、人手との天秤にかけて、明確にメリットがあるパターンですね。</div><div><br /></div><div><br /></div><div>……そんなこんなを考えながら、圃場で立ち尽くしたり、パソコンとにらめっこしたり。</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjerTHLKWz3dY0K23tSF7aqPYv9edfjYCHIRaEB8JH6dYKsV44O9p-eZD_sh0fuc5TNDsztx4IvcfUASZ_vgamsSJkc8N8T7xVW5nF6tYnz9GKkhzGf6TIjO0V-6WpwyKnUHoZyVYBeYB-4DRzI9IkO5qa0PiIBRxKM7PY4CwkUoA5PcQNI1TX-Zxq8HJ4/s4080/IMG_20230628_105614319~2.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="きな粉" border="0" data-original-height="3072" data-original-width="4080" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjerTHLKWz3dY0K23tSF7aqPYv9edfjYCHIRaEB8JH6dYKsV44O9p-eZD_sh0fuc5TNDsztx4IvcfUASZ_vgamsSJkc8N8T7xVW5nF6tYnz9GKkhzGf6TIjO0V-6WpwyKnUHoZyVYBeYB-4DRzI9IkO5qa0PiIBRxKM7PY4CwkUoA5PcQNI1TX-Zxq8HJ4/w400-h301/IMG_20230628_105614319~2.jpg" width="400" /></a></div><br /><div>猫眺めたり。</div><div>
<br />
<br />
<div style="text-align: center;">
Twitter (<a href="https://twitter.com/nkkmd" target="_blank">@nkkmd</a>) 日々更新中です。</div></div></div>Unknownnoreply@blogger.com