Raspberry Piで使うべきプログラミング言語は何ですか?

ラズベリーパイ言語

Raspberry Piを初めて使う方は、学習するプログラミング言語の選択に岐路に立たされるかもしれません。

世の中には非常に多くの言語があり、何を学ぶかによってできることが大きく変わってきます。そこで、Raspberry Piで使える言語を見てみましょう。

Raspberry Piにプリインストールされている言語

Raspberry Piから得られる最大のヒントは、Raspberry Pi OSにあらかじめ搭載されている言語かもしれません。

すべてのインストールにおいて、Python、Scratch、C/C++がプリインストールされています。

では、まずこの3つの言語について見てみましょう。

Python: Raspberry Piのための優れた汎用言語

pi dht22
Thonnyで書かれたPythonのコード

長所

  • 習得しやすい
  • コンポーネント用のライブラリが多数
  • 多くの素晴らしいチュートリアルがあります。
  • マイコン「Raspberry Pi」、「Pico」シリーズで使用可能

短所

  • Webサイト開発(特にフロントエンド)には不向き
  • C/C++より遅い

ゼロから始めるのであれば、Pythonが最も手っ取り早く、効率的な方法でしょう。

ひとつは、Pythonは簡単に手に入る言語のひとつであること。

もう一つの理由は、様々なセンサーやコンポーネントのためにPythonで書かれたライブラリが多く存在することです。 その結果、チュートリアルやプロジェクト用のスクリプトのかなりの部分がPythonで書かれることになります。

もし、他の言語、例えばJavaScript(NodeJS経由)を使うとしたら、一般的なセンサー用のライブラリがなくて困ってしまうかもしれません。

最後に、Pythonを学ぶことで、Raspberry Piのラインナップのすべてのボードと対話することができます。Raspberry Pi 4だけでなく、Raspberry Pi Pico用のプロジェクトも作成することができます。

Raspberry Piのメーカーは、Pythonでプロジェクトを構築することも容易にしています。例えば、すべてのRaspberry Piマイコン(Pi 4など)にはPython IDEであるThonnyが付属しており、すべてのRaspberry Pi PicosはデフォルトでMicroPythonを読み込むことができます。

ThonnyはRaspberry PiでPythonを簡単に使えるようにします。

Raspberry Pi OSにはThonnyもプリロードされており、Pythonスクリプトの実行がとても簡単にできるようになっています。

Thonnyは、IDEの「RUN」「STOP」ボタンを押すことで簡単にスクリプトを開始・停止できるので、Pythonでのプログラミングが容易になります。

一方、他のエディタを使用する場合は、スクリプトを実行するために、おそらくターミナルに入力する必要があります。

Raspberry Pi PicoのためのMicroPython

特にRaspberry Pi Picoを使いたい場合は、Pythonを習得しておくと便利です。

マイクロコンピュータRaspberry Piとは異なり、Raspberry Pi Picoはデフォルトで2つの言語しか使えません。C/C++とMicroPythonです。

つまり、Pythonを習得していれば、構文が同じなので、MicroPythonの記述に移行することができるのです。

PythonとMicroPythonの主な違いは、後者の方が標準ライブラリが小さいことです。

CircuitPython

MicroPythonの他に、CircuitPythonもRaspberry Pi Picoで使用されているPythonの派生版です。CircuitPythonはAdafruit社によって作成されています。

PythonはRaspberry Piユーザーにとって良い言語なのでしょうか?

はい。もちろんです。

Raspberry Pi用のプロジェクトを作るなら、Pythonの知識は絶対に必要です。

私はプログラミングの旅をJavaScriptから始めました。Raspberry Piの領域以外では、JavaScriptはプログラムやウェブサイトを作ることができるので、とても効率的な言語です。

4桁の7セグメント表示

ところがある日、7セグメントディスプレイのプログラムを作らなければならなくなり、JavaScriptではどうにもならなくなりました。

ネットでスクリプトを見つけたのですが、Pythonで書かれていて、それがきっかけでPythonを学ぶ道に進みました。

Raspberry Piプロジェクトを最も効率的に、素早く、簡単に作りたいなら、Pythonの学習がおすすめです。

Raspberry PiプログラミングのためのPythonを学べる場所

ラーニングパス - これらのリソースは、Pythonの特定の部分を学習することができるリンクをまとめています。これらは一般的な学習経路であり、Raspberry Piに特化したものではありません。

リアニー

ロードマップ

ハーバード・オープンコース・ウェア CS50の「Pythonによるプログラミング入門

YouTube ビデオ

Corey SchaferのPython初心者向けチュートリアルプレイリスト

Raspberry Piに特化したコース - 初心者のためのコースです。

ラズベリー・パイ・ファウンデーション - このコースでは、Pythonでのプログラミングの一般的な概要を学び、ゲームプログラミングやセンサーやコンポーネントとのインタラクションに踏み込んでいきます。

リアルPython, Raspberry PiでPythonを使った物理プロジェクトを作る - これは、センサーとコンポーネントのキットを持っていて、GPIOと相互作用するコードに飛び込みたい人のための素晴らしいガイドです。一般的なPythonチュートリアルとは異なり、簡単なセンサーの配線方法とRaspberry Pi 4でセンサーと対話する方法を教えてくれるでしょう。

Scratch for Raspberry Pi

友人の一人がRaspberry Pi 4で作ったLED信号機を見せてくれました。

彼はJavaやJavaScriptでのプログラミングに精通したシニアデベロッパーなので、何かのプログラミング言語で書いているのだろうと期待していたのです。

でも、ダメなんです...。

Scratchを使っていた。

何?

なぜ、ソフトウェアの先輩がScratchを使ったのか?

Scratchは、"世界最大の子供向けコーディングコミュニティであり、若者がデジタルストーリー、ゲーム、アニメーションを作成できるシンプルなビジュアルインターフェースを持つコーディング言語 "と説明されています。

私の友人は、間違いなく子供ではありませんでした。

その理由を尋ねると、彼はGitのコミットメッセージと同じくらい有用な答え、「well its simple to program」をくれました。

ラズベリーパイストアでラズベリーパイをスクラッチ

ちなみに、英国ケンブリッジにあるRaspberry Pi Storeを訪れた際も、Scratchが動作するPiが置いてありました。

だから、きっと何かいいことがあるに違いない!

ScratchはRaspberry Piユーザーにとって良いプログラミング言語なのでしょうか?

プログラミングの表面を掻くには良いのでしょうけど。

Scratchの大前提は、子供たちや十代の若者たちが簡単にプログラミングができるようにすることです。Scratchでは、抽象的なコードを書くのではなく、ブロックを組み合わせることでプログラムを作成することができます。

ScratchでLEDを点滅させるためには、これらのブロックを組み立てることになります。

LEDを点滅させるスクラッチシークエンス。写真はAaron MaurerのYouTubeより。

さて、これをLEDを点滅させるPythonスクリプトと比較してみましょう。

import RPi.GPIO as GPIO 
from time import sleep 

GPIO.setmode(GPIO.BOARD)
GPIO.setup(8, GPIO.OUT, initial=GPIO.LOW) 

while True: 
 GPIO.output(8, GPIO.HIGH) 
 sleep(1) 
 GPIO.output(8, GPIO.LOW)
 sleep(1) 

おそらく、コマンドラインではなくGUIを使うことを好む人がいるのと同じ理由でしょう。変数の値を変更するのに、バックスペースや矢印キーなどのキーを何度も押す代わりに、クリックやピックだけで済んでしまうのです。

シンプルなプロジェクト、学習、教育には、Scratchが最適です。

Scratch for Raspberry Piのデメリット

前項のダジャレを聞き逃した方は、ここでもう一度。スクラッチは表面を傷つけるだけです。

必然的に、プロジェクトが大きくなれば、PythonやC/C++といった主流の言語を使いたくなるでしょう。なぜなら、オンラインで利用できる豊富なコード、ライブラリ、スクリプトにアクセスできるからです。

Scratchを学ぶ

Scratchの仕組みに興味がある方は、その「積み木」方式がどのようなものかをすぐに感じ取ることができます を、そのオンライン環境上で実現しました。

C/C++ for Raspberry Pi

究極のコントロールが可能なプログラミング言語は、習得が最も難しい言語の一つでもあります。

ただし、万が一、作成する場合は Raspberry Pi PicoでDoomをプレイするような衝撃的なプロジェクト。 となると、C/C++の知識が必要になります。

C/C++は一般的に、Raspberry Piで最も広く使われている2つの言語のうちの1つで、もう1つはPythonです。そのため、このセクションの大部分は、この2つの利点と欠点について話すことになります。

まずは、両者の比較から始めましょう。

C/C++MicroPython
スピードより速く低速
ラーニングカーブよりハードにより簡単に
メモリ管理マニュアル自動(ガベージコレクション)
コンパイル?インタープリタ?編集通訳付き
地域ごとの利用状況特に微細な制御が必要な高度なプロジェクトで使用されるなど、幅広い用途で使用されています。初心者から上級者まで幅広く利用されています。
コンポーネント用ライブラリ一般的に利用可能一般的に利用可能

初心者はC/C++を学ぶべき?

試行錯誤は止められない。

死なないからこそ、強くなれるのだから。

C/C++だけでなく、Pythonでもほとんどのプロジェクトが実現可能です。また、この2つの言語のライブラリが広く普及しており、ライブラリがないことがボトルネックになることはまずないでしょう。

あなたはどれくらい粘り強いですか?

C/C++は、Pythonでは考えないようなことを考えなければならない局面がたくさんあるので、初心者のプログラマーにとっては少し楽しくないかもしれませんね。

例えば、C/C++の場合、メモリの管理が必要になります。また、変数にどんなデータ型を代入するかを考える必要があります。型を選ぶことの長所と短所の意味合いを意識していないと、面倒なことになります。

例えば、C/C++で整数を代入する場合、必要かどうか判断する必要があります。

  • イント
  • 焦がす
  • ふごうなしじゅんびしょう
  • 符号付き文字
  • 符号なし整数
  • 素っ気ない
  • 符号なしショート
  • 無記号長

これらの選択は、プログラムの速度とメモリ使用量に影響を及ぼします。

また、Pythonの方が効率は悪いですが、整数を宣言するために必要なのはこれだけです。

integer = 999999999999999

でも、ノーペイン・ノーゲインでしょ?

C/C++の動作に慣れれば、その恩恵を受けられるようになります。Raspberry Piは現在の基準ではそれほど強力なコンピュータではないので、効率的なコードを書けるようになれば、その限られたハードウェアから最高のパフォーマンスを引き出すことができるようになるのです。

C/C++のセットアップに時間がかかる

Raspberry Pi Picoボードが登場したとき、PythonとC/C++のためのPicoのセットアップについて書かなければならなかった。

Pythonは超簡単でした。Thonnyをダウンロード。Picoをプラグイン。MicroPythonをフラッシュする。完了。

C/C++はもっと大変で面倒だった。それは明らかです -。 Raspberry Pi、C/C++のセットアップの話題だけをまとめたPDFを公開.設定するためには、コマンドラインとのやりとりが必要だったということにしておきましょう。

You'll always C the light

C/C++は約40年前の製品で、現在も使われています。

それはどういったことなのでしょうか?

ソフトウェアを作ったり、ハードウェアを操作したりするのに使える、最もダイナミックな言語の一つです。

ですから、もしあなたが非常に便利で強力な言語を学びたいと思っているのなら、C/C++は最初に学ぶべき言語として最適かもしれません。

Psst... C/C++は他のボードでも使用可能です。

Raspberry Piの在庫が大問題になっている2022年に、これを書いているのです。

人々が最も求めていることの1つは、「どんな代替ボードがあるのか?存在しないRaspberry Piでプロジェクトを組むことはできない" です。

代替基板はたくさんありますし は、こちらからご覧いただけます。

C/C++を習得していれば、ArduinoやESP32、ESP8266のようなC/C++で書かれたボードをすぐに使うことができます。

Raspberry Piでマイコンを使ってプロジェクトを作るのが目的なら、C/C++の方が使いやすいかもしれません。

Raspberry PiのためのC/C++の学習

MagPiは、初心者向けの雑誌を無料で発行しています。

MagPiでは、C言語を学べる場所のリストも公開しています(Raspberry Piに特化したものではありません)。

Raspberry PiがRaspberry Pi PicoでC/C++を使う方法を紹介したPDFを公開

竜はここにあり

上記の項では、習得を検討すべきプログラミング言語についてお話しました。

次のセクションでは、Raspberry Piで使用できる可能性のある言語について説明しますが、Python、C/C++、Scratchを使用する場合ほど、使用例やコミュニティは大きくありません。

JavaScript(NodeJSを含む)

Raspberry PiのDHT22温度・湿度センサーのデータを記録する(そして、データを表示するWebページを提供する)JavaScriptプログラム

JavaScriptは、アプリやWebサイト(HTMLやCSSを使ったもの)、バックエンドを作ることができるため、趣味のプログラマーにとって最も便利な言語の1つです。

JavaScriptの分野での大きな進歩のひとつに、NodeJSというものがあります。これまでのJavaScriptはブラウザベースが主流でしたが、NodeJSを使えば、バックエンドを動かし、Raspberry Piなどのコンピュータにアプリを作ることができます。

特にRaspberry Piに対しては、Raspberry PiのGPIOピンを操作するためのライブラリが存在します。そのため、簡単なプロジェクトを組むのであれば、JavaScriptのプログラムを実行しても問題はないでしょう。

しかし、あなたのプロジェクトの最大のボトルネックは、Raspberry PiとJavaScriptが交差するコミュニティがないことです。

これは、誰かのGithubを訪れると明らかになるのですが、必然的に彼らのプロジェクトはPythonかC/C++で書かれているのです。Raspberry PiでJavaScriptを使っているプログラマはほとんどいません。

では、JavaScriptは評価減になるのか?

いや、そうでもないんです。

今でも使い道はある。

JavaScriptを学ぶだけで目的を達成できるユースケースとして、Raspberry PiをWebサーバーとして使いたい場合があります。バックエンドをExpressJS(バックエンドフレームワーク)、フロントエンドをReact/Angular/Vue(フロントエンドフレームワーク)で書き、PM2(プロセスマネージャ)を使ってバックエンドとフロントエンドを配信するとします。このシナリオでは、完全にJavaScriptで行うことができます。

Raspberry Pi Pico WはJavaScriptが必要です。

少し前のReactミートアップで、ある人が私をバニラJavaScriptを書いているとからかった。彼は「今は何年だ」とからかった。2000年代か?" とからかわれました。

Raspberry Pi Pico Wをお持ちの方は、いずれ書き方を知る必要があります。 バニラJavaScript.

今、笑っているのは誰だ?

Web開発の世界ではReactやAngular、Vueなどのフロントエンドフレームワークを使う方向に進んでいますが、Raspberry Pi PicoでWebサイトを提供するには、一般的にバニラJavaScriptの書き方を知っている必要があります。私たちのチュートリアルを見てみると ピコWメガ記事、ご覧の通りです。

右上のスライダーは、JavaScriptでサーボを制御している

Pico W の最大の利点の 1 つは、Web ページを提供できることです。Web ページはおそらく何かを制御するために使用します。例えば、サーボを制御するスライダを表示した Web ページを Pico W で表示させることができます。スライダーの値を Pico W に伝えるには、JavaScript の知識が必要になります。

JavaScriptを学ぶ

私がJavaScriptを学ぶ上で最高のリソースであることを証明した、たった一つのウェブページを推薦することができます。

https://javascript.info/

この教材は、バニラJavaScriptのあらゆる側面と、ブラウザのイベントを教えてくれるので、Pico Wのユーザにとって非常に良い教材です。Pico Wを効果的に制御し、提供するWebページのUXを向上させるためには、後者の知識が必要になります。

HTML + CSS

HTMLやCSSはプログラミング言語とは言えませんが、JavaScriptの部分と密接に関係しています。

  • ウェブベースで何かをする予定がある方
  • Pico Wを使用してWebページを提供する予定です。

CSSを学ぶ

この1つのサイトにとても助けられています。 インターネットは難しい

少し古いです。例えば、CSS Gridやアスペクト比はカバーされていません。

しかし、Interneting is Hardには効果的な教え方があり、Pico WのWebページを構築するのに十分な量を教えることができます。

足りない知識はGoogleで補えばいい。 W3Schools または Mozilla Developer Network。

こんな方におすすめ

結果を早く出す:PythonまたはScratch

子供たちにプログラミングを教える。 スクラッチ

ハードウェアを究極にコントロールする。 C/C++

ハードウェアプロジェクトの構築:PythonまたはC/C++、それ以外には手を出さない

WebサーバーのホスティングとWebサイトの構築:HTML、CSS、JavaScript

Pico WでIoTプロジェクトを構築する。 Python、HTML、CSS、JavaScript

神のような存在になる(桁外れの時間投資で):C/C++

コメントを残す