ch32x035でmrubyc-arduinoを動かす

ch32v203をmrubyc-arduinoから動かすことが出来たので、ch32x035でも出来るだろうと思って、やってみた。 しかし、両者には二つの大きな違いがあることが判明した。 一つは、flashの容量がch32v203が64kなのに対して、ch32x035は少し小さくて62kであることである。 2kぐらいは、工夫すればなんとかなるだろうと予想した。 もう一つの大きな違いが、ch32v203にあった隠しflashがch32x035には無いということである。 mrbのコードを隠しflashに置くことによって、flashが節約できる上に、後からそこだけを書き換えるという使い方が出来たのだが、ch32x035では同じことが出来無い。 これらを以下のように対応して、ch32x035でも、Arduinoを使ってmruby/cから制御できるようになった。 まず、ch32v203と同様に、vm_config.hの設定は、以下のようにした。 #define MAX_VM_COUNT 1 #define MRBC_USE_FLOAT 0 #define MRBC_REQUIRE_32BIT_ALIGNMENT 最適化はsmallest+LTOとしてコンパイルすると、digital,adc,pwmを組込んだ状態で、ギリギリflashには収まるようになったが、mrb用の領域や今後の拡張も考えると、もう少し工夫したい。 そこで、昨日のブログに書いたように、同時に一つのmrbしか動かさないことにして、rrt0をいじってみた。 rrt0.hは、MRBC_TASK_NAME_LENとmrbc_tcbとmrbc_initの部分だけを残した。 rrt0.cは、c_sleepやc_sleep_msからはarduinoのdelayを呼び出すようにして、mrbc_initは以下のように最低限のコマンドだけにした。 void mrbc_init(void *heap_ptr, unsigned int size) { hal_init(); mrbc_init_alloc(heap_ptr, size); mrbc_init_global(); mrbc_init_class(); mrbc_define_method(0, 0, "sleep", c_sleep); mrbc_define_method(0, 0, "sleep_ms", c_sleep_ms); } そして、_autogen_class_rrt0.hは削除した。 mrbのコードを走らせるコマンドは、以下のコマンドの替わりに、mrbc_run_mrblibを用いた。 mrbc_create_task( MRB_CODE_ADRS, 0 ); mrbc_run(); これで、一つのタスクしか動かせなくなったが、3kほど容量に余裕ができた。 mrbのコードは、余っているflashに置くことになるのだが、Arduinoには組み込まないようにしたい。 また、ch32x035ではUSBからのプログラムの書き込みが出来るので、それを使いたい。 これらの要請を、どのようにしたら実現できるかを考えていたが、以下のようにすれば可能となることに気が付いた。 まず、mrbのコードはスケッチには組み込まずに、例えば以下のように指定して、コンパイルしたバイナリを出力する。 mrbc_run_mrblib( 0x8000000+57976 ); そして、そのbinファイルのバイトサイズを先の+以降に指定して、もう一度コンパイルする。 binのサイズが変っていないことを確認する。 もしbinのサイズが変ったら、変らなくなるまでこれを繰り返す。 この直後にmrbのコードを置けば、それが実行される仕組みである。 そのために、実行したいrubyスクリプトを用意して、mrbcで処理してできたmrbをbinファイルと結合する。 mrbc test.rb cat ch32.ino.CH32X035G8U.bin test.mrb >test.bin これをflashに書き込めば良いのである。 USBの書き込みは、wchispを用いたが、最初はverifyに失敗して苦労したが、何度も書き込んだらうまく行った。 ch32x035ボードを使ったのだが、書き込みモードにするためにBOOTボタンを押しながらUSBに接続して、すぐに以下のコマンドを実行する。
Read more...

ch32v203でmrubyc-arduinoを動かす

ch32v203は64kのflashを持つので、多少の工夫をすれば、mrubyc-arduinoを使えそうだと思い、試してみた。 なかなか動かなくて苦労したが、最終的には隠しflashにmrbcのコードを書き込むことによって、便利に使えることが分かった。 mrubyc-arduinoにdigital,adc,pwmを組込むと、flashには収まりきらないが、以前のブログに書いたようにfloatをoffにすると、ぎりぎり入るようになる。 このとき、最適化はsmallest+LTOが良い。 これでch32v203に書き込んだら、うまく動いてくれないかなと思ったが、動かない。 シリアルにも繋げていない状態だったので、ピンの電圧でしか状態をモニタできなかったので、原因を見付けるのに苦労した。 mrbc_init中で呼ばれているmrbc_init_classで止まっているところまで分かって、 さらに mrbc_run_mrblib、mrbc_load_mrb、mrbc_load_irep、load_irep、load_irep_1と辿って、念の為にbin_to_uint16を見ていたら、ようやく原因が明らかになった。 ch32v20xは、32bit-alignmentになっているようで、 vm_config.hでコメントアウトを外して、以下のように定義しておかないといけないことが判明した。 #define MRBC_REQUIRE_32BIT_ALIGNMENT ESP8266でもなかなか動かせなくて困っていたが、同じ原因のようだ。 ようやく動くようになったので、いろいろと試していたが、ch32v203には、64kのflashの後に、アクセスの遅い160kのflashがあり、mrbのコードはここに配置すると良いということに気が付いた。 そこで、拡張flashに置いたmrbのコードを走らせるArduinoのスケッチを以下のように書いてみた。 #include <mrubyc.h> #define MEMORY_SIZE (1024*10) static uint8_t memory_pool[MEMORY_SIZE]; int hal_write(int fd, const void *buf, int nbytes) { return (nbytes); } int hal_flush(int fd) { return 0; } void setup() { mrbc_init(memory_pool, MEMORY_SIZE); mrbc_init_class_digital(); mrbc_init_class_adc(); mrbc_init_class_pwm(); mrbc_create_task( 0x8010000, 0 ); mrbc_run(); } void loop() {} ch32v203とWCH-LinkEと接続して、バイナリとして出力したbinを以下のコマンドで書き込む。 ./minichlink -w sketch.bin flash -b mrbのコードは、以下ように作成して、拡張flashに書き込む。 mrbc test.rb mv test.
Read more...

mrubyc_arduinoでのflashの節約

mrubyc_arduinoを小さなflashやメモリのマイコンで動かすために、どのようにすれば良いかを考えている。 GPIO, ADC, PWMを組み込んだ状態で、例えばボードとしてArduino Nano Everyを指定してコンパイルすると、flashが35kほどオーバーする。 この条件のもとで、 最低限のrubyの機能を残した上で、必要なflashのサイズを減らそうと試みてみた。

2026/4/15の記事で書いたように、適切な修正をして、vm_config.hで以下のようにFloatを無効にすると、 5.5kほど削減できる。

MRBC_USE_FLOAT 0

また、debug機能が有効になっているようなので、vm_config.hで以下のようにすると、さらに2kほど減少する。

//#define MRBC_DEBUG

NDEBUGを定義しても同じ効果が現れるのかと思ったが、この定数は特殊な意味を持つようで、逆に大きくなってしまった。

methodを使えるようにするために、プログラムが大きくなるので、最低限のmethodだけを残して、残りのmethodを消せば、さらに小さくできるはずである。 そのためには、_autogen_class_*.hの中のmethod_symbols_*とmethod_functions_*の一部をコメントアウトすると、対応するmethodだけを無効にできる。 array,hash,range,string,rrt0について、多くのmethodを無効にしたら、さらに15kほど減少した。

あと12kぐらい減らせば、Arduino Nano Everyのflashに収まる。 上記に加えてできそうな工夫としては、 objectの不要なmethodの削除や、 taskは一つしか走らせない前提でのrrt0.cの関数の簡略化などが試せるだろう。 flashが少し大きいch32v203などでは、上記の工夫でなんとかflashに入るかも知れないので、いつか試してみたい。

ソースを眺めていて感じたのだが、rubyでは同じ機能のmethodに複数の名前があるのだが、これはマイコンにとっては無駄になっている。 例えば、Arrayの要素数を求めるmethodには、count, size, lengthの三つが定義されている。 mrbcでコンパイルする際にこれらをsizeに統一してしまって、マイコンにはsizeのみを定義するようにすれば、多少ではあるが、無駄が減るように思う。 また、"%d,%d\n"%[a,b]という表現も、mrbcでprintf("%d,%d\n",a,b)に変換するようにすれば、マイコンへの負荷を変えずに、rubyの表現が広がる気がするけど、難しいかな。

2026/4/19追記 使わないであろうmethodを削って、flashの使用量を減らそうとしていたが、おそらくこれはうまくいかないことが判明した。 mrblib.cでmrubyのコードが定義されており、この中で使っているmethodを消してしまうと、エラーが生じる。 例えば、empty?なんかは使わないと思っていたが、消したら駄目のようだ。 または、mrblib.cも同時にいじる必要がある。

Read more...

mrubyc_arduinoでPWM

mrubyc_arduinoにGPIOとADCを組込むことに成功したので、次はPWMだろうということでやってみたが、思ったよりも苦労した。 mruby/cのPWMでは、ONの割合と周波数を変えられるようになっている。 しかし、ArduinoのanalogWriteでは割合のみで、toneでは周波数のみしか変えられ無い。 仕方が無いので、これらを独立に変えるのは諦めて、割合のみか周波数のみを、それぞれanalogWriteとtoneで指定することにした。 次に問題だったのが、toneは本来は音をならすためのもので、音の継続時間を無しでも指定しても動くようにするために、C++でtone関数がオーバーロードされている。 そのため、C言語から呼び出すのが難しく、cppとした。 まず、pwm.hは、externをどこに入れるべきか試行錯誤したが、次のようにした。 #ifndef _PWM_H #define _PWM_H #include <Arduino.h> #ifdef __cplusplus extern "C" { #endif #include "mrubyc.h" typedef struct PWM_HANDLE { uint8_t pin_num; uint16_t period; uint8_t duty; } PWM_HANDLE; void mrbc_init_class_pwm(void); #ifdef __cplusplus } #endif #endif 問題のpwm.cppだが、これらの関数はc言語から呼ばれるので、全体をexternで囲って、次のようにした。 #include "pwm.h" extern "C" { void c_pwm_new(mrb_vm *vm, mrb_value *v, int argc){ v[0] = mrbc_instance_new(vm, v[0].cls, sizeof(PWM_HANDLE)); PWM_HANDLE *handle = (PWM_HANDLE *)v[0].instance->data; handle->pin_num = GET_INT_ARG(1); MRBC_KW_ARG(frequency, freq, duty); if( MRBC_ISNUMERIC(duty) ) analogWrite( handle->pin_num, MRBC_TO_INT(duty)*255/100.
Read more...

mruby/cのFloatについての小さなバグ

Arduinoを利用してESP32でmruby/cからGPIOとADCを使うことができるようにはなった。 私がよく使うマイコンは、ESP32よりもflashやメモリの小さなものなので、そのようなマイコンでmruby/cを動かせないかと思っている。 Arduino ZeroやXiao SAMD21に使われているATSAMD21G18Aとか、 WCHマイコンの中では高性能なch32v305などが、次のターゲットであろう。 これらは、今のやり方で動きそうに思うが、残念ながらこれらは手元には無いので、確かめられない。 さらにその次には、 ch32v203とか、 Arduino Nano Everyで使われているatmega4809などかな。 これらは、メモリも少ないが、flashも足りていない。 そこで、Arduino Nano Everyを例にして、mrubyc_arduinoのflashの削減ができないかを検討していたら、mruby/cの小さなバグを見付けたので、そのことについて書くことにする。

Arduino Nano Everyのflashは、48kである。 ADCを使った簡単なプログラムをmrubyc_arduinoでコンパイルすると、82k程となる。 flashの使用量をかなり減らさないといけない。 vm_config.hを見ると、以下のような指定がされている。

MRBC_USE_FLOAT 1
MRBC_USE_MATH 0
MRBC_USE_STRING 1

機能を制限して、flashやメモリの使用量を減らすオプションのようだ。 Floatをoffにするために、0にしてみたが、コンパイルでエラーが出てしまう。 試行錯誤の末、以下のような修正をすると、これを0にしても動くようにできた。 boxing_no.h, value.cの中には、".d"や"->d"などが使われているが、これらはfloatを使わない場合には使えなくなっているので、それらの使われている場所を以下で囲って無効にする。

#if MRBC_USE_FLOAT
#endif

そして、_autogen_builtin_class.hの中の以下の行も、同様に囲む。

extern struct RBuiltinClass mrbc_class_Float;

最後に、class.cの中のclassの定義を以下のようにする。

#if MRBC_USE_FLOAT
  MRBC_CLASS(Float),            // MRBC_TT_FLOAT     = 5,
#else
  0,
#endif

これで、floatをoffにしてもコンパイルが通るようになる。 Arduino Nano Everyの場合には、flashの使用量が5.5kぐらい減った。 同じくらい効果のある削減を、あと5個ぐらい組合せれば、動くようになるかも知れない。 mruby/cでFloatをoffにすることはあまり無いのかも知れないが、0にしたときにエラーが出るのは、一応のバグと言えるのでは無いだろうか。 Stringをoffにしようとしても、エラーが出るが、こちらはややこしそうなので、あまり手を付けていない。

さらにflashを減らす試みとして、あまり使わないclassを取り除けないかも試してみた。 具体的には、Range,Proc,Hash,Arrayなどがあまり使わないclassかなと思う。 十分には検証していないが、rangeではflashは1.5kしか小さくならなかった。 Proc,Hash,Arrayは、取り除いてみたが、vmのcoreの部分で使っている感じなので、うまく動かない可能性が高いと思う。 たとえ、これらを全て取り除いても、10kぐらいしか減らないことが分った。 今後、Rangeは殆ど消して、Proc,Hash,Arrayでは不要なmethodを取り除いたときに、どうなるかを確かめてみたいと思う。 また、rrt0.cの中には、複数のタスクを動かすためのプログラムが書かれているが、一つのタスクが動けば良いと考えれば、工夫するとflashの節約が出来る可能性もあるのでは無いだろうか。

2026/4/16追記 value.hにもマクロで".d"を使っている部分があったので、これも修正した。

Read more...

mrubyc_arduinoでGPIOとADC

先日、 mruby/cとArduinoを組み合せることによって、rubyからESP32マイコンを制御することに成功した。 その際には、 mrubyc_arduino を利用した。 そのままでは動かなかったので、若干の修正をしなければならず、 mruby mruby/c共通I/O APIガイドライン に完全には準拠しておらず、 少し無駄な部分もあったので、 STM32マイコンへの実装を参考にして、 GPIOとADCについて新たに書いてみた。 GPIO用のdigital.hは、定数などを含めて、以下のようにした。 #ifndef _DIGITAL_H #define _DIGITAL_H #include <Arduino.h> #ifdef __cplusplus extern "C" { #endif #include "mrubyc.h" typedef struct GPIO_HANDLE { uint8_t pin_num; } GPIO_HANDLE; void mrbc_init_class_digital(void); #define GPIO_IN 0x01 #define GPIO_OUT 0x02 #define GPIO_ANALOG 0x04 #define GPIO_HIGH_Z 0x08 #define GPIO_PULL_UP 0x10 #define GPIO_PULL_DOWN 0x20 #define GPIO_OPEN_DRAIN 0x40 #ifdef __cplusplus } #endif #endif digital.cは、newでpinModeを設定できるようにして、以下のようにした。 #include "digital.h" static void c_gpio_new(mrb_vm *vm, mrb_value *v, int argc) { v[0] = mrbc_instance_new(vm, v[0].
Read more...

Arduinoとmruby/cでESP32を使う方法

rubyからマイコンを使いたいと昔から思っていたが、これまでなかなか手が出なかった。 mrubyというものがあるのは、以前から知っていたが、PCでコンパイルして中間コードを作って、それをマイコン上のVirtual Machineで実行するという、面倒な手順が必要である。 また、mruby/cというさらにコンパクトな実装も出て来たが、これも同様である。 pythonからマイコンを使うのは、micropythonを使えば簡単にできるが、rubyにはこれに対応するものがなかなか出て来なかった。 mruby/cを利用したpicorubyは、micropythonとほぼ同じ感覚で使えるものであり、今後の発展に期待したいが、binaryはraspberry pi pico用しか公開されておらず、EPS32用のものもあるが、自分でコンパイルしなければならない。 mruby-esp32というものもあり、flashにrbファイルまたはmrbファイルを書き込むと、それを実行してくれるという、micropythonを意識して作られたもののようである。 私がマイコンを使う場合には、c言語かArduino(C++)でプログラムを書いて、PCでコンパイルして、それをマイコンに書き込んでいる。 考えてみると、rubyでプログラムを書いて、PCでmrubyを使ってコンパイルして、それをマイコンに書き込んで実行できるのなら、mrubyもそれほど使い勝手は悪く無い気がしてきた。 micropythonのようにコンパイラをマイコンに載せるのは、メモリやflashを余分に必要とするので、無駄なようにも思える。 問題は、使いたいマイコン用のVirtual Machineがなかなか無いことである。 先に触れたmruby-esp32や、ESP32用のライブラリは、その例だろう。 RP2040, PIC32, STM32などで開発が進んでいるようだが、 様々なマイコン用のVirtual Machineを、それぞれ用意するのは手間である。 いろいろと検索していて見付けたのが、mruby/cとArduinoを組み合わせる方法である。 Arduinoは、様々なマイコン用のパッケージが用意されており、ほとんど同じ書き方で異なるマイコンを使うことが出来るようになっている。 そのArduino用の関数をrubyから使えるようにすれば、様々なマイコンをrubyから使えるようになるという考えである。 るびまの記事や esp32用のmrubyc-esp32-arduinoや いくつかのボードで動作するmrubyc_arduinoが それらの例であろう。 この内、最近も更新されている最後のものを使ってみることにした。 まずはESP8266で試してみたが、うまく動かなかった。 メモリも少ないし、なかなか厳しいのだろう。 次に、動くと期待できるESP32で試してみた。 Arduinoには、設定で以下のURLを加えて、ボードマネージャーからesp32をインストールした。 https://dl.espressif.com/dl/package_esp32_index.json そして、以下のコマンドでダウンロードしたファイルを、スケッチ-ライブラリをインクルード-.ZIP形式のライブラリをインストールで、組み込む。 wget https://github.com/aikawaYO/mrubyc_arduino/archive/refs/heads/main.zip スケッチ例-mrubycのところにblink_and_helloというのがあるので、これを動かそうとしたが、そのままではエラーが出てしまった。 digital.cなどの中で使っているArduino用の関数が参照できていなかったので、mrubyc.hにArduino.hをincludeするようにしたら、これはうまく動くようになった。 動作確認されているボードでは、なんで同じエラーが起きないのか不思議だ。 blink_and_helloでは、rubyから使うGPIO用の関数を、inoの中で定義しているので、マイコンの別の機能を使おうと思ったら、inoをいじらないといけない。 GPIO用の関数はdigital.cの中で定義されているようだったので、それを使おうとしたら、それなりに修正が必要だった。 シリアルにエラーメッセージが出るので、それを参考にバグ取りをした。 まず、GPIOクラスが定義されていないと言われたので、digital.cとdigital.h中のmrbc_init_class_digitalの引数をvoidにして、それをino中で実行した。 次に、GPIOのクラス定数が定義されていないので、先の関数の最後に以下を加えた。 mrbc_set_class_const(gpio, mrbc_str_to_symid("IN"), &mrbc_integer_value(GPIO_IN)); mrbc_set_class_const(gpio, mrbc_str_to_symid("OUT"), &mrbc_integer_value(GPIO_OUT)); mrbc_set_class_const(gpio, mrbc_str_to_symid("PULL_UP"), &mrbc_integer_value(GPIO_PULL_UP)); mrbc_set_class_const(gpio, mrbc_str_to_symid("PULL_DOWN"),&mrbc_integer_value(GPIO_PULL_DOWN)); 但し、その前に次のように定数を定義しておく必要がある。 #define GPIO_IN 0x01 #define GPIO_OUT 0x02 #define GPIO_PULL_UP 0x10 #define GPIO_PULL_DOWN 0x20 最後に、digital.hが組込まれていないようだったので、mrubyc.hの中でそれを組み込むようにした。 これらの変更をしたら、以下のようなrubyスクリプトでLEDのon/offができるようになった。
Read more...

STM8のマイコンボード

もっとも安価なマイコンボードは何かと考えると、いろいろな候補が考えられるが、最も有力な候補がSTM8S103F3P6ボードであろう。 書込機が必要だし、他のマイコンボードで代替可能なので、これまで敬遠していたが、Arduinoでの使い方を確かめてみた。 STM社のマイコンボードとしては、USBを扱いたくてblue pillを使ったことがあるが、その時は他の人が作ったプログラムを書き込んで使うに滞っていた。

今回試すボードは、HW-177という刻印があるものである。 Arduinoで使うには、環境設定のところにあるURLに

https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json

を加える。 ボードマネージャーからstm8などを検索すると、Sduinoが出て来るので、それをインストールする。 最新versionは2019年に出た0.5.0のようだ。 ツールのボードからSTM8S BoardsのSTM8S103F3 Breakout Boardを選択する。 しかし、そのままではコンパイル時にエラーが出た。 ボードマネージャーからArduino megaAVR Boardsもインストールしたら、コンパイルができるようになった。

書き込みをするためには、いくつかの前準備が必要となる。 USBの権限の問題をクリアするために、まずは/etc/udev/rules.d/99-stlink.rulesというファイルを作る。

# ST-Link/V2
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="0666"
# ST-Link/V2-1
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="0666"
# ST-Link/V3
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", MODE="0666"

そして、この設定を有効にするために、以下のコマンドを実行する。

sudo udevadm control --reload-rules
sudo udevadm trigger

新しいデバイスを使うときには、フラッシュの保護が有効になっていて書き込みができないので、stm8flashのインストールされたフォルダの~/.arduino15/packages/sduino/tools/STM8Tools/2019.02.05/linuxに行って、以下のコマンドでそれを解除する。

./stm8flash -cstlinkv2 -pstm8s103?3 -u

ボードによっては書込端子のGNDが繋っていないものもあるようだが、今回は大丈夫なようだった。 これで準備が完了である。 Arduinoで、書込装置を選択する。 今回はST-Link/V2を用いたが、それとマイコンボードを四本の線で接続する。 そして書き込みボタンを押せば、無事に書き込みが出来て、Lチカが無事に動くことが確認できた。

USBは電源供給のみで書込機が必要だし、ArduinoではC言語しか使えないなど、欠点も多いが、安くしたくて単純な用途には使える気がする。 今後の選択肢の一つとして、使って行こうと思う。

Read more...

micro ATXからmini PCへ

メインPCを久々に更新することにした。 調べてみると、前回更新したのが2020年の5月だったので、実に6年ぶりということになる。 これまでに使ってきたメインのPCは、筐体はmicro ATXで統一しており、OSはメインのHDDまたはSSDに入れて、dataの入ったHDDを載せかえると、dataの移行の必要が無く、楽にPCの更新ができた。

昨年度、測定用にmini PCを買って使ってみたら、それなりに使い易かったし、性能もあまり問題が無いようだったので、今回はメインPCもmini PCにしてみた。 これまでの様に複数のstorageを載せられないので、homeのみ別のパーティションにして、dataはrsyncを使って移行した。 移行したい設定などのファイルもrsyncで移した。

OSはDebian13だが、sleepのときにhung upする可能性があったので、/etc/systemd/sleep.confでは以下のように指定した。

[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no

light-lockerはあまり好きではないので、xscreensaverも入れておいた。 サウンドも認識していないようだったので、pavucontrolを入れて再起動したら、認識したようだ。 スピーカーが無いので、音はならないけど。

少し使った感じでは、うまく動いているようだけど、細々とした違いが出て来るかも知れない。 少しずつ環境を整えていこうと思う。 Linuxの場合、PCの速度による動作の違いは感じ難いけど、動作がきびきびしているように感じる。 さすがに6年の差は大きいのかな。

Read more...

githubのアカウントを作ってみた

様々なプログラムが掲載されている場所として,githubの存在は以前から知っていたが,これまで詳しいことは知らなかった. Linuxを構成するコードを複数の人で開発するために作られたのがgithubのようだ. 普段からLinuxは使っているが,その事実は知らなかった.

githubのアカウントの作り方を調べたら,なんだかいろいろと面倒な作業が必要のようで,これまで敬遠していた. 知り合いに聞いたところ,googleアカウントでログインすると,そういった面倒なことは無いと言われた. その方法で試してみたら,ほとんど苦労することなく,githubを使うことが出来た.

githubの使い方を検索した時に,なんでこの事が見つからなかったのかと思ったら,これが可能になったのは,半年前のことのようだ. そのため,まだ情報が広がっておらず,昔の情報の方が検索にかかるのだろう.

これで,様々なプログラムをgithub上で開発することが出来るようになった. しかし私は,プログラムの開発はローカルな環境でやるのが好きで,通常は短いプログラムしか作らないので,公開の場所としては,blogなどで十分な気がする. 今後,どの程度使うかは不明だが,気が向いたら使ってみよう.

Read more...