カテゴリー: 研究

  • 物体認識を使った新しい行動解析ツール”YORU”とは一体なんなのか

    物体認識を使った新しい行動解析ツール”YORU”とは一体なんなのか

    2024年11月にbioRxivにこれまでの行動解析ツールとは異なる手法を使ったYORUという行動解析ツールについて発表されました。
    今回はそのツールについてどのようなツールなのかを解説していきたいと思います。

    YORUのプレプリント

    YORUのドキュメント

    YORUとは

    YORUとは深層学習を使った動物の行動解析ツールです。

    YORUのサイトより引用


    これまでもDeepLabCutSLEAPといった深層学習を使ったツールは多く公開されています。
    これらのツールは深層学習と用いて動物の体の部位をトラッキング、そして姿勢推定を行うツールです。(ここではトラッキングツールと呼びます。)

    姿勢を推定することによって、動物がどのような姿勢をしているのかを明らかにし、行動解析を行います。

    これに対して、YORUは物体認識というアルゴリズムを用いて行動を認識します。
    簡潔には、身体部位のトラッキング等は行わず、動物の行動している様子から行動を直接定義します。

    人がりんごやみかんを見分けるときに、形や色といったことを情報に見分けていると思います。
    物体認識では物体を分類することに長けているため、こういった見た目によるものの見分けを行います。

    これを動物の行動解析に用いることで、動物の行動をその見た目から分類します。
    YORUのツール内では、これを行動オブジェクト(Behavior object)と呼んでいます。

    トラッキングツールでは行動は点と線で認識され、YORUでは行動をボックスで囲われるように解析されます。

    物体認識による行動定義のメリット

    物体認識による行動のメリットとしては

    ・個体数が増えてもエラーが出にくい

    ・動物の向きに影響されにくい

    ・解析速度が速い

    ・トラッキングでは捉えにくい行動(マウスがうずくまるといったような行動)を捉えられる

    といったことが考えられます。

    トラッキングツールの弱点である、複数個体の行動解析を簡単に、かつ解析コストをかなり抑えて解析することが可能です。
    さらに、身体部位の位置情報による行動定義が困難な行動も簡単に解析可能です。

    例えば、手をあける、閉じるという行動を考えてみましょう。
    トラッキングツールであればカメラで指先をトラッキングして閉じている、開いているを定義すると思いますが、手を閉じたときに指先が見えなくなると、トラッキングできず、位置情報を正確に計算できなくなります。

    しかし、物体認識であれば手がひらいた状態と閉じた状態の手の形を見ているので、一部が見えなくなっても正確に捉えることが可能です。

    個体数増加に強いという理由に関しても、トラッキングツールであれば個体数が増えると、身体部位がどの個体なのかを割り振って、正確に各個体の行動をとらえなければなりませんが、YORUであれば各個体の形状のみで解析するため、個体の識別や各個体への割り振りを行う必要がありません。

    解析速度も速いため、リアルタイム解析が可能であり、ある行動をしたときに装置制御を行うといったことも可能であり、行動実験の自動化を行うことができます。

    物体認識による行動定義のデメリット

    もちろんデメリットもあり、

    ・一連の行動は捉えることができない

    ・個体識別は行えない

    ・未知の行動を捉えることはできない

    ・見た目でわかりにくい行動は捉えられない

    ・定義した行動の詳細がわからない

    といったことがあります。
    これらのデメリットは逆にトラッキングツールの強みとしても挙げられるところであり、どちらが優れているというよりは、メリット・デメリットをお互いに補完し合っているような感じです。

    そのため、実験者は状況に応じた適切な手法を選ぶ必要があります。

    YORUは何がすごいのか

    さて、YORUの根本に使われている物体認識による行動解析のメリット・デメリットを述べましたが、YORUは一体何がすごいのでしょうか。

    全てGUI化されている

    YORUではプログラミングを行うことなく、行動解析を行うことが可能です。

    これはDeepLabCutやSLEAPなどのツールも同様であり、生物学者にとってこれらの解析を使うための一助となります。

    デザイン


    YORUのデザインはこれまでのツールと違い、かなり研究ツールっぽくはない感じがします。

    リアルタイム解析を導入している

    YORUではこれまでのツールでは珍しく、リアルタイム解析のGUIが完備されています。

    リアルタイム解析のシステムを作るのはプログラミングがある程度できればそこまで問題ではありませんが、そうでないとかなりハードルが高いです。

    ただ、YORUでは全てプログラミングなしで、リアルタイム解析、さらには外部トリガーまでを行うことが可能になっています。

    多様な実験装置に適応可能である点

    リアルタイム解析の最も高いハードルとして、自身の実験系の装置を動かすコードとこれらの解析をどのように組み合わせるのかというのがあります。

    YORUではプラグインシステムを導入しており、外部装置を制御するプログラムを選ぶことができます。

    つまり、自身のシステムにあったプラグインを選択すれば良いのです。

    また、プラグインは自作することも可能であり、自身の装置の制御プログラムをプラグインにすることで簡単にYORUのリアルタイム解析と合致させることができます。

    これは他のツールにはない、かなり使いやすいシステムとなっています。

    最後に

    YORUは発表されたてで、まだまだ使いにくい点・ドキュメントの不足が目立ちます。

    しかし、これからこれらが整備されていくことによって、どのように使われていくのか非常に楽しみです。

  • GitHubの基礎から論文にコードを公開するまでの方法

    GitとGitHubの使い方に関する発表を行った時の資料を公開します。

    実際にGitHubを使ってどのように操作するのかから、プログラムコードを論文に載せるためにはどのような操作するのかを説明しています。

    論文データや解析プログラムの公開が現在よく求められています。
    それ以外にもGitHubを使ったプログラム管理は共同研究を行う上で重要な要素となってきています。

    [2024年1月15日更新] https://www.slideshare.net/slideshow/embed_code/key/vzfmHD9i6I15wI

    GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順 from Hayato Yamanouchi

    自身のサイトにも同様のものを載せています。

    山ノ内勇斗の個人サイト

  • ショウジョウバエの研究ツール・データベースまとめ

    ショウジョウバエ(Drosophila)の研究をするにあたっての、研究ツールのまとめを備忘録的に残しておきます。
    書き漏れ、追加して欲しいツールなどありましたら、サイトのコメントかこちら(haya.m.yamano.neuro@gmail.com)までご連絡お願いいたします。

    現在制作段階なので、徐々に情報が増えていくと思います。

    更新日: 2023/12/1

    データベース

    FlyBase

    URL: https://flybase.org

    ショウジョウバエの総合的なデータベース。遺伝子の配列、発現情報をはじめ、ショウジョウバエの研究論文や研究コミュニティなどの情報を入手することができる。

    FlyWire

    URL: https://flywire.ai

    NeuronBridge

    URL: https://neuronbridge.janelia.org

    FlyLight

    URL: https://www.janelia.org/project-team/flylight

    FlyCircuit

    URL: https://www.flycircuit.tw

    neuPrint

    URL: https://neuprint.janelia.org

    SCope

    URL: https://scope.aertslab.org

    Fly Cell Atlas

    URL: https://flycellatlas.org

    Paper:

    ストックセンター (Stock Center)

    Bloomington Drosophila Stock Center

    URL: https://bdsc.indiana.edu

     アメリカのBloomingtonにあるIndiana Universityのショウジョウバエストックセンターです。
    遺伝型による検索だけでなく、Stock No.(BLから始まる番号)などでも検索することができます。

    GAL4系統やUAS系統、RNAi系統など多種多様な系統がストックされています。

    Vienna Drosophila Resource Center

    URL: https://shop.vbc.ac.at/vdrc_store/

     オーストリアの Institute of Molecular Biotechnology (IMBA) にあるショウジョウバエストックセンターです。RNAi系統が特に多くストックされています。

    KYOTO Drosophila Stock Center

    URL: https://kyotofly.kit.jp/cgi-bin/stocks/index.cgi

     日本の京都の京都工芸繊維大学にあるストックセンターです。日本にある中で一番大きいショウジョウバエのストックセンターであり、サイトからStockリストがダウンロードできたり、Lineごとにまとまって検索したりすることができる。

    KYORIN-Fly : Drosophila species stock center

    URL: https://shigen.nig.ac.jp/fly/kyorin/

     日本の杏林大学にあるショウジョウバエのストックセンターである。多様な種のショウジョウバエがおり、キイロショウジョウバエの近縁種の変異体などもこのストックセンターから入手することができる。

    行動解析ツール

    DeepLabCut

    URL: http://www.mackenziemathislab.org/deeplabcut

    Paper: Mathis A, Mamidanna P, Cury KM, et al. DeepLabCut: markerless pose estimation of user-defined body parts with deep learning. Nat Neurosci. 2018;21(9):1281-1289. DOI:10.1038/s41593-018-0209-y

     

    SLEAP

    URL: https://sleap.ai

    Paper: Pereira TD, Tabris N, Matsliah A, et al. SLEAP: A deep learning system for multi-animal pose tracking. Nat Methods. 2022;19(4):486-495.
    DOI:10.1038/s41592-022-01426-1

    UMATracker

    URL: https://ymnk13.github.io/UMATracker/

    Paper: Yamanaka O, Takeuchi R. UMATracker: An intuitive image-based tracking platform. J Exp Biol. 2018;221(16):1-5.
    DOI:10.1242/jeb.182469

    Ctrax

    URL: https://ctrax.sourceforge.net

    Paper: https://www.nature.com/articles/nmeth.1328

    FlyTracker

    URL:

    Paper:

    ID Tracker

    URL:

    Paper:

    TRex

    URL:

    Paper: https://elifesciences.org/articles/64000

    JAABA

    URL:

    Paper:

    その他

    Brain and VNC template (JRC 2018 Brain templates)

    URL: https://www.janelia.org/open-science/jrc-2018-brain-templates

    Color-Depth MIP

    URL: https://www.janelia.org/open-science/color-depth-mip

    解剖と抗体染色のプロトコル

    URL: https://www.janelia.org/project-team/flylight/protocols

    ショウジョウバエの成虫や幼虫の解剖方法の動画、抗体染色のプロトコルが手に入ります。

  • 学振・特別研究員(DC1, DC2)申請書をもっとより良くするために [2024年度DC採択者経験談]

    2023年9月27日水曜日 14:00に学振 DC1, DC2の採択者の発表がなされました。

    僕も申請した学生の一人であり、無事採用内定を取得することができました。
    今年度の学振の採択率は例年よりも低いことがX (旧Twitter)で流れていました。

    採用内定は14%ほど、二次採用も含めると17%とのことでした。

    例年20%近くあると聞いていたので、採択率を見たときに「マジか・・・」と思いました。

    今回の学振ですが、いろいろな人の学振の申請書を見たり、自身の申請書を書いたりし、その中で申請書で少しでも採択率を上げるために気をつけるべきことをまとめてみます。

    学振のみならず、申請書、ES、など人に見せる文章を書くときにも参考にできると思うので、ぜひ読んでいってほしいです。

    気をつけるべき点は申請書のその先

    まず、申請書を書くうえで重要なことは、自分の言いたいことを限られたスペースで伝えることです。

    申請書とは、自身の研究を説明し、人に重要さを主張すること、私はどのような人で、どのようなことができるため、この目標を達成することができる。だからお金をください。

    と言うように、書いたその先に何があるのかを見越す必要があります。

    申請書を書いていると、いい文章を書くこと、先生に文句の言われない文章を書くこと、など目先のことにとらわれ、”申請書”と言うものの本質が頭から抜けてしまうことがあります。

    ただの自己満足ではなく、読み・評価する人がいて、それを元に採点されると言うことです。
    そこは明確にテストなどと異なり、だからこそ正解というものがありません。

    これまで、解答のあるテストなどを行ってきて、急に申請書にぶち当たると、一体何を書けばいいのか、何が正解なのかがわからなくなる人が多い印象でした。

    書いている最中も、申請書は誰のために書いているのかということを忘れずに、書く必要があります。
    そのために、学振前に幾つか別の機関の申請書を書いて、人に見てもらうということをしてもらっていると、それだけでかなり申請書の読みやすさが異なってきます。

    キーワードは”論理性”と”具体性”

    論理性

    僕が学振を書くときに最も気をつけたことは、論理性と具体性です。

    論理性とは、主張が一貫し、それぞれの話題がつながっていることです。
    つながりは、文同士、パラグラフ同士、申請書全体などさまざまなスケールで考える必要があります。

    もっと実感に基づいた言い方をすると、
    論理性のある文章とは、読み手が知りたい順に知りたい内容が記載されている文章です。
    これがしっかりできていると、読み手が読んでいるときにスッと内容が入ってきます。

    あくまで聞きて主観で考えるということ。
    自分がいかにこれは論理が通っていると言っても、相手にはその論理が通じないかもしれない。

    学振の書き方やテクニックなどで、「すなわち」「以下に詳細を述べる」などの文言を入れた方がいいということが書かれていますが、その本質は相手に文章のつながりを容易に理解してもらうためのガイドを示すということです。

    こう言った文言が必要か否かに関しては、人によって意見が大きく異なるところですが、言えることとしては、入れずに文章構造がわからなくなるのであれば、貴重な文字数を使ってでも入れるべきであるということです。

    具体性

    具体性とは、言葉通り、読み手が必要な分だけの情報が記載されているということです。

    よく申請書や研究発表で
    「私の研究は前提となる情報が多いから短くまとまらない〜」
    という言葉をよく聞いたことがあると思います。

    僕自信、10分の学会発表とかで、10分で終わるわけないやんとよく思ったものです。

    しかし、自信を持って内容を詰めた発表でも、聞き手にとってはいらない情報がたくさんあり、知りたい情報はほとんどなかったということがよくあります。

    つまり、内容の取捨選択ができていないのです。

    内容の取捨選択をする上で、自分自身が最も伝えたいことは何かを決めます。
    そして、その本質の説明に必要なものは残すこと、本質の理解にいらないものは捨てることで具体性を持たせることができます。

    学振などの申請書は本当に短い文章量で研究や自身のことを語る必要があります。
    よく学振でもらえるお金を申請書の文字数で割った金額を算出して、一文の価値を計算してみろ と言われます。

    この文章にはそれだけのお金の価値があるのか!ないなら変更するべきである。
    という観点を持ってほしいという意図でこの言葉を言っているのだと思います。

    研究の背景説明は第三者目線からの説明であり、自分の説明を際立たせるために必要ではあるが、その文自身は人の研究であるため価値は低いと言えます。
    最小限に収めるのか、別の価値を見出すのか、考え方はそれぞれだと思います。

    そうやって推敲し、内容が洗練させていきます。

    ここまで、具体性と書きながら、内容を削る話しかしてませんが、要は内容を詰め、一文の具体性を過不足なく高めていくということが重要になってきます。

    申請書はこの論理性と具体性を常に頭に入れつつ、時々立ち止まって読み直して、書き直すという作業をずっとやっていました。

    早めに人に見せること

    そして、申請書で最も重要な点の一つに、申請書を早めに人に見てもらうことというのがあります。

    一旦完成してから、自身が納得してから、と言って申請書締切1週間前になって見せてくる人がいますが、正直それは勿体無いです。

    人に見せるということは、自分自身が進んでいる方向性が正しいかどうかを確認すると同時に、意見をもらうということです。
    修正ではありません。

    学振をどれだけ人に見てもらったかで学振の出来が変わるとよく言われるように、新たな気づきや根本的な考え方などが変わったりします。

    理想は3週間前には担当教員以外の他の人に見てもらうのを目標にしましょう。

    申請書に向き合い続けない

    申請書を書く期間になると、実験も惜しんで申請書に向き合っている人をよく見ました。
    確かに、ある程度時間をかけなければならないものですし、何回も推敲を重ねるため、膨大な時間が必要になります。

    ただ、ある程度描き終わってからもただひたすらに申請書を読み返して、無意味に時間を過ごす必要はありません。
    むしろ、推敲前にはある程度時間を空けてから読む必要があります。

    申請書は人生がかかっている重要な書類です。
    しかし、かけた時間に比例してよくなるものではなく、いかに効率よく最善のものを作るのかという勝負です。

    パソコンに貼り付けにならず、ある程度実験を進めたり、なんなら気分転換をしながらかくと、冷静な視点で書くことができます。

    僕は大学だけではなく、パソコンをカフェとかに持って行って場所をよく変えながら書いていました。

    最後に

    本年度の内定採択率は一次選考地点で14%ほどと言われています。
    逆にいうと、申請した86%の人が学振に採択されなかったということです。

    採択されない人が大多数なので、そもそも採択されなかったことに必要以上に落ち込む必要はありません。

    また、学振に採択された人は、多くの人の夢や生活を押し除けて自分自身が採択されたということになります。
    それ相応の研究に対する評価はもちろん現状ではあるが、それ以上にこれから人一倍頑張るという責任が伴います。

    僕自身も戒めとして、今後も研究を頑張っていきたいです。

  • 生物系の論文の検索方法[大学院生編]

    研究室に配属されると、研究室でジャーナルクラブという論文紹介を行いなさいという機会が少なからずあると思います。

    ジャーナルクラブの形式はラボによって多様ですが、自分で論文を調べて自分で読んで、発表しなさいとなるパターンも多くあるでしょう。
    ジャーナルクラブでなくても、そもそも研究をするには先行研究を知るということで論文検索をすることが多くあると思います。

    そこで活躍するツールを紹介してきたいと思います。

    Google Scholar

    まず初めに紹介するのはGoogle Scholarです。

    研究者ならば知らない人はいないというぐらい有名なツールとなっています。

    基本的にはGoogleで検索するのと同じ感じで検索できるのですが、出てくる項目は全て論文、本などの文献データです。

    とりあえず大雑把に論文を調べたいときに使うので、最も論文検索で使われるのではないかと思います。
    僕も、とりあえず調べるときはGoogle Scholarを使って適当なキーワードを入れて検索し、スクリーニング的に調べています。

    大雑把に調べることができる反面、詳しく指定できることは少ないです。

    論文が出された期間、関連性、などの主要なものはあるので、ほとんどこれで事足ります。
    また、論文雑誌を指定したいときとかは、そもそもキーワードに雑誌名を入れちゃったりと本当にGoogle検索と同じ要領です。

    PubMed

    次に紹介するのはPubMedです。

    PubMedは生物系の論文検索ツールとしては最も有名だと思います。

    このツールのすごいところは、論文の検索方法の種類の多さです。

    筆者や論文雑誌、エディターなど、本当に思いつく限りの検索方法を行えます。

    論文雑誌が決まっているときや著者、その他検索したい内容が詳細に決まっている時にはかなり有用なツールとなっています。

    Web of Science

    最後に紹介するのは、Web of Sciecnceです。

    基本的には有料ですが、大学に所属する人であれば、基本的に大学のwifiなどからアクセスできるので学生は無料で使えます。

    このツールが最も効果を発揮するのは、インパクトファクター(IF)と呼ばれるものを調べられるという点です。

    IFとは、ジャーナル誌のランクづけみたいなもので、どれぐらいそのジャーナルが強いかどうかを示す値です。

    Googleでも「ジャーナル名 IF」と調べると、インパクトファクターは出てきますが、正式な値ではないことが多いです。

    Web of Scienceは正式にIFを出しているところなので、正いIFを知ることができます。

    僕は、投稿しようとする論文誌を決めるときとか、先生の論文がどれぐらいすごいかを知るために、IFを調べるツールとしてWeb of Scienceを使っています。

    最後に

    基本的には、Google Scholarが頻繁に使うのですが、他のツールも知っておくといざ何かで調べたいという時に便利です。


  • 人生で初めて論文を書いた (体験談)

    研究者にとって論文を書くというのは、とても重要なことであり、研究を世に報告するための作業です。

    論文を書く作業は想像以上に時間がかかり、地味であり、根気のいる作業です。
    だからこそ、最初に自分で書いた論文は自分の中でも印象深いものになります。

    僕自身も、M1で指導教員の指導のもと、一から自分で論文を書くことを経験しました。
    分野にもよりますが、生物学の分野において、修士の学生で、自分で論文の文章を書くことは非常に珍しいことです。
    そもそも論文すら出ないというのが普通ですから。

    レアな経験をさせてもらったことに感謝するとともに、その時の気持ちを忘れないために体験をここに綴りたいと思います。

    論文を書くタイムスパン

    生物学の分野では、論文を書こうと思ってから、実際に論文が掲載されるまでに大体一年かかります。
    論文の形式や規模感にもよりけりですが、化学や工学の分野と大きく異なるのは、論文の内容の多さだと体感しています。

    物質の発見やタンパク質の発見とは異なり、僕が研究している神経行動学という分野は、「この神経がこの行動にこの様に関わっている」というように証明するため、図の数(一つの図の中にグラフが複数あります。)が5を超えることはザラにあります。

    だからこそ、それだけのデータを集め、論文を書き、出版されるまでには他の分野以上に時間がかかると言われています。

    論文投稿までにかかる大体のステップを下に書きます。

    • 原稿を書く(1ヶ月~1年以上)    原稿を書くのはさまざまなことが起こりうるため、実際に順調に行かないことも多々あります。
    • 原稿を人に見てもらう(1ヶ月~3ヶ月)    あったりなかったりですが、お世話になっているその研究には関わっていない人に、読んで内容がわかるかを見てもらう。
    • 英語の校正(約1ヶ月)
    • 論文投稿!!!(Submission) (2日~4ヶ月以上)    リジェクトは2日で帰ってきたりすることもあり、逆にレビューに回ると数ヶ月音沙汰ないこともあるそうです。
    • リバイス対応 (1ヶ月~6ヶ月)    レビュワーからコメントをもらい、足りないデータや内容の修正を行い、再度ジャーナルに送り直します。リビジョンはメジャーリビジョンとマイナーリビジョンとあり、論文の大きな構成が変わる様なことを言われることも多々あります。
    • アクセプト!!!(Accept)    リバイスの対応ができ、ジャーナルからOKが出たら無事アクセプトとなります。ここまで行ったらやっと成果として認められます。
    • 論文掲載に向け体裁を整える(1週間~1ヶ月)   論文がネットや雑誌に掲載されるための体裁の整えなどの最後の仕上げ作業になります。
    • 論文の出版、プレスリリースの作成などなど、、、、    アクセプト後は色々なことがどんどん起こり、忙しくなります。

    論文を書いて、ボタンを押せば出版されるわけではなく、論文はさまざまな人に評価され、論文が論理的に正しいかを第三者の目で見て、認められ、世の中に出版されます。

    僕の体験談

    まず初めに、出版された論文がこちらです。

    4年生で卒論発表を行ったあと、2月の終わり頃に指導教員から論文を書きましょうと提案されました。

    そして、3月から論文を書き始め、12月にジャーナル誌のiScienceに投稿、4月に正式にアクセプトされました。
    論文を書こうとなってからちょうど一年ほど経って出版されるという、非常に順調な論文投稿でした。

    論文を書こうと言われた3月は非常に嬉しく、なるべく早く書いてやろうと意気込んでいました。
    ただ、書いてきてくださいと言われるが、どの様に書けばいいのか全くわからず、とりあえず論文を調べて見様見真似で自分の内容を書いていきました。

    しかし、僕は英語が苦手であるのも相まって、わからないから修正してください。と言われながら修正を続けました。
    ここで、修正したものを送ってくるわけではなくて、ここがわからないから書き直してくださいと言われたのは、当時は本当に辛く、教えてくれよと思う経験でしたが、今となっては自分で書き方を調べて、考えたからこそ、今に生かされているなと感じました。

    先生から言われたのは、研究者を目指すのであれば今後論文を書く機会はいっぱいあり、その時に書けなくなるので、自分で書いてください。と言われました。

    ただやはりきついものはキツく、夏頃はご飯も食べられず、胃腸が弱りきっていました。
    (個人的に文章書くだけなのに、なんでストレスなんだろうって疑問に思うぐらい不思議ですが、体には応えていたみたいですね。)

    なんでここまで辛いのかというと、論文を書いている期間は基本的には実験をやらずに論文を書くことに集中しています。
    ただ、学会があったり、授業や私生活など多くのことが押し寄せてきます。

    論文でうまく行っていないし、実験も進んでないので何も今はしていないのではないかと思えてきます。特に周りが進んでると。。。
    半年に一回あるラボの進捗報告会でも一人だけ全くの進捗がないことの焦り。

    そして、極め付けは誰にも相談できないという環境でした。
    M1で論文を書くというのはイレギュラーであり、他の人からしたら羨ましいことです。
    だからこそ、論文の話題で相談できる相手が研究室におらず、研究に携わっていない人には、文章を書くだけだしと思われるため、理解されずで一人ぼっちでやらなければならないという感覚になりました。

    9月ごろ、どうしても辛くプログラムベースの研究を気晴らしにちょっと進めており、国際学会に出すようの小さい論文を書いていました。
    それが僕的に結構いい気晴らしであり、研究が進まないという不安が軽減されるとともに、小さい論文なので論文も書きやすく、自分の成長を感じられたとともに成功体験という意味で自信になりました。

    そしてそんなこんだで、10月ぐらいには大体の原稿を書き終えました。
    そこで、提出だと思っていたら、先生から
    「他の先生にも見てもらいましょうか!」と言われ、
    「ええええ!!!!????終わりじゃないの????」
    と思ったことは今でも記憶に残っています。

    見てもらった先生からは、非常に的確なアドバイスをいただき、論文が非常に良くなりました。
    論文原稿を人に読んでもらうというのは、非常に重要なプロセスなんだなと体感し、それは論文だけでなく、研究全般に言えることだなと体感しました。

    そして、12月に最初の提出(Initial Submission)をiScienceにしました。

    iScienceは論文雑誌としては、すっごいランクの高いところではないですが、でもランクが決して低いわけではなく、博士論文なども掲載されるぐらいとてもいいジャーナルです。

    僕的には挑戦の枠組みとしてiSicenceを選択しており、7:3で通らない:通る と考えていました。
    なので、リジェクトの連絡を待っていたら、全然連絡が来ず、一週間後ぐらいにレビューに回った報告を受け、非常に嬉しく思ったのと同時に驚きでした。
    指導教員も驚きだった様です。

    そして、レビューのコメントに答えた後、提出し、細かい修正後、正式にアクセプトされました。
    提出後は結構流れに沿う感じで、すんなりといきました。

    個人的には、最初の提出の段階が一番テンションが上がり、かつ達成感のある瞬間でした。

    論文を書くという工程をいかに自分が安易な考えを持っていたのかを実感するとともに、論文を書くという作業はその後の研究の非常にいい経験になることを感じました。

    研究者になりたいのならばまず論文を書け!と言われる所以は、成果などではなく、論文を書くという工程が、自身の研究論理立てて、先を見越し、論文を書くという視点を持って進めていくことの重要性を教えてくれました。

    さまざまなことを学んだ経験であり、自分の研究者人生の最初として、とてもいい経験ができたと思います。

    また後日どの様に論文を書いていったかという、より実務に特化した内容もブログで更新していけたらなと考えているので、楽しみにしておいてください。

  • なぜハエが研究に使われているの?

    モデル生物とは

    研究でよく使われる生物というとみなさんマウスやモルモットが思い浮かぶと思います。
    薬の効能を調べたり、構造を調べたりするのにこれらの動物で検証してから、実際の臨床実験に移行するというイメージだと思います。

    そのイメージは間違ってはいないのですが、他にも研究で使われる生物はたくさんいます。
    メダカ、ゼブラフィッシュ、線虫、大腸菌、酵母、キイロショウジョウバエ、アフリカツメガエル、シロイズナズナ、カイコなどなど。。。。
    これらの生物はモデル生物と呼ばれており、様々な研究が行われています。

    モデル生物とは、その生物を徹底的にみんなで調べることによってその生物を知り尽くし、他の生物に共通する部分や原理の理解を行おうという生物たちです。

    キイロショウジョウバエとは

    このラインナップを見て意外な生物がいくつかいると思いますが、その中でもキイロショウジョウバエはかなり異質だと思います。
    え?ハエ???あの家に出てくるやつ???

    そうです!
    キイロショウジョウバエの学名はDrosophila melanogasterです。
    様々なノーベル賞の研究に関わっており、広く研究に使われています。

    ハエの研究者が集まる日本ショウジョウバエ研究会(JDRC)をはじめ、アメリカやヨーロッパ、アジアなどでもハエの研究の学会があり、さらにはショウジョウバエの神経系のフォーカスしているNeuroFlyやNeurobiology of Drosophilaなど世界規模で研究が行われています。

    ハエの研究のメリットは
    ・中枢神経系を持っていること
    ・遺伝学ツールの豊富さ
    ・バランサー染色体の存在
    ・世代時間が短いこと
    ・飼育のしやすさ
    ・決まった行動パターンを示す

    などなど、たくさん挙げられます。
    世界中の研究者がキイロショウジョウバエという対象を研究することによって、大量のデータベースが作られており、脳では神経細胞と神経細胞のつながりのネットワークほとんど全てわかっています。

    ここまでくると、研究でやることないのでは?と思われるかもしれませんが、確かに神経の繋がりはわかっていますが、それがどのような機能を持っているかはわかっていないことが多いです。

    さらには、免疫系や発生などのパターンに関しても、そこにどのような分子が関わっているのかなど、わかっていない問題が大量にあります。

    ここまでやって何になるの?と思うかもしれませんが、ここまでやるからこそ、生物に普遍的な原理を見つけ出したりすることができるのです!
    これがモデル生物です。

    そして、これらの機構は薬の開発や安全な遺伝子組み換えなどに応用することができます。

    ショウジョウバエ研究の歴史

    1901年になんか有名な人(チャールズ・W・ウッドワース氏)がある人(ウィリアム・アーネスト・キャッスル氏)に遺伝学の材料として勧めたのが始まりとされてるらしいです。
    理由としては、大量飼育が簡単にできるから。とのことです。

    その後、トーマス・ハント・モーガン氏がショウジョウバエを使った遺伝学の研究で有名になります。突然変異体の発見や、遺伝子が染色体状にあることを証明したことなど、遺伝学に大きな影響をもたらしました。

    その後、発生に大きな影響を与えるホメオティック遺伝子の発見が重要な発見として挙げられます。
    さらに、時計遺伝子の発見にも大きな影響を及ぼしました。

    大量に飼育でき、昆虫であり、変異体を簡単に作成できるという利点は他の生物にないメリットであり、だからこそ遺伝学の研究の材料として非常に秀逸なものでした。

    現在では、GAL4/UASシステムの応用、バランサー染色体などが作られ、多様なツールも整備されてきています。

    追加話

    ショウジョウバエの研究をしている研究室では、バイアルと呼ばれる直径3センチ、縦が10センチぐらいの円柱で飼育しています。
    そして、そのバイアルが大量に置かれている飼育部屋と呼ばれる部屋が大体あります。

    ハエが汚いのでは?と思う方もいると思いますが、餌は酵母の入ったゼリーのようなものであり、生肉等をあげているわけではないので、菌が増えるといったことはありません。

    生命力は割と強く、比較的簡単に飼育できます。
    だからこそ、長く研究されてきているのでしょう。

    解剖等をするときは、実体顕微鏡を使って、ピンセットで手作業で行います。
    長さが2.5mmぐらいのハエをピンセットで解剖します。

    行動実験もすることができ、工夫の凝らされた装置で様々に研究が行われています。

    また、ハエの素晴らしいところは世界のいくつかの場所にストックセンターがあり、そこにはどこかの研究室で制作した特定の遺伝子操作を施したハエがたくさん飼育されている場所があり、そこから欲しい系統を手に入れることができます。

    なので、自分自身でハエの系統を作る必要がなく、すぐに実験を開始することができます。
    (自分で遺伝子を操作しようとすると3ヶ月以上はかかります。)
    まさに、巨人の肩の上に立つですね。

    ショウジョウバエの研究を始めると、他の生物の研究ができなくなると生物学者は言っており、ショウジョウバエは研究に適している生物であることを物語っています。

  • JST申請書[学内申請書]の書き方 [備忘録]

    JST申請書[学内申請書]の書き方 [備忘録]

    はじめに

    研究者につきまとうタスク、その一つに申請書というものがあります。
    研究者を目指すにあたり、避けては通れず、かつ見逃されがちな要素である申請書。

    申請書に苦しむ人は多いのではないでしょうか。
    僕もその一人であり、国語が苦手で理学部に入ったのにまさかの目指す先でまさかの国語の問題が立ちはだかってくるとは。。。。

    近年、博士課程の学生の支援は充実しており、学振(DC)以外にもJSTの事業による学内の助成金、卓越大学院プログラム、JASSOなど元々あったものも強化され、新しいものも追加されつつあります。
    そして、これらの支援を受けることができれば、博士課程の生活費はほとんど賄い、かつ授業料の援助も受けることができます。

    私自身、学内の申請書にいくつか直面し、申請しています。

    学振との違い

    基本的には学内の申請書は学振と似ていることが多いです。
    その理由としてはやはり、学振に通ることが最終ゴールであるからです。
    また、違うフォーマットでかくとそれだけ学生の負担になるので、学振のフォーマットに合わせ、ブラッシュアップしていける仕組みにしていることが多いです。

    選考基準は主に研究内容と、本人の素養と将来性にあります。
    これらをきちんとアピールし、人に伝わることが重要になってきます。
    決して、綺麗で文化的な文章を書く必要はありません。

    学振と学内申請書で似ている点が多いですが、異なる点もあります。
    それは、学内申請書で募集している人材と学振で募集している人材が少し異なることです。

    これは、申請書にどのような人材を募集しているかが書いてあるので、それに合うように記載する必要があります。

    また、学振と違う点の最も大きな点は、読む人の違いです。
    学振では申請分野があり、ある程度専門性のある人が読みます。
    しかし、学内申請書では、基本的には学内の人が読むため、生物系でも動物の研究内容を植物の人が読むことがあります。
    さらに、学振よりも学内申請書の方が一人の審査員に回ってくる申請書が多いということもあります。

    つまり、より一般的な内容にし、専門分野が異なっていても魅力が伝わるようにすること。
    そして、ぱっと見で内容と魅力が伝わるようにすることです。

    基本的に審査員の人は申請書を読む気がないものだと思い、審査員に興味を持たせ、”読ませる”申請書にする必要があります。
    図やハイライトを適切に使い、ぱっと見で重要な部分が何なのかを伝わるような文章にしましょう。

    書き方のコツ

    申請書のコツは論理性と具体性です。

    論理性とは、読み手が欲しい情報が欲しいタイミングと順番でくることです。
    つまり、文章と文章がつながり、読み手がなんとなく予想してくる内容を記載することで論理性をもたすことができます。

    例として、
    “私は大学時代に複数の学生団体に所属し、それぞれの団体で運営を行ってきました。そこで私は、リーダーシップと人と円滑に物事を進める力を養いました。”

    団体運営→リーダーシップと円滑に物事を進める力

    といったように、文章同士が違和感なく、ギャップなく繋がることが論理性があると言えます。

    次に具体性ですが、先ほどの例に具体性を追加すると、
    “私は大学時代にイベント企画や学生同士の交流会を企画する学生団体に複数所属し、それぞれの団体で自らが中心となってイベントの運営を行ってきました。そこで私は、リーダーシップと人と円滑に物事を進める力を養いました。”

    具体性を加えることによって、自分がその団体の何をどのようにして関与したか、そしてそれによってどのような能力を得たのかの論理性が増します。

    しかし、この二つを求める上で重要な問題は、申請書の文字数制限です。
    文字数制限はかなり厳しく設定されており、具体的に紹介しようとすると文字数が足りなくなります。

    だからこそ、内容を入れ込みたいがゆえにこの二つの要素を蔑ろにしがちです。

    簡潔にわかりやすく、内容をまとめる。
    というのと、論理性と具体性の矛盾が申請書を書く際の重要な問題となってきます。

    このバランスを考える上で重要なのは、その申請書でどのような人を採用したいのかです。
    大体の申請書にはどの項目を書いて欲しいのか、どのような内容を書いて欲しいのかが書いてあります。

    その項目が自分の書いた文章でどこに当たるのか、明確にわかる必要があります。
    読み取って、汲み取ってではなく、わからせるぐらいのはっきり差が必要です。

    これを重点に置けば、どの文章が必要で、どの文章がいらないのかが明確になってきます。

    書き方の方針

    申請書を書く際にはまず、書きたい内容を箇条書きにした後、文章を分量をとりあえず考えず書きます。
    そして、論理性と具体性を意識し、内容を補充していきます。

    大体この段階で内容が大幅にオーバーするため、文章量を削っていく作業を行います。
    文章の言い換えや、言い回しを変えたりし、文字数ちょっとオーバーまで削りましょう。

    一旦その段階で誰かに申請書を見ていただきましょう。
    この段階が非常に重要です。
    早め早めに人に申請書を見てもらうという工程を踏むことによって、方針の大きなずれを防ぎ、自分なりの申請書の書き方を学ぶことができます。

    人に見せるのはハードルが高く、プライドが邪魔してくることが多いですが、ここは思い切ってプライドを捨て見せましょう。
    大体成績優秀な人ほど、申請書を一人で考えて人にみせるのが遅れる傾向があります。

    他の人からフィードバックをもらったら、それを元に改めて自分で読んでみて、何が改善すべき点だったのかを再認識し、書き直しましょう。

    人に見てもらうという段階が最も重要な段階です。
    誰しも最初から申請書が完璧に書ける人はいなく、またダメ出しは自己否定ではなく、その人のもっとやれるというアドバイスだと受け取りましょう。

    まとめ

    申請書は人に読んでもらうためのものです。
    決して審査員が読んでくれるだろう、読んでくれないなんておかしいという慢心は抱いてはいけません。

    人に読んでもらえないのであれば、読ませる文章を書きましょう。
    どれだけいい内容が書いてあっても、それが人に読んでもらい、伝わらなければ意味がありません。

    よく、申請書でもらえる金額をトータルし、それを行換算してみて、その一行にどれだけの価値があるのかを計算してみましょうとあります。

    これは、自分の書いた文章がそれだけの価値を持って人に伝えたいかどうかを判断する明確な基準になります。
    価値がそれだけないと思うのであれば、その文章は書き換える必要があるかもしれません。

    参考書

  • PWM出力を使ってパルス波の周波数, Duty比を変更する [Arduino UNO]

    PWM出力を使ってパルス波の周波数, Duty比を変更する [Arduino UNO]

    PWM出力とは

    PWMとはpulse width modulationの略で、パルス幅変調と日本語では言います。
    波長のデューティー比(Duty cycle)を変えることによって、変調を行う方法です。

    詳しくは前回の記事で説明されています。

    ArduinoのPWM出力

    Arduino UNOではATmega328と呼ばれるMicrochip社のマイコンをメインチップとして使っています。
    Arduinoのプログラムを考える上で、深みにハマっていくとマイコンのデータシートを見ていかなければならなくなりますので、一回見てみると面白いかと思います。(事実今がそう)

    Arduinoには三つのタイマー(Timer/Counter)があります。
    このタイマーはArduinoプログラムの時間に関係しています。
    delay()やtone()などの関数はこのタイマーを使って計測されています。

    Timer/CounterPin番号ビット数役割PWM周波数
    Timer05, 68 bitArduinoの時間を管理
    delay(), millis(), micros()など
    977 Hz
    Timer19, 1016 bitServoライブラリなど490 Hz
    TImer23, 118 bittone()など490 Hz

    今回このタイマーをいじることでPWMの出力を変えるということをします。
    ちなみに、応用するとタイマーの根本を変えるので、delay()などの関数もいい感じに変えたりすることができたりするかも?(どちらかというと影響を受けて狂ったりすることの方が多そう)

    TImer0は基本的にシステム全体に関わることが多いので、TImer1を使用することをお勧めします。

    参考になるサイト集
    https://playground.arduino.cc/Main/TimerPWMCheatsheet/
    https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM
    https://atooshi-note.com/arduino-1hz-pwm/
    http://blog.kts.jp.net/arduino-pwm-change-freq/
    http://garretlab.web.fc2.com/arduino/inside/hardware/arduino/avr/cores/arduino/wiring_analog.c/analogWrite.html

    プログラムの概要

     プログラムの全体の方針として、Arduinoのタイマーをレジスタの設定を変えることで自由にPWM出力の周波数を変更することができるようにします。

    目的としては、低い周波数を出力できるようにしたく、10 Hzを出力できるようなプログラムにします。

    今回は10番ピンにLEDを繋いで、その光の周波数、Duty比を自由に変更できるようにするプログラムを作成します。
    10番ピンなので、TImer1を使用します。

    プログラムコード

    //レジスタの設定を変えるためのもの
    #include <avr/io.h>
    int PWMPin = 10;
    
    //関数の定義
    //frq:周波数 (1Hz~指定できる)
    //duty:指定したいduty比
    void HzWrite(int frq, float duty) { 
    
        // モード指定
      TCCR1A = 0b00100001;
      TCCR1B = 0b00010100; //分周比256を用いる
    
      // TOP値指定
      OCR1A = (unsigned int)(31250 / frq);
    
      // Duty比指定
      OCR1B = (unsigned int)(31250 / frq * duty);
    }
    
    
    void setup() {
      pinMode(PWMPin, OUTPUT);
    }
    
    void loop() {
      HzWrite(10, 0.5);
      delay(5000);
      digitalWrite(PWMPin, LOW);
      delay(5000);
    
    }

    プログラムの説明

    まず、レジスタの設定を変えるために、<avr/io.h>をインクルードします。

    #include <avr/io.h>

    次に、delay()と一緒に使って、10 Hzの出力を5秒ごとに繰り返すという関数を作るため、HzWriteという関数を指定します。カッコ内には周波数、Duty比を指定できるようにします。

    void HzWrite(int frq, float duty) { 
    
    }

    次にモードの指定です、。
    今回使うレジスタはTCCR1A/TCCR1Bです。(TCCR: Timer/Counter Control Register)
    ここで1というのはTImer1を示しており、Timer2を使いたければTCCR2A/TCCR2Bを使います。

    PWM周波数を〇〇Hzとして設定するには、TOP値を自分で指定する必要があります。
    TOP値が大きければ大きいほど出力される周波数は低くなります。
    今回は10 Hzで例を取っているので、16MHzというシステムクロックと比べると非常に遅いので、大きなTOP値と分周を指定する必要がある。よって、なるべく大きいTimer1を使用します。


    Timer0, 2の8 bitではTOP値の最大値は255(2^8 – 1)であり、Timer1の16 bitでは65535(2^16 – 1)となる
    (最大値が-1となるのは、0~255もしくは0~65535となるため、数字の数が2^xになるが、最大値は-1しなければならない。)

    システム的には、TOP値までカウンタをインクリメント(0, 1, 2, と数えていく)し、OCRxA/OCRxB(xはカウンタ番号、カウンタについて2つの出力ピンA, Bが割り当てられている。)と一致した時にピンの出力を変化させる(LOW→HIGHのように)。そして、カウンタがTOP値まで到達すると今度は0までデクリメント(65535, 65534, 65533と上から数えていく)し、インクリメントの時と同様にOCRxA/OCRxBと一致した時にピンの出力を変化させます。

    Arduino UNOではこのカウンタのインクリメントするスピードは分周比の設定を変えることによって、ある程度変えることができます。(ある程度とは、1/8/64/256/1024 の中から選択できるということ)
    分周比は周波数を分周(周波数を1/n倍すること)するときの比(n)です。
    つまり、1000 Hzを分周比10で分周すると100 Hzになります。

    ちなみに、分周比1ではArduino UNO(ATmega328)のシステム動作クロックである16MHzで操作します。

    つまり、TOP値とOCRxA/OCRxBの値、分周比を変えることによって、自由に出力の変換点を変えることができます。

    今回は10Hzを指定したいので余裕を持って分周比256で行います。
    1カウントする時間は、Unoなら16MHzなので1 / 16MHz = 62.5ns(分周1)
    分周比を256にすると、TOPまでカウントした際には62.5ns x 256 x 65535 = 1.04856 secなので、1 Hzを指定できるようになる。

    今回このプログラムでは1 Hz ~ 31250 Hzまでの周波数を作り出すことができる。
    しかし、31250に近づくにつれてDuty比の指定ができなくなっていきます。
    Duty比を細かく設定したい際には300 Hz程度までしか作成することができません。

    このプログラムでは分周比の設定を変更することで、自分の使用用途にあった周波数帯を作れるようなプログラムを作ることができます。

    TCCRaA/TCCR1Bには何を指定するのかを書きます。
    ここら辺の細かいところはなんか難しいので、データシートを使って、なんとなく指定していきましょう。

    今回は2進数で示しているので、最初に0bがついています。TCCR1AではCOM1A1, COM1A0, COM1B, 無指定, 無指定, WGM11, WGM10 を 1 か 0 で設定します。
    TCCR1B には それぞれ、無指定(ICNC1), 無指定(ICES1), 無指定, WGM13, WGM12, CS12, CS11, CS10 を設定します。

    TCCR1Aの指定(ATmega328データシートより)
    TCCR1Bの指定(ATmega328データシートより)

    まず、今回はModeはPWMモードがPhase Correct and Frequency Correct であるMode9を指定する。
    今回TOP値OCR1Aに指定する。

    モードの指定(ATmega328データシートより)

    よって、WGM13 / WGM12 / WGM11 / WGM10 はそれぞれ、1,0,0,1 

    出力の指定(ATmega328データシートより)

    COM1B0 / COM1B0 は 0, 0 が 無出力、0, 1 が トグル動作 (一致時の出力を反転)、
    1, 0 は カウンタ がOCR1A/B – TOP間 にある場合 LOW、0 – OCR1A/B間 は HIGH となるよう出力、
    1, 1 は1, 0 の逆です。

    今回は周波数をOUTPUTのLEDをLOWとHIGHで変えるため、1B0 / COM1B0 は1, 0の値を指定します。

    スケッチを書く際にわかりやすいので 1, 0 を選択します。

    分周比の指定(ATmega328データシートより)

    今回分周比は256を指定するため、CS12/CS11/CS10は1, 0, 0を指定する。

    まとめると、以下のようになる。

    TCCR1A = 0b00100001;
    TCCR1B = 0b00010010;

    次にOCR1AとOCR1Bを設定し、周波数とDuty比を指定したもので出力してもらうように指定します。

      // TOP値指定
      OCR1A = (unsigned int)(31250 / frq);
    
      // Duty比指定
      OCR1B = (unsigned int)(31250 / frq * duty);

    今回Phase and Frequency Correct PWMを用いる際には、インクリメントしディクリメントすることから、出力される周波数は以下のように示すことができます。

    周波数frq = IC の動作周波数 / (分周比 * TOP値 * 2)

    逆にTOP値を指定するときは

    TOP値 = IC の動作周波数 / (分周比 x frq x 2)

    今回Arduino UNOで分周比256とした際には

    TOP値 = OCR1A = 16,000,000 / (256 x frq x 2) = 31250 / frq

    LOWとHIGHが入れ替わるタイミングはOCR1A/OCR1B = Duty比としたいため、

    OCR1B = 31250 / frq x duty

    オーバーフローを防ぐため、Unsigned intを指定している。

    出力のメインはこちら

    void setup() {
      pinMode(PWMPin, OUTPUT);
    }
    
    void loop() {
      HzWrite(10, 0.5);
      delay(5000);
      digitalWrite(PWMPin, LOW);
      delay(5000);
    
    }

    PWMPinつまり10ピンをOUTPUTで指定し、HzWrite()で周波数とDuty比を指定する。
    delay()でまった後に、digitalWrite(PWMPin, LOW)で出力をなくし、delay()する。

    以上がプログラムの全貌と解説です。

    後書き

    PWM出力の周波数を変更する方法のブログに関して、Arduinoで検索するよりも、AVRとか、ATmega328, 328Pなどのように検索した方が多く出てきました。

    今回はざっくりとしたブログでしたが、より深く知りたい人は調べてみてください。

  • Arduionoで連続パルス波を作成する方法

    Arduionoで連続パルス波を作成する方法

    はじめに

    Arduinoを使って、連続パルス波を出力したりしたくなる時があると思います。
    LEDを点滅させたり、音を出力したり、タイマーとして使ってみたり・・・

    何かと使うことが多く、そして簡単なようにも思えますが、調べていくと非常に奥深いことがわかります。

    今回は、Arduinoで連続パルス波を出力する方法をいくつか紹介していきます。

    Delayを使って時間を変える

    最もシンプルかつ、簡単な方法で、delay関数を使って出力のONとOFFを切り替える手法です。

    //pinはピン番号
    void loop(){
        digitalWrite(pin, HIGH);
        delay(1000);
        digitalWrite(pin, LOW);
        delay(1000);
    }

    上記のプログラムでは、出力がHIGHとLOWとで切り替えています。
    delayは単位はmsなので、delay(1000)では1秒間待つというプログラムになります。

    つまり、1Hzでついたり消えたりするプログラムになります。

    ただ、周波数の指定にdelay()関数を使うことは問題点が多いです。
    また、この方法では、60Hzの信号を5秒間出力といったように、出力の時間を変更するのが、for構文を使って指定する必要があり、そういった面で不便さがあります。

    ただ、シンプルが故、とりあえずやってみたいという時にはおすすめです。

    tone()を使って指定する

    tone()関数はブザー音などを作成するときによく使われる関数です。
    Arduino公式の解説

    この関数では、周波数、継続時間を指定することができます。
    なので、delayを使った時とは違い、周波数を計算せずとも直接指定することができます。

    //pinはピン番号
    void loop() {
         tone(pin,60);
    }

    tone(pin, frequency)や、tone(pin, frequency, duration) といったように指定することができます。

    durationはms単位で指定するため、delayと同様の記載方です。

    この関数の問題は、指定できる周波数が31Hz以下ではできないという点です。
    つまり、1Hzなどの出力を作ることができません。

    音などの31Hzより大きい周波数を指定する時には非常に簡単に周波数を指定できますし、delay関数を使う時よりも非常に短く、正く指定することができます。

    PWM出力を使って、PWM出力の周波数を変える

    PWM出力を使う方法は最も自由度が高く、そして奥深すぎる原因です。

    PWMとはpulse width modulationの略であり、日本語ではパルス幅変調です。
    詳しくはwikipediaより

    この言葉だけ聞いてもなんのことかよくわかりませんが、簡単にいうと、PWMとはデューティー(Duty)比を変更して色々変調する方法です。
    Arduino公式の説明はこちらから

    LEDの明るさを指定するときに、本来であれば電流値を変えることで明るくしたり、暗くしたりできます。
    しかし、電流値が一定だった時に、でもLEDの明るさを変えたいとなった際に、めっちゃ早い周波数で(人が点滅しているのがわからなくなるのが30~60Hzと呼ばれている)点滅させます。

    そして、ONとOFFが通常であれば1:1(Duty比が50%)となっていますが、これを4:1(Duty比が80%)とか1:4(Duty比が20%)とかにしてみるとどうでしょうか。
    前者では明るく見え、後者では暗く見えるでしょう。

    このようにして、パルスの幅を変えることで出力を変調するというのがPWMによる出力です。

    そして、Arduinoではこの出力ができるとともに、PWM出力の周波数を変えることもできます。
    レジスタ設定と呼ばれる、まあArduinoの元の部分を変えちゃえばPWMの出力周波数を変えることができるっしょっていう考えがこの方法です。
    ちなみにデフォルトでは出力周波数は490Hz、一部のピンでは980Hzです。

    今後の記事でやり方を詳しく説明します。
    「PWM Arduino 周波数 変更」で調べるとたくさん説明が出てきます。

    4回ぐらい読むとなんとなくわかるようになると思います。

    基本的にはこれらの方法で自分の目的にあったプログラムを探してみてはどうでしょうか。