2020年7月17日金曜日

Bloggerでプログラムコードを見やすく載せるメモ

どうもcaketetuです。
私はブログにプログラムコードを載せる時、短いコードは直接記載、長いコードは
google driveからリンクを貼って表示していました。しかし見栄えが悲惨な状況
だったので、今回はちょっとだけ見やすくしてみようと思います。

私は組み込み系はそこそこですが、WEB系はイマイチのため本記事は
以下のような人たち向けになるかと思います。
  • ちょっと見栄えを良くできればいい人
  • HTMLやCSSはあんまりいじりたくない人
  • 外部のサーバやソフトを使いたくない人




1、短いコードを記事に埋め込むとき

code-prettifyを使用します。少しHTMLをいじることになりますが、
比較的簡単にコードを色分けして表示することができます。

  1. #include <Wire.h>
  2. #include <PCA9685.h> //PCA9685用ヘッダーファイル(秋月電子通商作成)
  3.  
  4. PCA9685 pwm = PCA9685(0x40); //PCA9685のアドレス指定(アドレスジャンパ未接続時)
  5.  
  6. #define SERVOMIN 700 //最小パルス幅 (標準的なサーボパルスに設定)
  7. #define SERVOMAX 2300 //最大パルス幅 (標準的なサーボパルスに設定)
  8. int LED = 13;
  9.  
  10. void setup() {
  11. pwm.begin(); //初期設定 (アドレス0x40用)
  12. pwm.setPWMFreq(240); //PWM周期を60Hzに設定 (アドレス0x40用)
  13.  
  14. Serial.begin(115200);
  15. pinMode(LED, OUTPUT);
  16. Serial.println("Start reading.");
  17. }
  18.  
  19. int n=0;
  20. char buff[255];
  21. //手首R 肘 肩 
  22. int angle[16] = {120,150,170,90,120,130,70,92,108,110,50,60,90,10,30,60};
  23. int counter = 0;
  24.  
  25. void loop() {
  26. //サンプルソース 16chすべてのチャンネルより0度~180度の移動を繰り返します。
  27. if(Serial.available()){
  28. delay(10);
  29. digitalWrite(LED, HIGH);
  30. while(Serial.available()){
  31. buff[counter] = Serial.read();
  32. counter++;
  33. }
  34. Serial.println(buff);
  35. Serial.println(counter,DEC);
  36. if(buff[0] == 'S' && counter == 17){
  37. for(int i=0; i<16; i++) angle[i] = buff[i+1]*2;
  38. }
  39. }else{
  40. digitalWrite(LED, LOW);
  41. counter=0;
  42. }
  43. for(int i=0; i<16; i++) servo_write(i, angle[i]);
  44. }
  45. void servo_write(int ch, int ang){ //動かすサーボチャンネルと角度を指定
  46. ang = map(ang, 0, 180, SERVOMIN, SERVOMAX); //角度(0~180)をPWMのパルス幅(150~600)に変換
  47. pwm.setPWM(ch, 0, ang);
  48. }
bloggerでの導入方法はデザイン画面を開きテーマ→HTMLの編集を選びます。
ここでブログのHTMLソースを編集できます。<head>直下に
以下コードを追加します。
  1. <script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=desert' type='text/javascript'/>

これだけでも動作しますが、スタイルをいじってもうちょっと見やすくしてみます。
テーマデザイナー→上級者向け―→CSSを編集
ここに以下コードを追加します。

  1. .prettyprint ol.linenums > li {
  2. list-style-type: decimal; /*行数を1づつ表示*/
  3. }
  4.  
  5. pre.prettyprint {
  6. margin: 5x;
  7. margin-bottom:4rem;
  8. padding: 10px;
  9. padding-left:20px; /*行番号が隠れないように追記*/
  10. /*max-height: 300px;*/ /*縦サイズは記事毎に設定するため削除*/
  11. overflow: auto; /*横スクロールバー*/
  12. /*background-color: #f8f8f8;*/ /*背景を変えたいとき*/
  13. border-radius:4px; /*かどをまるく*/
  14. }

記事に載せる時は編集画面の一番左の鉛筆マークからHTMLビューを選択します。
コードを乗っけたいところに以下のように追記します。
  1. <pre class="prettyprint lang-言語 linenums">
  2. 載せたいコード
  3. </pre>
"言語"は以下参照
"bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html", "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh", "xhtml", "xml", "xsl".

このとき、不等号や&があると、ソースコードと認識しうまくいかないため
これらを文字列として認識させる必要があります。こちらのサイトを使って
変換すればうまくいくと思います。

あとはHTMLビューと作成ビューを切り替えながら編集していくと比較的
簡単にできると思います。HTMLビューで編集するのは慣れていないと大変なので
私は作成ビューで一通り編集した後HTMLビューでソースコードを追加することに
しています。

見た目はこの記事のようになります。このスタイルはdesertテーマに少し手を
加える形で簡単に作っています。もう少しこだわりたい人はHTMLソースからテーマを
変えたり、CSSをいじるとブログにあったデザインになると思います。





2、長いコードをファイルごと載せる時

 googleドライブに共有可能なフォルダを作りその中にコードを入れ
 googleドキュメントで編集します。

 googleドキュメントのアドオン→アドオンを取得からcode blockを導入します。



あとは言語、テーマを選びコードをすべて選択してformatするだけです。
私はxcodeがいいんじゃないかな~と思います。





編集が終わったら右上の共有からリンクを取得します。これをブログに
貼り付けます。
これで長いコードもブログを圧迫することなくきれいに見せることができます。





ちょっとひと手間ですが、劇的に見やすくすることができたと思います。私は
作ること中心で記事の体裁にはあんまり時間をかけたくないのでこれぐらいが
ちょうどいいですね。

参考にさせて頂いたサイト


0 件のコメント:

コメントを投稿