technicalsuwako.moe/gemini/blog.atom

383 行
44 KiB
XML
Raw Blame 履歴

このファイルには曖昧(ambiguous)なUnicode文字が含まれています

このファイルには、他の文字と見間違える可能性があるUnicode文字が含まれています。 それが意図的なものと考えられる場合は、この警告を無視して構いません。 それらの文字を表示するにはエスケープボタンを使用します。

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>gemini://technicalsuwako.moe</id>
<title>テクニカル諏訪子</title>
<updated>2023-05-18T00:00:00Z</updated>
<author><name>テクニカル諏訪子</name></author>
<link href="gemini://technicalsuwako.moe" rel="alternate"></link>
<generator uri="https://github.com/piranha/gostatic">gostatic</generator>
<entry>
<id>blog/c-lib-in-zig-use.gmi</id>
<author><name></name></author>
<title type="html">【プログラミング】Zig言語でC向けのライブラリーを使用する方法</title>
<published>2023-05-18T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="ゲーム開発"></category>
<category term="Zig"></category>
<category term="C言語"></category>
<category term="SDL"></category>
<link href="gemini://technicalsuwako.moe/blog/c-lib-in-zig-use.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;ゲーム開発といえば、C++とか、Unityとか、Unrealとか等が思い出しますね。&lt;br /&gt;
でも、Zigという新しい言語を使った方が良いと思います。&lt;br /&gt;
しかし、新しい言語なら、必要なライブラリー(SDL、VulkanかOpenGL等)はまだ存在しませんね。&lt;br /&gt;
心配なく、Zig言語の大メリットは、C言語及びC++のライブラリーをそのまま使える事です!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://repology.org/project/zig/versions&#34;&gt;まずはZigコンパイラーをインストールして下さい。&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;mkdir zigdev &lt;span style=&#34;color:#666&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#a2f&#34;&gt;cd&lt;/span&gt; zigdev
nvim main.zig
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;下記のソースコードを使っております。&lt;br /&gt;
まずは確認して、何が起こる事を考えて下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@import&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;std&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cImport&lt;/span&gt;({&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cInclude&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;SDL2/SDL.h&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;});&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;pub&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;fn&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;main()&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;(c.SDL_Init(c.SDL_INIT_VIDEO)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_Log(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;開始失敗: %s&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_GetError());&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;error&lt;/span&gt;.SDLInitializationFailed;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// defer = 終了する時、実行すると意味だ。
&lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;defer&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_Quit();&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;var&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;window&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_CreateWindow(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;hellow&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_WINDOWPOS_CENTERED,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_WINDOWPOS_CENTERED,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;640&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;400&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_WINDOW_OPENGL)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;orelse&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_Log(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;ウィンドウ創作失敗: %s&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_GetError());&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;error&lt;/span&gt;.SDLInitializationFailed;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;};&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;defer&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_DestroyWindow(window);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;var&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;renderer&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_CreateRenderer(window,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_RENDERER_PRESENTVSYNC)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;orelse&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_Log(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;レンダー創作失敗: %s&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_GetError());&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;error&lt;/span&gt;.SDLInitializationFailed;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;};&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;defer&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_DestroyRenderer(renderer);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;mainloop&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;while&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;(&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;true&lt;/span&gt;)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;var&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;sdl_event&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_Event&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;undefined&lt;/span&gt;;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;while&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;(c.SDL_PollEvent(&lt;span style=&#34;color:#666&#34;&gt;&amp;amp;&lt;/span&gt;sdl_event)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;switch&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;(sdl_event.&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;type&lt;/span&gt;)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_QUIT&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;break&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;mainloop,&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;else&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{},&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;_&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_SetRenderDrawColor(renderer,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;_&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_RenderClear(renderer);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;var&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;rect&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_Rect{&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;.x&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;.y&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;.w&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;60&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;.h&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;60&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;};&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;a&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0.001&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@intToFloat&lt;/span&gt;(&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;f32&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_GetTicks());&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;t&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std.math.pi&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;3.0&lt;/span&gt;;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;r&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cos&lt;/span&gt;(&lt;span style=&#34;color:#666&#34;&gt;0.1&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;a);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;rect.x&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;290&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@floatToInt&lt;/span&gt;(&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;i32&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;r&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cos&lt;/span&gt;(a));&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;rect.y&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;170&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@floatToInt&lt;/span&gt;(&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;i32&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;r&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@sin&lt;/span&gt;(a));&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;_&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_SetRenderDrawColor(renderer,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;_&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_RenderFillRect(renderer,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;&amp;amp;&lt;/span&gt;rect);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;rect.x&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;290&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@floatToInt&lt;/span&gt;(&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;i32&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;r&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cos&lt;/span&gt;(a&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;t));&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;rect.y&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;170&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@floatToInt&lt;/span&gt;(&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;i32&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;r&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@sin&lt;/span&gt;(a&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;t));&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;_&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_SetRenderDrawColor(renderer,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;_&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_RenderFillRect(renderer,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;&amp;amp;&lt;/span&gt;rect);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;rect.x&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;290&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@floatToInt&lt;/span&gt;(&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;i32&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;r&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cos&lt;/span&gt;(a&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;t));&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;rect.y&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;170&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@floatToInt&lt;/span&gt;(&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;i32&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;r&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@sin&lt;/span&gt;(a&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;t));&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;_&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_SetRenderDrawColor(renderer,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0xff&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;_&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_RenderFillRect(renderer,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;&amp;amp;&lt;/span&gt;rect);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_RenderPresent(renderer);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;https://ass.technicalsuwako.moe/Screenshot_20230518_215802.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;特に下記のコードをご覧下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@import&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;std&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cImport&lt;/span&gt;({&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cInclude&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;SDL2/SDL.h&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;});&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;@importはZig言語のライブラリーのインクルードで、@cImportはC言語のライブラリーのインクルードです。&lt;br /&gt;
&lt;code lang=&#34;&#34;&gt;#DEFINE&lt;/code&gt;なら、&lt;code lang=&#34;&#34;&gt;@cDefine&lt;/code&gt;となります。&lt;br /&gt;
例えば:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cDefine&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;_GNU_SOURCE&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{})&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;@cImportの後で、「c.なになに」でC言語の関数等を使えます。&lt;br /&gt;
例えば:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;(c.SDL_Init(c.SDL_INIT_VIDEO)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_Log(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;開始失敗: %s&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_GetError());&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;error&lt;/span&gt;.SDLInitializationFailed;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;コンパイルするには:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;zig build-exe main.zig -O ReleaseSmall --name rei --library SDL2 --library SDL2main --library c -isystem &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;/usr/include&amp;#34;&lt;/span&gt; -L &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;/usr/lib&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
<entry>
<id>blog/urloli-210.gmi</id>
<author><name></name></author>
<title type="html">】URLロリ 2.1.0登場</title>
<published>2023-05-13T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="ウエブ開発"></category>
<category term=""></category>
<category term="urloli"></category>
<category term="urlロリ"></category>
<link href="gemini://technicalsuwako.moe/blog/urloli-210.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;URLロリ は2.1.0にバージョンアップしました!!&lt;/p&gt;
&lt;h2 id=&#34;url&#34;&gt;URLロリって何?&lt;/h2&gt;
&lt;p&gt;URLロリはクッソ小さいURL短縮作成ソフトだわ〜♡&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;変更&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ローカライズは関数化&lt;/li&gt;
&lt;li&gt;API機能性&lt;/li&gt;
&lt;li&gt;サーバーのソースコードを短くに&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;api&#34;&gt;APIについて&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://urlo.li/api&#34;&gt;/api&lt;/a&gt;&lt;br /&gt;
インスタンスURL及びバージョンを確認(GET)&lt;/p&gt;
&lt;h3 id=&#34;heading-1&#34;&gt;例の結果&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;{
&amp;#34;url&amp;#34;: &amp;#34;https://urlo.li&amp;#34;,
&amp;#34;version&amp;#34;: &amp;#34;2.1.0&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;https://urlo.li/api/lolify&#34;&gt;/api/lolify&lt;/a&gt;&lt;br /&gt;
URLを短縮する(既に存在する場合、短縮済みURLを表示) (POST)&lt;/p&gt;
&lt;h3 id=&#34;heading-2&#34;&gt;必須のパラメートル&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;url&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-3&#34;&gt;例の結果&lt;/h3&gt;
&lt;p&gt;既に存在する場合&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;curl -d url=gemini://technicalsuwako.moe https://urlo.li/api/lolify
{
&amp;#34;code&amp;#34;: 200,
&amp;#34;error&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;url&amp;#34;: &amp;#34;https://urlo.li/yoWJx&amp;#34;,
&amp;#34;origin&amp;#34;: &amp;#34;gemini://technicalsuwako.moe&amp;#34;,
&amp;#34;isnew&amp;#34;: false
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;新しく追加された場合&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;curl -d url=gemini://technicalsuwako.moe/about https://urlo.li/api/lolify
{
&amp;#34;code&amp;#34;: 200,
&amp;#34;error&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;url&amp;#34;: &amp;#34;https://urlo.li/fiW3B&amp;#34;,
&amp;#34;origin&amp;#34;: &amp;#34;gemini://technicalsuwako.moe/about&amp;#34;,
&amp;#34;isnew&amp;#34;: true
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;エラーの場合&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;curl -d url=technicalsuwako.moe https://urlo.li/api/lolify
{
&amp;#34;code&amp;#34;: 400,
&amp;#34;error&amp;#34;: &amp;#34;URLは「http://」又は「https://」で始めます。&amp;#34;,
&amp;#34;url&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;origin&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;isnew&amp;#34;: false
}%
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;curl -d url=gemini://technicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moe https://urlo.li/api/lolify
{
&amp;#34;code&amp;#34;: 400,
&amp;#34;error&amp;#34;: &amp;#34;URLは500文字以内です。&amp;#34;,
&amp;#34;url&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;origin&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;isnew&amp;#34;: false
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;heading-4&#34;&gt;ソースコード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli&#34;&gt;Gitler&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-5&#34;&gt;公式インスタンス&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://urlo.li/&#34;&gt;https://urlo.li/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-6&#34;&gt;ダウンロード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli/releases&#34;&gt;リリースページ&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-7&#34;&gt;会話&lt;/h2&gt;
&lt;h3 id=&#34;xmpp&#34;&gt;XMPP&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;xmpp:urloli@chat.xmpp.076.ne.jp?join&#34;&gt;xmpp:urloli@chat.xmpp.076.ne.jp?join&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;irc&#34;&gt;IRC&lt;/h3&gt;
&lt;p&gt;irc.076.ne.jp/6697&lt;br /&gt;
#urloli&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
<entry>
<id>blog/urloli-202.gmi</id>
<author><name></name></author>
<title type="html">】URLロリ 2.0.2登場</title>
<published>2023-05-12T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="ウエブ開発"></category>
<category term=""></category>
<category term="urloli"></category>
<category term="urlロリ"></category>
<link href="gemini://technicalsuwako.moe/blog/urloli-202.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;URLロリ は2.0.2にバージョンアップしました!!&lt;/p&gt;
&lt;h2 id=&#34;url&#34;&gt;URLロリって何?&lt;/h2&gt;
&lt;p&gt;URLロリはクッソ小さいURL短縮作成ソフトだわ〜♡&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;変更&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Makefileでの「make install」部分を修正&lt;/li&gt;
&lt;li&gt;manページで「オプションなし」部分を追加&lt;/li&gt;
&lt;li&gt;「短熟」→「短縮」を修正&lt;/li&gt;
&lt;li&gt;クッキーは無効にする又はクッキーが未対応のブラウザ対応の修正&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;ソースコード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli&#34;&gt;Gitler&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;公式インスタンス&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://urlo.li/&#34;&gt;https://urlo.li/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;ダウンロード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli/releases&#34;&gt;リリースページ&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;会話&lt;/h2&gt;
&lt;h3 id=&#34;xmpp&#34;&gt;XMPP&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;xmpp:urloli@chat.xmpp.076.ne.jp?join&#34;&gt;xmpp:urloli@chat.xmpp.076.ne.jp?join&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;irc&#34;&gt;IRC&lt;/h3&gt;
&lt;p&gt;irc.076.ne.jp/6697&lt;br /&gt;
#urloli&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
<entry>
<id>blog/urloli-201.gmi</id>
<author><name></name></author>
<title type="html">】URLロリ 2.0.1登場</title>
<published>2023-05-10T17:45:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="ウエブ開発"></category>
<category term=""></category>
<category term="urloli"></category>
<category term="urlロリ"></category>
<link href="gemini://technicalsuwako.moe/blog/urloli-201.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;URLロリ は2.0.1にバージョンアップしました!!&lt;/p&gt;
&lt;h2 id=&#34;url&#34;&gt;URLロリって何?&lt;/h2&gt;
&lt;p&gt;URLロリはクッソ小さいURL短縮作成ソフトだわ〜♡&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;変更&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;送信ページの無英訳を修正&lt;/li&gt;
&lt;li&gt;URLは500文字移行のエラー未表示を修正&lt;/li&gt;
&lt;li&gt;ページデータの値を改良&lt;/li&gt;
&lt;li&gt;ページでバージョンの表示を追加&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;ソースコード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli&#34;&gt;Gitler&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;公式インスタンス&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://urlo.li/&#34;&gt;https://urlo.li/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;ダウンロード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli/releases&#34;&gt;リリースページ&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;会話&lt;/h2&gt;
&lt;h3 id=&#34;xmpp&#34;&gt;XMPP&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;xmpp:urloli@chat.xmpp.076.ne.jp?join&#34;&gt;xmpp:urloli@chat.xmpp.076.ne.jp?join&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;irc&#34;&gt;IRC&lt;/h3&gt;
&lt;p&gt;irc.076.ne.jp/6697&lt;br /&gt;
#urloli&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
<entry>
<id>blog/urloli-200.gmi</id>
<author><name></name></author>
<title type="html">】URLロリ 2.0.0登場</title>
<published>2023-05-10T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="ウエブ開発"></category>
<category term=""></category>
<category term="urloli"></category>
<category term="urlロリ"></category>
<link href="gemini://technicalsuwako.moe/blog/urloli-200.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;URLロリ は2.0.0にバージョンアップしました!!&lt;/p&gt;
&lt;h2 id=&#34;url&#34;&gt;URLロリって何?&lt;/h2&gt;
&lt;p&gt;URLロリはクッソ小さいURL短縮作成ソフトだわ〜♡&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;変更&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Makefile化&lt;/li&gt;
&lt;li&gt;ソースコードは複数ファイルに分ける&lt;/li&gt;
&lt;li&gt;コマンドラインからURL短熟&lt;/li&gt;
&lt;li&gt;バージョンの表示&lt;/li&gt;
&lt;li&gt;ヘルプの表示&lt;/li&gt;
&lt;li&gt;manページ&lt;/li&gt;
&lt;li&gt;ポート番号はご自由に決める様にした(デフォルトは9910)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;ソースコード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli&#34;&gt;Gitler&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;公式インスタンス&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://urlo.li/&#34;&gt;https://urlo.li/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;ダウンロード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli/releases&#34;&gt;リリースページ&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;会話&lt;/h2&gt;
&lt;h3 id=&#34;xmpp&#34;&gt;XMPP&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;xmpp:urloli@chat.xmpp.076.ne.jp?join&#34;&gt;xmpp:urloli@chat.xmpp.076.ne.jp?join&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;irc&#34;&gt;IRC&lt;/h3&gt;
&lt;p&gt;irc.076.ne.jp/6697&lt;br /&gt;
#urloli&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
</feed>