やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

CalcでHelloWorldコードを生成する

 プルダウンメニューから選択した言語のコードを表示する。

成果物

0 1 2

手順

  1. 文書を作成する
  2. 使ってみる

1. 文書を作成する

文書

項目
ファイル名 hello_world_code_maker.ods
シート名 maker, codes

セル範囲名

名前 参照範囲または数式
Languages OFFSET($codes.$B$2,0,0,COUNTA($codes.$B:$codes.$B))
Codes OFFSET($codes.$C$2,0,0,COUNTA($codes.$C:$codes.$C))
  • OFFSET(参照; 行数; 列数; 縦; 横)
  • COUNTA(値1; 値2; … 値30)

makerシート

セル 入力規則
B2 セルの範囲Languages
B3 =INDEX(Codes,MATCH($B$2,Languages,0),0)
  • INDEX(範囲, 行, 列)
  • MATCH(検索基準, 検査範囲, タイプ)

 この関数を使う所が難しい。戻り値や型がわからないから関数の仕様を把握することすら困難。全関数を把握した上で、やりたいことをやるのに、どの関数を、どう組み合わせるべきか考えねばならない。

codesシート

Group,Language,Code
Programming,C,"#include <stdio.h>

main( )
{
  printf(""hello, world\n"");
}"
Programming,C++,"#include <iostream>

using namespace std;

int main(){
  cout << ""Hello world."" << endl;
  return 0;
}"
Programming,Rust,"fn main() {
    // 世界よ、こんにちは
    Println!(""Hello, world!"");
}"
Programming,C#,"using System;

public class Hello{
  public static void Main(){
    Console.WriteLine(""hello world!"");
  }
}"
Programming,Java,"class HelloWorld {
 public static void main(String[] args) {
 System.out.println(""Hello, world."");
 }
}"
Script,Python,"print(""Hello world!"")"
Script,Ruby,"print ""Hello World"""
,Go,"package main

import ""fmt""

func main() {
  fmt.Printf(""Hello world\n"")
}"
DomainSpecific,Bash,echo ‘Hello World’
DomainSpecific,SQL,"create table T(id int primary key);
insert into T values(0),(1),(2);
select * from T where id=0;"
Markup,HTML,"<!doctype html>
<html>
<head>
  <meta charset=""utf-8"">
  <title></title>
  <link rel=""stylesheet"" href=""css/main.css"">
  <script src=""js/main.js""></script>
</head>
<body>
</body>
</html>"
Markup,Markdown,# Hello world
  1. 上記テキストをコピーする
  2. セルA1にフォーカスする
  3. Ctrl+Vキーを押下してペーストする
  4. 区切りのオプションコンマにチェックを入れる
  5. OKボタンをクリックする

2. 使ってみる

  1. makerシートのセルB2のプルダウンメニューから任意の言語を選ぶ
  2. セルB3にコードが表示される

0 1 2

問題

  • プルダウンメニューだけ操作できるようにしたいができない
    • シート保護するとプルダウンメニューまで操作できなくなる
  • プルダウンメニューを変更したとき、コード内容をクリップボードにコピーしたいができない
    • 入力規則のイベントはキャッチできないと思われる
      • 他に方法はあるのか不明
    • クリップボードにコピーできるか不明
      • マクロならできるのか不明
      • イベントキャッチしてマクロと連動させる方法はあるのか不明

所感

 UIをもっといい感じにしたい。調べるとフォームコントロールXFormsなどというキーワードを見つけた。イジって解析するしかないか……。

対象環境

$ uname -a
Linux raspberrypi 5.4.51-v7l+ #1333 SMP Mon Aug 10 16:51:40 BST 2020 armv7l GNU/Linux