SnowLeaf(スノーリーフ) https://snow-leaf.com Thu, 08 Aug 2024 09:43:24 +0000 ja hourly 1 https://snow-leaf.com/wp-content/uploads/2023/10/cropped-ded5093380b263341ac107303cad9c06-32x32.png SnowLeaf(スノーリーフ) https://snow-leaf.com 32 32 【SANGO】シェアボタンのTwitterをXに変更する方法【WordPress】 https://snow-leaf.com/programming/dontforget/twitter_to_x_sharebutton/ Sun, 22 Oct 2023 22:35:33 +0000 https://snow-leaf.com/?p=1015

SANGOv3.7.8、2023.10.21時点でシェアボタンはTwitterのままです。これはFontAwesomeバージョンの都合かと思われます。FontAwesomeバージョン6.4.2以降でXが対応していますので ... ]]>

SANGOv3.7.82023.10.21時点でシェアボタンはTwitterのままです。
これはFontAwesomeバージョンの都合かと思われます。FontAwesomeバージョン6.4.2以降でXが対応していますので、4系5系では無いのが現状です。

ゆくゆくは対応されると思うので、対応されたらこの記事は意味がなくなりますが、書き残しておきます。

今回の記事は、WordPressのファイル内をいじります。
以下の記事から、編集できる環境を整えてください。これらのツールで説明を行いますが、他のツールを用いてお構いません。

環境構築 【WordPress】環境を構築する【VSCode, Cyberduck】

after

before

子テーマを変更する

親テーマに変更を加える事はしません。
はじめて編集する方は以下のページから子テーマのカスタマイズについて、一読する事をおすすめします。

今回変更するのは以下です。

/wp-content/themes/sango-theme-child/functions.php

/wp-content/themes/sango-theme-child/style.css

更に追加するファイルやフォルダは以下です。

/wp-content/themes/sango-theme-child/library/

/wp-content/themes/sango-theme-child/library/functions/

/wp-content/themes/sango-theme-child/library/functions/share-buttons.php

library、functions、share-buttons.phpを追加・編集する

Cyberduckにてサーバーと接続します。

libraryフォルダを追加

~/wp-content/themes/sango-theme-child/に移動した事を確認してください。
右クリック新規フォルダlibraryと入力し、作成

functionsフォルダを追加

~/wp-content/themes/sango-theme-child/library/に移動した事を確認してください。
右クリック新規フォルダfunctionsと入力し、作成

functionではなく、functionsです。sをお忘れなく。

share-buttons.phpを追加

親テーマからファイルをまるっとコピーして、子テーマで変更を加えます。
なので、親テーマへ移動します。

~/wp-content/themes/sango-theme/library/functions/に移動した事を確認してください。
※親テーマなので、sango-theme内へ移動です。子テーマではありません。

share-buttons.phpをクリックし、選択してください。
選択したら、Winの方はCtrl+C、Macの方はcommand+Cでコピーします。

再び子テーマへ戻ります。

~/wp-content/themes/sango-theme-child/library/functions/に移動した事を確認してください。

移動したら、Winの方はCtrl+V、Macの方はcommand+Vで貼り付けします。

貼り付けが完了したら再び右クリック→エディタで編集→CodeでVSCodeを開きます。

        <!-- twitter -->
        <li class="tw sns-btn__item">
          <a href="<?php echo sng_get_tweet_url($encoded_url, $encoded_title); ?>" target="_blank" rel="nofollow noopener noreferrer" aria-label="Xでシェアする">
            <?php fa_tag("twitter", "twitter", true) ?>
            <span class="share_txt">ポスト</span>
          </a>
          <?php if (function_exists('scc_get_share_twitter')) {
              echo '<span class="scc dfont">' . scc_get_share_twitter() . '</span>';
            } 
          ?>
        </li>

108行目からがTwitterの表示となっています。
108行目〜118行目までを削除し、新たに上記のコードをコピーして、貼り付けてください。

// ツイートURLを取得する
if (!function_exists('sng_get_tweet_url')) {
  function sng_get_tweet_url($url, $title) {
    $via = (get_option('include_tweet_via')) ? '&via=' . get_option('include_tweet_via') : '';
    return 'https://x.com/intent/tweet?url='.$url.'&text='.$title.$via;
  }
}

また、33行目もURLがtwitter.comになっているので、上記コードのようにx.comに変えるのも良いと思います。
twitter.comで動くので気にしない方は変更しなくていいです。

最後に、Winの方はCtrl+S、Macの方はcommand+Sで保存します。

style.cssを編集する

~/wp-content/themes/sango-theme-child/style.cssVSCodeで開きます。

/* Twitter→Xへ */
.fa-twitter:before {
  content: "𝕏";
  font-family: unset;
  font-weight: bold;
}

.tw a {
  color: #000000;
}

一番下に以上のコードを追加します。

Winの方はCtrl+S、Macの方はcommand+Sで保存します。

functions.phpを編集する

~/wp-content/themes/sango-theme-child/functions.phpVSCodeで開きます。

<?php
//子テーマのCSSの読み込み
add_action( 'wp_enqueue_scripts', 'enqueue_my_child_styles' );
function enqueue_my_child_styles() {
  wp_enqueue_style( 'child-style', 
  	get_stylesheet_directory_uri() . '/style.css', 
  	array('sng-stylesheet','sng-option')
	);
} 
/************************
 *functions.phpへの追記は以下に
 *************************/
// function sng_is_sidebar_shown() { if( !is_active_sidebar( 'sidebar1' ) ) return false; if( is_singular() && wp_is_mobile() && get_option('no_sidebar_mobile') ) return false; // 記事ページと投稿ページで非表示に if( is_single() || is_page() ) { return false; } // それ以外では表示 return true;
// }
require_once 'library/functions/share-buttons.php';


/************************
 *functions.phpへの追記はこの上に
 *************************/

15行目にrequire_once 'library/functions/share-buttons.php';を追記します。

Winの方はCtrl+S、Macの方はcommand+Sで保存します。

完成

今回はシェアボタンだけでしたが、プロフィールなどのTwitterにも応用できるかと思います。
要望があれば記事出しますので、お問い合わせください。

また、Xアイコン表示CSSは以下のサイトを参考にさせてもらいました。参考にしてみてください。

]]>
素人が簡単なスマホアプリを作った話 https://snow-leaf.com/programming/smartphone_app/ Mon, 16 Oct 2023 02:27:14 +0000 https://snow-leaf.com/?p=947

こんにちは、snowleaf slowlifeの雪葉です。スマホアプリ制作なんてした事がないスマホアプリに関してはズブの素人の私ですが、ChatGPTを駆使し、なんとか作れました。やる気さえあればという感じです。その過程 ... ]]>

こんにちは、snowleaf slowlifeの雪葉です。
スマホアプリ制作なんてした事がないスマホアプリに関してはズブの素人の私ですが、ChatGPTを駆使し、なんとか作れました。
やる気さえあればという感じです。その過程をここに記しておきますので、誰かの参考になれば幸いです。

制作アプリ芝生用薬剤希釈計算アプリ
使用言語React Native
実行・テストExpo Go / Xcode / Android Studio

前置き

スマホアプリを作りはしましたが、リリースはしておりません😅
その理由としてリリースしても、ある程度利用者が見込めないと大赤字になってしまいます。
1年間にiOSとAndroidで約15,000円の利用料💰がかかります。月々1,000円くらいの広告収入か、有料アプリにするしかないのです。

今回スマホアプリを作った理由は、スマホアプリはどのようにして作られるのかを体感したかったからです。
簡単なスマホアプリ制作を体感した上で、更に難易度の高いスマホアプリの制作も視野に入れています。
その際には、満を持してリリースしますので、よろしくお願いします🙇

設計編

機能

現在、私が運営している「お庭用お役立ち計算ソフト集」から、希釈倍率計算ソフト除草剤計算ソフトの2つをアプリに導入します。Web→スマホの移植なので計算フローはそのまま使えて楽です。
しかし移植だけだと、Web上にあるものを使えば良い事になってしまいます。スマホアプリを使う意味がないです。
そのため、付加価値をつけます。スマホアプリでは、それらの計算結果を保存できるようにします。

ターゲット

これらのソフトは何かと言いますと、自宅の庭で芝生を生育している人向けのソフトです。
つまり自宅があり、芝生を管理する時間や余裕がある方達です。30代後半〜50代が多いかと思います。
画面レイアウトやロゴのデザインはターゲット年齢層によって変わります。若者向けでは無いので、画面もわかりやすくする必要がありますし、ロゴはポップよりもシックさが欲しいです。

開発言語

iOSはSwift、AndroidはJavaかKotlinがネイティブ言語として扱われてます。しかし両方の言語を習得している時間的余裕はありません。
そこで、マルチプラットフォーム開発のフレームワークを用います。Flutterか、ReactNativeの2択です。
1つのコードで、iOSやAndroid、ひいてはMacOSやWindowsでも動かせるアプリを開発可能です。優秀ですね。

FlutterとReactNative、両方とも試してみましたが、JavaScriptを触っていた私はReactNativeで開発する事にしました。
Reactも触った事はありませんが、同じJavaScriptフレームワークであるVue.jsは開発経験がありますので戸惑いはありませんでした。

データベース

Web開発ですとMySQLやPostgreSQL、MongoDBが一般的かと思います。
スマホアプリではSQLiteやFirebase、Realmが主に使われるようです。

今回のアプリでは、保存機能は少ないため、React NativeのAsync Storageというものを使う事にしました。
これはセンシティブではない小規模データの永続保存に向いている機能です。
大規模なアプリ開発となると先述したSQLiteやFirebase等か、LaravelAPIなどを介してMySQLを使う方法等があります。

様々な方法がありますので、制作するアプリにあわせて決める必要がありますね。

今回は以下のような関数でデータを保存しています。

  const handleDialogOK = async () => {
    const key = uuidv4(); // 一意のUUIDを生成
    const timestamp = new Date().toLocaleString("ja-JP");

    // ダイアログ保存
    const newSaveDatas = {
      id: key,
      name: storageMemo,
      pesticideL: result.pesticideL,
      pesticideML: result.pesticideML,
      waterL: result.waterL,
      waterML: result.waterML,
      totalSa: result.totalSa,
      divisionSprayerWater: result.divisionSprayerWater,
      divisionSprayerPesticide: result.divisionSprayerPesticide,
      divisionSprayerTenchaku: result.divisionSprayerTenchaku,
      divisionSprayerCount: result.divisionSprayerCount,
      divisionSprayerWaterRemaining: result.divisionSprayerWaterRemaining,
      divisionSprayerPesticideRemaining:
        result.divisionSprayerPesticideRemaining,
      divisitonSprayerTenchakuRemaining:
        result.divisitonSprayerTenchakuRemaining,
      sprayerTotalCount: result.sprayerTotalCount,
      toggle1: toggle1,
      toggle2: toggle2,
      timestamp: timestamp,
    };
    try {
      const existingResults = await AsyncStorage.getItem("calculationResults");
      let parsedResults = existingResults ? JSON.parse(existingResults) : [];
      const resultCount = Object.keys(parsedResults).length;
      if (resultCount >= 15) {
        Alert.alert("最大保存数は15です。一覧からいずれかを削除して下さい。");
        setDialogVisible(false);
        return;
      }
      parsedResults.push(newSaveDatas);
      await AsyncStorage.setItem(
        "calculationResults",
        JSON.stringify(parsedResults)
      );
      Alert.alert("保存されました");
    } catch (error) {
      Alert.alert("エラー", "管理者に問い合わせて下さい。");
      console.log("データの保存中にエラーが発生しました", error);
    }
    // 最終処理
    setStorageMemo("");
    setDialogVisible(false);
  };

これをダイアログの保存ボタンの処理に書きます。

<Dialog.Button label="保存" onPress={handleDialogOK} />

画面

設計の段階では、どのようにして画面を作るのか?どんな事ができるのか?全くわからなかったため、開発しながら画面は作りました。
わかりやすい画面でありながらも、洗練されたシンプルなものを目指します。

実装編

ReactNativeには非常に便利なExpoGoというツールがあります。
iPhoneやAndroid端末で、ExpoGoというアプリをインストールし、コマンド$ expo startで表示されるQRコードをスマホで読み取ると、開発中の画面が表示されます。コードを編集すると、ライブプレビューもできます。非常に有用です。

これを駆使して開発を進めていきます。

今回のアプリは設計図はありません。既存のものを移植するのがメインだからです。
また先述の通り、画面もどのようなものができるのか、全くわからないのでコードを打ちながら試行錯誤して画面を作っていきます。
以上から、今回のアプリ制作の流れは以下です。

簡単な画面を作る(テキストフィールドとボタンを適当に配置)

処理を書く

処理ができたら画面をCSSやパーツを用いて完成させる

画面はReact Nativeにて用意されている様々なパーツを組み合わせていきます。
例えばボタンや、テキストフィールド、リストなどをimportして使っていきます。思い通りのものがない場合は、ライブラリも豊富に揃っていますので、そちらを使うといいでしょう。

また、CSSもほぼWeb開発と同じような形で使えます。多少書き方が違いますが、これはWeb開発者にとって知識をそのまま活かせるので非常に有難いです。

画面がある程度できたら、処理をJavaScriptで書いていきます。
Web上で動いているものをスマホアプリ用に移植するだけなので、処理の移植はスムーズに行えました。

処理を書いたら、CSSやパーツを用いて、未完成だった画面を完成させていきます。

つまづいた箇所

テキストフィールド隠れる問題

テキストフィールドに文字を入力しようと、テキストフィールドをタップします。
すると、下からキーボードが出てくると思います。しかし、画面の下にあるテキストフィールドだと出てきたキーボードによって隠れてしまいます。
そんな問題がありました。これはスマホアプリ開発初心者のあるあるかと思います。

解決にはReactNativeで用意されているScrollViewというコンポーネントでラップし、画面をスクロールできるようにし、テキストフィールドをタップされた時に画面の一番下にマージンを追加する処理をつけると、画面下のテキストフィールドでも画面上部に移動することができます。これはあくまでも一例です。他にもやり方はあると思います。

タブ移動できない問題

HTMLではtabindexというものがあり、PCだとタブで、スマホだとキーボードに表示される🔼🔽でテキストフィールド等を行き来できるように設定ができます。
しかし、ReactNativeのTextInputコンポーネントにはそのようなオプションが無く、仕方なくInputAccessoryViewコンポーネントというキーボードをアレンジできるコンポーネントを使用しました。

完成画面

トップ画面

ロゴは仮😅

希釈計算画面

除草剤計算画面

保存フローは希釈剤計算と同様なので割愛。

保存データ画面

その他画面

ダークモード導入検討中。

実際の動き

感想

画面の作成、データ保存、画面遷移、タブ移動などなど勉強になるアプリ開発でした。
基本はChatGPTに投げて、それでも不明な箇所は自分で調べて書いていくという方法をとりました。しかし、ReactNativeも変化が早いのですぐに使えなくなるコンポーネントやライブラリとかありそうです。

自分のスマホとExpoGo、エディタさえあれば開発はすぐできます。興味ある方はぜひチャレンジしてみてください。

]]>
無限大マークの作り方【Illustrator Infinity Logo Design 】 https://snow-leaf.com/design/illustrator/infinity_logo_design/ Fri, 06 Oct 2023 19:10:17 +0000 https://snow-leaf.com/?p=944

]]>

]]>
カメラのシャッター絞りアイコンの作り方【Illustrator】 https://snow-leaf.com/design/illustrator/camera_shutter_icon/ Mon, 04 Sep 2023 03:31:43 +0000 https://snow-leaf.com/?p=927

]]>

]]>
桔梗紋の作り方【Illustrator】家紋・和柄・アレンジ可能 https://snow-leaf.com/design/illustrator/kikyomon/ Sat, 02 Sep 2023 07:18:08 +0000 https://snow-leaf.com/?p=922

備忘録として動画で残しておきます。 五角形で作っていますが、360を割り切れる数字の図形なら作成できます。]]>

備忘録として動画で残しておきます。

五角形で作っていますが、360を割り切れる数字の図形なら作成できます。

]]>
【ReactNative】キーボード上部に矢印を設定する【iOSアプリ】 https://snow-leaf.com/programming/dontforget/react-native/keyboard_up_down/ Sat, 03 Jun 2023 20:50:59 +0000 https://snow-leaf.com/?p=826

スマホアプリの個人開発で忙しいため、ブログを書く時間がなく、DIYネタばかり溜まっていっています。プログラミングの備忘録はChatGPTの台頭により、需要が薄れてきたと感じたのでやめていましたが、ChatGPTもまだまだ ... ]]>

スマホアプリの個人開発で忙しいため、ブログを書く時間がなく、DIYネタばかり溜まっていっています。
プログラミングの備忘録はChatGPTの台頭により、需要が薄れてきたと感じたのでやめていましたが、ChatGPTもまだまだ完璧ではありません。そんな時は検索が有効な手段です。同じ悩みを持つ方に届けば良いなと思い、この記事を書きます。

キーボードの矢印とは何かというと、これです。

私の調べた限りでは、ReactNativeにはこれを表示させる機能がなかったです。(あったら教えてください)
HTMLにはtabindexと呼ばれるものがあり、普通に実装できます。
TextInputGroupみたいなのあったらいいのにと調べたら…あるんですが、思っているのと違います。
https://github.com/v0idzz/react-native-text-input-group

更に調べていたら、InputAccessoryViewコンポーネントという、キーボードの上部をカスタマイズできるコンポーネントに出会いました。
これを使うしかないでしょう。

完成モックアップ

コード

import React, { useState, useRef } from 'react';
import { View, TextInput, InputAccessoryView, StyleSheet } from 'react-native';
import Icon from 'react-native-vector-icons/MaterialIcons';

const CustomInput = () => {
  const [focusedInputIndex, setFocusedInputIndex] = useState(0);
  const inputRefs = useRef([]);

  const toggleFocus = (direction) => {
    let nextIndex;

    if (direction === 'up') {
      nextIndex = focusedInputIndex > 0 ? focusedInputIndex - 1 : inputRefs.current.length - 1;
    } else if (direction === 'down') {
      nextIndex = focusedInputIndex < inputRefs.current.length - 1 ? focusedInputIndex + 1 : 0;
    }

    setFocusedInputIndex(nextIndex);
    inputRefs.current[nextIndex].focus();
  };

  const inputAccessoryViewID = 'uniqueID';

  const renderInputAccessoryView = () => (
    <InputAccessoryView nativeID={inputAccessoryViewID} backgroundColor="#f2f2f2">
      <View style={styles.accessoryContainer}>
      <Icon
          name="keyboard-arrow-up"
          size={40}
          onPress={() => toggleFocus('up')}
          color={focusedInputIndex === 0 ? 'gray' : '#156AE5'}
          disabled={focusedInputIndex === 0}
        />
        <Icon
          name="keyboard-arrow-down"
          size={40}
          onPress={() => toggleFocus('down')}
          color={focusedInputIndex === inputRefs.current.length - 1 ? 'gray' : '#156AE5'}
          disabled={focusedInputIndex === inputRefs.current.length - 1}
        />
      </View>
    </InputAccessoryView>
  );

  return (
    <View style={styles.container}>
      <TextInput
        style={styles.input}
        keyboardType="numeric"
        onFocus={() => setFocusedInputIndex(0)}
        inputAccessoryViewID={inputAccessoryViewID}
        ref={(ref) => (inputRefs.current[0] = ref)}
      />
      <TextInput
        style={styles.input}
        keyboardType="numeric"
        onFocus={() => setFocusedInputIndex(1)}
        inputAccessoryViewID={inputAccessoryViewID}
        ref={(ref) => (inputRefs.current[1] = ref)}
      />
      <TextInput
        style={styles.input}
        keyboardType="numeric"
        onFocus={() => setFocusedInputIndex(2)}
        inputAccessoryViewID={inputAccessoryViewID}
        ref={(ref) => (inputRefs.current[2] = ref)}
      />
      {renderInputAccessoryView()}
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#ffffff',
  },
  input: {
    width: '80%',
    height: 40,
    borderWidth: 1,
    borderColor: '#ccc',
    paddingHorizontal: 10,
    marginBottom: 10,
  },
  accessoryContainer: {
    flexDirection: 'row',
    paddingHorizontal: 10,
  },
});

export default CustomInput;

アイコンはnpm install --save react-native-vector-iconsにてインストールし、https://oblador.github.io/react-native-vector-icons/から選んでくると良いと思います。

<InputAccessoryView>内でキーボード上部のカスタムビューを設定しています。updownが押された時に、フォーカスを変える処理をしています。矢印だけでなく、「完了」ボタンを追加したり様々なカスタマイズができそうです。

注意

こちらのコードは私のiOS端末のみで確認をしています。リファレンスを見ても、

となっており、iOSでしか動作しない事がわかります。
AndroidではInputMethodServiceを使うとできそうですが、こちらは追って報告します。
https://developer.android.com/reference/android/inputmethodservice/InputMethodService

追記 6.11

ユーザビリティ向上のため、カスタマイズをしてみました。

import React, { useState, useRef } from "react";
import {
  View,
  TextInput,
  InputAccessoryView,
  StyleSheet,
  ScrollView,
  TouchableOpacity,
  Text,
} from "react-native";
import Icon from "react-native-vector-icons/Ionicons";

const CustomInput = () => {
  const [focusedInputIndex, setFocusedInputIndex] = useState(0);
  const inputRefs = useRef([]);

  const toggleFocus = (direction) => {
    let nextIndex;

    if (direction === "up") {
      nextIndex =
        focusedInputIndex > 0
          ? focusedInputIndex - 1
          : inputRefs.current.length - 1;
    } else if (direction === "down") {
      nextIndex =
        focusedInputIndex < inputRefs.current.length - 1
          ? focusedInputIndex + 1
          : 0;
    }

    setFocusedInputIndex(nextIndex);
    inputRefs.current[nextIndex].focus();
  };

  const inputAccessoryViewID = "uniqueID";

  const renderInputAccessoryView = () => (
    <InputAccessoryView
      nativeID={inputAccessoryViewID}
      backgroundColor="#f2f2f2"
    >
      <View style={styles.accessoryContainer}>
        <TouchableOpacity
          onPress={() => toggleFocus("up")}
          disabled={focusedInputIndex === 0}
          style={styles.touchable}
        >
          <Icon
            name="ios-chevron-up"
            size={40}
            color={focusedInputIndex === 0 ? "gray" : "#156AE5"}
          />
          <Text style={{ color: focusedInputIndex === 0 ? "gray" : "#156AE5" }}>
            上の項目へ
          </Text>
        </TouchableOpacity>
        <TouchableOpacity
          onPress={() => toggleFocus("down")}
          disabled={focusedInputIndex === inputRefs.current.length - 1}
          style={styles.touchable}
        >
          <Icon
            name="ios-chevron-down"
            size={40}
            color={
              focusedInputIndex === inputRefs.current.length - 1
                ? "gray"
                : "#156AE5"
            }
          />
          <Text
            style={{
              color:
                focusedInputIndex === inputRefs.current.length - 1
                  ? "gray"
                  : "#156AE5",
            }}
          >
            下の項目へ
          </Text>
        </TouchableOpacity>
      </View>
    </InputAccessoryView>
  );

  return (
    <ScrollView keyboardShouldPersistTaps="handled">
      <View style={styles.container}>
        <TextInput
          style={styles.input}
          keyboardType="numeric"
          onFocus={() => setFocusedInputIndex(0)}
          inputAccessoryViewID={inputAccessoryViewID}
          ref={(ref) => (inputRefs.current[0] = ref)}
        />
        <TextInput
          style={styles.input}
          keyboardType="numeric"
          onFocus={() => setFocusedInputIndex(1)}
          inputAccessoryViewID={inputAccessoryViewID}
          ref={(ref) => (inputRefs.current[1] = ref)}
        />
        <TextInput
          style={styles.input}
          keyboardType="numeric"
          onFocus={() => setFocusedInputIndex(2)}
          inputAccessoryViewID={inputAccessoryViewID}
          ref={(ref) => (inputRefs.current[2] = ref)}
        />
        {renderInputAccessoryView()}
      </View>
    </ScrollView>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
    backgroundColor: "#ffffff",
  },
  input: {
    width: "80%",
    height: 40,
    borderWidth: 1,
    borderColor: "#ccc",
    paddingHorizontal: 10,
    marginBottom: 10,
  },
  accessoryContainer: {
    flexDirection: "row",
    paddingHorizontal: 10,
    justifyContent: "space-around",
    backgroundColor: "white",
  },
  touchable: {
    flexDirection: "row",
    justifyContent: "center",
    alignItems: "center",
  },
});

export default CustomInput;

カスタマイズは無限ですね。

]]>
フルスウィング散布①とアルムグリーン散布② 計量・散布まで。【芝活2023】 https://snow-leaf.com/lawn/lawn2023/armgreen2fullswing1/ Thu, 04 May 2023 06:48:13 +0000 https://snow-leaf.com/?p=797

アルムグリーンは1度目と同じなので割愛。4/28金に行なった記録用です。2週間に1度。詳しい事は以下の記事からお願いします。 以上のような特性がある芝生用殺虫剤フルスウィング。芝生を手入れしている方であれば必ず揃えておき ... ]]>

アルムグリーンとは

アルムグリーンは1度目と同じなので割愛。4/28金に行なった記録用です。
2週間に1度。詳しい事は以下の記事からお願いします。

エアレーションとアルムグリーン散布①【芝活2023】

フルスウィングとは

概要

  1. フルスウィングとは住友化学から出ている芝生用殺虫剤です。
  2. 有効成分クロチアニジンは浸透移行性があり、茎葉部から薬剤が植物体内に吸収され植物全体に移行する事で、植物自体に殺虫成分を有するようになります
  3. 有効成分クロチアニジンには接触毒もあるので、散布した時点で薬剤に触れた虫にも殺虫効果があります。
  4. 散布後も長く効果が持続するため、年間4回以内の散布となっています。
  5. 平米あたり0.5ℓ、希釈倍率も5000倍と少ない薬剤量で良いために長持ちします。
  6. コガネムシ・シバツトガ・スジキリヨトウなどお庭芝生にとって厄介な害虫がほぼ適用となってます。

以上のような特性がある芝生用殺虫剤フルスウィング。
芝生を手入れしている方であれば必ず揃えておきたい殺虫剤です。
今年初めてフルスウィングを散布しましたので、その過程をご覧ください。

薬剤と水の計算をし、散布

希釈倍数と使用液量があります。
今回はコガネムシ、シバツトガ、スジキリヨトウ対策です。
希釈倍数1000倍使用液量0.1ℓ/㎡で行います。

(使用液量0.1ℓ/㎡は散布量が少なさすぎて散布が難しいです。希釈5000倍の0.5ℓ/㎡をおすすめします。)

希釈倍率計算ソフト(一般用)を用いて薬剤と水量の計算を行います。
(フルスウィングは散布量が少ないため、スプレイヤーを使わずにジョウロで行います。)

薬剤2.7gに対して水約2.7ℓです。
約2.7ℓを27㎡に散布します。

2.7gを電子計りで計測。

500㎖計量カップにて約2.7ℓの水を投入し、攪拌。
散布します。

少なさすぎて散布が大変でした。
足りなくなってしまい、追加で作りました(^◇^;)

ジョウロか噴霧器か

フルスウィングの有効成分であるクロチアニジンは浸透移行性があるため、芝生の葉にまんべんなく付けるというよりは、根から吸収してくれれば良いので、噴霧器である必要がありません。
ジョウロやスプレイヤーを用いて土壌まで届くように散布する必要があります。

展着材について

展着剤は主成分の界面活性剤により、薬液の付着性や浸達性を高めたりし、農薬の効果を安定させる働きがあります。
展着剤にも種類があり、葉の表面に薬液を均一につける役割を持つ一般的な展着剤と、薬液を植物体内に入り易くさせる機能性展着剤と呼ばれるものがあります。
前述した通り、クロチアニジンの浸透移行性をより助けるために機能性展着剤を使うと良いと思います。
ミックスパワーやアプローチBIが機能性展着剤です。
ミックスパワーを例にあげると、散布液10ℓに対して3㎖です。1ℓに換算すると0.3㎖。
今回の散布液は約2.7ℓでしたので、0.3㎖をかけると0.81㎖です。少なさすぎる…🤣

散布間隔について

残効性があり、効果が持続するため年間使用回数は4回までと少ないです。
今年は5月、6月、7月、9月に散布する予定です。
4月に散布予定がGWまでずれ込んでしまい、シバツトガが発生してしまいましたので後悔…越冬しているコガネムシの幼虫対策のためにも4月は重要です。
6月・7月は害虫が多くなりますので必須です。益虫まで駆除してしまうスミチオンはなるべく使いたくないので、フルスウィングにかかっております。
9月か10月は越冬対策です。

さいごに

芝生は景観が重視されるため、害虫・病害対策が必須となります。その一方で、私の庭には雑木と呼ばれる木を植えており、殺虫剤や殺菌剤を好まない自然のままの生育・微生物や菌糸を用いた生育を行なっています。
芝生はどうしても放置するわけにはいきませんが、病害や害虫に負けない力強い芝生に育てれば殺虫剤・殺菌剤は必要最低限でいけるのではないかと思っています。
土壌改善をしたり、微生物の力を借りたりして芝生の本来持つ力強さを発揮できるように手助けしていきます。

そんな中でも比較的使いやすいフルスウィング殺虫剤の紹介でした。最後まで見ていただきありがとうございました。

]]>
庭の広さ(m²⇄坪)・散布量(ℓ/m²⇄ℓ/a)・希釈倍率から必要薬剤量を求めるアプリを作りました【スプレイヤーも対応】 https://snow-leaf.com/lawn/dilutionratio/ Wed, 03 May 2023 06:30:52 +0000 https://snow-leaf.com/?p=781

ここ1週間ほど、空いた時間を見つけてはアプリ制作を行なっていました。アプリといっても、スマホのいわゆるアプリではなく、Web上で動くアプリケーションです。パソコン・タブレット・スマホでも動作確認、レスポンシブデザインにも ... ]]>

ここ1週間ほど、空いた時間を見つけてはアプリ制作を行なっていました。アプリといっても、スマホのいわゆるアプリではなく、Web上で動くアプリケーションです。
パソコン・タブレット・スマホでも動作確認、レスポンシブデザインにもなっていますので、ご覧になりたい方は以下からアクセスしてみてください。2種類ありまして、スプレイヤー(希釈散布器)対応型と、一般用とあります。

作るきっかけ

https://garden.snow-leaf.com/dR1/

スプレイヤー(希釈散布器)を用いての薬剤散布の希釈計算が面倒だったため、それを簡単にするために上記のアドレスのものをリリースしていました。
希釈計算はできたとしても、薬剤は散布量というものが説明書で定められています。例えば、スミチオンですと3ℓ/m²、トップグラスなら1ℓ/m²など。
上記旧式計算アプリですと、それらを求めるためには自宅の庭の広さ(m²)を散布量と掛けて、必要希釈液量を求めます。
希釈倍率を入力し、必要薬剤量を求めたら、更にスプレイヤー用のフォームにてその必要薬剤量になるように水量調整をしなければなりません。

少し面倒でしたし、利用されている方から「庭の広さからできたらいいね」とのお声を頂いていたので、作ってみることにしました。

設計など・・・

簡易的なWebアプリでも設計図が必要です。
手書きで何の入力欄が必要なのか、その計算方法など書きました。

レイアウトもある程度考えておいて、計算フローができたらスマホファーストのデザインに整えました。

計算フローさえ固まれば、あとはChatGPTに任せます。
ChatGPTも正確では場合がありますので、コードはしっかり確認を行い、動作テストをします。
(2023.5.4追記 やはり見えなかったバグがありました。修正しました。)

工夫した点

スプレイヤーにあわせた設定

お庭で芝生をメンテされてる方のスプレイヤー使用率は高いです。主に次の2種類が使われていると思います。

まず、トヨチューのスプレイヤーaqua+。

次に少し割高ですがBIRCHMEIERのアクアミックス

お手頃なスプレイヤーaqua+を使われている方が多いと見受けられますが、それだけに対応するわけにはいかないので、各々のスプレイヤーにあわせた設定ができるようにしました。

スプレイヤーの容量を超えた場合、何回かに分けて散布するよう指示

例えばお庭の芝生面積が広大な方は、何回かに分けて散布する必要があると思います。
その場合もスプレイヤーの容量にあわせて、必要水量・薬剤量を等分させ、何度にわけるのかも指示するようにしました。

さいごに

これでもまだ計算しきれない薬剤があります。表記が希釈倍率ではなく、薬剤量と希釈水量となっている場合など。
芝生で使われる液肥・薬剤をある程度ピックアップして、それぞれの表記にあわせたものを作る予定です。まだまだ頭を抱える日々は続きそうです…

また、不具合等あればお問い合わせより連絡頂けると助かります。よろしくお願いします。

]]>
エアレーションとアルムグリーン散布①【芝活2023】 https://snow-leaf.com/lawn/lawn2023/alm1/ Sun, 09 Apr 2023 05:14:37 +0000 https://snow-leaf.com/?p=730

昨年芝を張ってもらったのが4月11日。青々としてきたのが4月20日あたり。今年はというと、あまり青くなってこない。Instagramや芝のオープンチャットの方々の芝を見るとかなり青くなってきている方が多数。それぞれの庭の ... ]]>

昨年芝を張ってもらったのが4月11日。青々としてきたのが4月20日あたり。
今年はというと、あまり青くなってこない。
Instagram芝のオープンチャットの方々の芝を見るとかなり青くなってきている方が多数。
それぞれの庭の日照状況や芝の生育状況、土壌などで違いはあるのはわかっているのですが、それでも焦りが🤣

購入しておいたアルムグリーン散布と、ガーデンスパイクによるエアレーションを行う運びとなりました。

アルムグリーンとは

そもそもアルムグリーンとはなんでしょうか。

上記販売サイトを見ていただければわかるので簡単に。

  • 漢方由来という事で人体に安心安全
  • 芝の免疫を高める事により病害虫への対抗
  • 漢方独特の匂いによる害虫・害獣への対抗
  • 根の伸長促進

昨年はHB101を使っていましたが、今年は試しにアルムグリーンを使ってみます。

エアレーションとは

エアレーションは土壌内の通気を良くする、根を切って成長を促進するなどの効果があると言われています。
やり方はローンパンチを使ったり、マイナスドライバーを使ったりなどいろいろありますが、私はガーデンスパイクを用いてエアレーションを行いました。
私の目的としては踏み固まった土壌をほぐすためだけです。その後の目土入れは行いません。後々ドリルコアリングをする予定なので、本当にほぐす目的だけです。

作業内容

エアレーション

TAKAGIのガーデンスパイクです。
今回初めてやってみます。

ザクザクと穴があいていきます。
全面をやるのに28㎡で20分くらいかかりました。

アルムグリーン散布

お次にアルムグリーンを散布します。
アルムグリーンの希釈倍率と1平米あたりの量を調べます。

希釈倍率は500倍〜1000倍1㎡あたりの散布量は1ℓです。

希釈倍率は当サイトにある希釈倍率計算ソフトを用いて計算をします。下記リンクからアクセスしてみてください。

私はスプレイヤーという希釈器を用いますので、それも併せて計算します。

まず、一般希釈用で必要薬剤量を算出します。
1㎡あたり1ℓの散布です。うちは28㎡の芝生なので、28ℓの希釈液が必要となります。
希釈倍率は500倍としますので計算の結果、必要薬剤は56mlとなります。

ジョウロで撒く場合は56mlの薬剤を入れ、残り約28ℓの水を使うのですが、そこまでジョウロに入らないと思いますので、ジョウロの容量分をそれぞれ割り算して何度かに分けてお使いください。

私はスプレイヤーaqua+という希釈器を使いますので、お次にスプレイヤー用の計算を行います。

先ほどのように、希釈倍率は500倍、スプレイヤーaqua+は100倍希釈になるので100でOK、真ん中の欄の準備する薬剤が56mlになるようにスプレイヤー内容量を調整していきます。

スプレイヤー内容量を300mlにすると準備する薬剤が60mlと結果が出ます。大体56mlになりましたので、こちらでやっていきます。


はかりで60mlを測って入れます。

合計300mlになるように水を入れ、攪拌します。

散布。
スプレイヤーは、スプレイヤーから出る流量が1分で10ℓとなるように水道の蛇口を調整しておく必要があります。
バケツに6秒で1ℓ溜められるように蛇口を調整して確認してみましょう。


アルムグリーンは1ℓ入っています。
私の芝の場合、28㎡なので1回につき約60ml使います。
つまり16回分です。

散布間隔は2週間に1度となっていますので、8ヶ月分です。
4月からなので、11月まで保ちます。

お値段は3800円前後です。
効果が目に見えてわかるならお安いと思います。
今年はどうなるか楽しみです。

]]>
始動【芝活2023】 https://snow-leaf.com/lawn/lawn2023/start/ Sun, 02 Apr 2023 05:25:57 +0000 https://snow-leaf.com/?p=691

樹木の移植等終了しまして、本格的に芝のシーズンが始まります。うちは高麗芝、約28㎡です。10mmでの低刈り、10mmでのサッチング、目砂入れは終了しております。これから緑になっていくのが楽しみです。手をいれたら再度更新し ... ]]>

樹木の移植等終了しまして、本格的に芝のシーズンが始まります。
うちは高麗芝、約28㎡です。10mmでの低刈り、10mmでのサッチング、目砂入れは終了しております。
これから緑になっていくのが楽しみです。手をいれたら再度更新します。よろしくお願いします。

]]>